mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 01:47:03 +05:30
api: add support for user profiles
(cherry picked from commit 78d3f4a54f4abc57ba99b06542a5eb58fd360670)
This commit is contained in:
parent
5b6e3dc3b9
commit
d659d04bd4
4 changed files with 15 additions and 0 deletions
|
@ -2,6 +2,7 @@ package dev.msfjarvis.claw.api
|
||||||
|
|
||||||
import dev.msfjarvis.claw.model.LobstersPost
|
import dev.msfjarvis.claw.model.LobstersPost
|
||||||
import dev.msfjarvis.claw.model.LobstersPostDetails
|
import dev.msfjarvis.claw.model.LobstersPostDetails
|
||||||
|
import dev.msfjarvis.claw.model.User
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
import retrofit2.http.Path
|
import retrofit2.http.Path
|
||||||
import retrofit2.http.Query
|
import retrofit2.http.Query
|
||||||
|
@ -16,6 +17,8 @@ interface LobstersApi {
|
||||||
@GET("s/{postId}.json")
|
@GET("s/{postId}.json")
|
||||||
suspend fun getPostDetails(@Path("postId") postId: String): LobstersPostDetails
|
suspend fun getPostDetails(@Path("postId") postId: String): LobstersPostDetails
|
||||||
|
|
||||||
|
@GET("u/{username}.json") suspend fun getUser(@Path("username") username: String): User
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val BASE_URL = "https://lobste.rs"
|
const val BASE_URL = "https://lobste.rs"
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,4 +29,10 @@ class ApiTest {
|
||||||
val postDetails = api.getPostDetails("d9ucpe")
|
val postDetails = api.getPostDetails("d9ucpe")
|
||||||
assertEquals(7, postDetails.comments.size)
|
assertEquals(7, postDetails.comments.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `get user details`() = runBlocking {
|
||||||
|
val user = api.getUser("msfjarvis")
|
||||||
|
assertEquals("msfjarvis", user.username)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ class FakeApi(private val delegate: BehaviorDelegate<LobstersApi>) : LobstersApi
|
||||||
private val hottest: List<LobstersPost> = json.decodeFromString(getJson("hottest.json"))
|
private val hottest: List<LobstersPost> = json.decodeFromString(getJson("hottest.json"))
|
||||||
private val postDetails: LobstersPostDetails =
|
private val postDetails: LobstersPostDetails =
|
||||||
json.decodeFromString(getJson("post_details_d9ucpe.json"))
|
json.decodeFromString(getJson("post_details_d9ucpe.json"))
|
||||||
|
private val user: User = json.decodeFromString(getJson("msfjarvis.json"))
|
||||||
|
|
||||||
override suspend fun getHottestPosts(page: Int): List<LobstersPost> {
|
override suspend fun getHottestPosts(page: Int): List<LobstersPost> {
|
||||||
return delegate.returningResponse(hottest).getHottestPosts(page)
|
return delegate.returningResponse(hottest).getHottestPosts(page)
|
||||||
|
@ -24,4 +25,8 @@ class FakeApi(private val delegate: BehaviorDelegate<LobstersApi>) : LobstersApi
|
||||||
override suspend fun getPostDetails(postId: String): LobstersPostDetails {
|
override suspend fun getPostDetails(postId: String): LobstersPostDetails {
|
||||||
return delegate.returningResponse(postDetails).getPostDetails(postId)
|
return delegate.returningResponse(postDetails).getPostDetails(postId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun getUser(username: String): User {
|
||||||
|
return delegate.returningResponse(user).getUser(username)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
1
api/src/test/resources/msfjarvis.json
Normal file
1
api/src/test/resources/msfjarvis.json
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"username":"msfjarvis","created_at":"2020-04-24T11:41:56.000-05:00","is_admin":false,"about":"Android and Kotlin developer\r\n","is_moderator":false,"karma":574,"avatar_url":"/avatars/msfjarvis-100.png","invited_by_user":"Amolith","github_username":"msfjarvis","twitter_username":"msfjarvis"}
|
Loading…
Add table
Add a link
Reference in a new issue