all: refactor model classes and serialization

- Move model classes to a standalone `model` Gradle module
- Migrate from Moshi to kotlinx.serialization for multiplatform support
This commit is contained in:
Harsh Shandilya 2021-09-30 12:57:23 +05:30
parent 76c46b4229
commit 096d2882e2
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
24 changed files with 155 additions and 137 deletions

View file

@ -0,0 +1,20 @@
package dev.msfjarvis.claw.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class Comment(
@SerialName("short_id") val shortId: String,
@SerialName("short_id_url") val shortIdUrl: String,
@SerialName("created_at") val createdAt: String,
@SerialName("updated_at") val updatedAt: String,
@SerialName("is_deleted") val isDeleted: Boolean,
@SerialName("is_moderated") val isModerated: Boolean,
val score: Long,
val flags: Long,
val comment: String,
val url: String,
@SerialName("indent_level") val indentLevel: Long,
@SerialName("commenting_user") val user: User,
)

View file

@ -0,0 +1,10 @@
package dev.msfjarvis.claw.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class KeybaseSignature(
@SerialName("kb_username") val kbUsername: String,
@SerialName("sig_hash") val sigHash: String,
)

View file

@ -0,0 +1,20 @@
package dev.msfjarvis.claw.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class LobstersPost(
@SerialName("short_id") val shortId: String,
@SerialName("short_id_url") val shortIdUrl: String,
@SerialName("created_at") val createdAt: String,
val title: String,
val url: String,
val score: Long,
val flags: Long,
@SerialName("comment_count") val commentCount: Long,
val description: String,
@SerialName("comments_url") val commentsUrl: String,
@SerialName("submitter_user") val submitter: User,
val tags: List<String>,
)

View file

@ -0,0 +1,21 @@
package dev.msfjarvis.claw.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class LobstersPostDetails(
@SerialName("short_id") val shortId: String,
@SerialName("short_id_url") val shortIdUrl: String,
@SerialName("created_at") val createdAt: String,
val title: String,
val url: String,
val score: Long,
val flags: Long,
@SerialName("comment_count") val commentCount: Long,
val description: String,
@SerialName("comments_url") val commentsUrl: String,
@SerialName("submitter_user") val submitter: User,
val tags: List<String>,
val comments: List<Comment>,
)

View file

@ -0,0 +1,19 @@
package dev.msfjarvis.claw.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
class User(
val username: String,
@SerialName("created_at") val createdAt: String,
@SerialName("is_admin") val isAdmin: Boolean,
val about: String,
@SerialName("is_moderator") val isModerator: Boolean,
val karma: Long = 0,
@SerialName("avatar_url") val avatarUrl: String,
@SerialName("invited_by_user") val invitedByUser: String,
@SerialName("github_username") val githubUsername: String? = null,
@SerialName("twitter_username") val twitterUsername: String? = null,
@SerialName("keybase_signatures") val keybaseSignatures: List<KeybaseSignature> = emptyList(),
)