lobsters-api: init

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-09-22 05:33:18 +05:30
parent 7bb1fd6947
commit 7489100c26
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
13 changed files with 183 additions and 0 deletions

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="dev.msfjarvis.lobsters.api">
</manifest>

View file

@ -0,0 +1,14 @@
package dev.msfjarvis.lobsters.api
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
object ApiClient {
inline fun <reified T> getClient(baseUrl: String): T {
return Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(MoshiConverterFactory.create())
.build()
.create(T::class.java)
}
}

View file

@ -0,0 +1,10 @@
package dev.msfjarvis.lobsters.api
import dev.msfjarvis.lobsters.api.model.LobstersPost
import retrofit2.Call
import retrofit2.http.GET
interface LobstersApi {
@GET("hottest.json")
fun getHottestPosts(): Call<List<LobstersPost>>
}

View file

@ -0,0 +1,12 @@
package dev.msfjarvis.lobsters.api.model
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
class KeybaseSignature(
@Json(name = "kb_username")
val kbUsername: String,
@Json(name = "sig_hash")
val sigHash: String
)

View file

@ -0,0 +1,26 @@
package dev.msfjarvis.lobsters.api.model
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
class LobstersPost(
@Json(name = "short_id")
val shortId: String,
@Json(name = "short_id_url")
val shortIdUrl: String,
@Json(name = "created_at")
val createdAt: String,
val title: String,
val url: String,
val score: Long,
val flags: Long,
@Json(name = "comment_count")
val commentCount: Long,
val description: String,
@Json(name = "comments_url")
val commentsUrl: String,
@Json(name = "submitter_user")
val submitterUser: Submitter,
val tags: List<String>
)

View file

@ -0,0 +1,27 @@
package dev.msfjarvis.lobsters.api.model
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
class Submitter(
val username: String,
@Json(name = "created_at")
val createdAt: String,
@Json(name = "is_admin")
val isAdmin: Boolean,
val about: String,
@Json(name = "is_moderator")
val isModerator: Boolean,
val karma: Long,
@Json(name = "avatar_url")
val avatarUrl: String,
@Json(name = "invited_by_user")
val invitedByUser: String,
@Json(name = "github_username")
val githubUsername: String?,
@Json(name = "twitter_username")
val twitterUsername: String?,
@Json(name = "keybase_signatures")
val keybaseSignatures: List<KeybaseSignature>?
)