From d659d04bd44d45c5aba69ac3bb5cd897b83ae189 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 5 May 2022 11:10:47 +0530 Subject: [PATCH] api: add support for user profiles (cherry picked from commit 78d3f4a54f4abc57ba99b06542a5eb58fd360670) --- api/src/main/kotlin/dev/msfjarvis/claw/api/LobstersApi.kt | 3 +++ api/src/test/kotlin/dev/msfjarvis/claw/api/ApiTest.kt | 6 ++++++ api/src/test/kotlin/dev/msfjarvis/claw/api/FakeApi.kt | 5 +++++ api/src/test/resources/msfjarvis.json | 1 + 4 files changed, 15 insertions(+) create mode 100644 api/src/test/resources/msfjarvis.json diff --git a/api/src/main/kotlin/dev/msfjarvis/claw/api/LobstersApi.kt b/api/src/main/kotlin/dev/msfjarvis/claw/api/LobstersApi.kt index 7dddda45..18acf188 100644 --- a/api/src/main/kotlin/dev/msfjarvis/claw/api/LobstersApi.kt +++ b/api/src/main/kotlin/dev/msfjarvis/claw/api/LobstersApi.kt @@ -2,6 +2,7 @@ package dev.msfjarvis.claw.api import dev.msfjarvis.claw.model.LobstersPost import dev.msfjarvis.claw.model.LobstersPostDetails +import dev.msfjarvis.claw.model.User import retrofit2.http.GET import retrofit2.http.Path import retrofit2.http.Query @@ -16,6 +17,8 @@ interface LobstersApi { @GET("s/{postId}.json") suspend fun getPostDetails(@Path("postId") postId: String): LobstersPostDetails + @GET("u/{username}.json") suspend fun getUser(@Path("username") username: String): User + companion object { const val BASE_URL = "https://lobste.rs" } diff --git a/api/src/test/kotlin/dev/msfjarvis/claw/api/ApiTest.kt b/api/src/test/kotlin/dev/msfjarvis/claw/api/ApiTest.kt index 29d532c8..84911e56 100644 --- a/api/src/test/kotlin/dev/msfjarvis/claw/api/ApiTest.kt +++ b/api/src/test/kotlin/dev/msfjarvis/claw/api/ApiTest.kt @@ -29,4 +29,10 @@ class ApiTest { val postDetails = api.getPostDetails("d9ucpe") assertEquals(7, postDetails.comments.size) } + + @Test + fun `get user details`() = runBlocking { + val user = api.getUser("msfjarvis") + assertEquals("msfjarvis", user.username) + } } diff --git a/api/src/test/kotlin/dev/msfjarvis/claw/api/FakeApi.kt b/api/src/test/kotlin/dev/msfjarvis/claw/api/FakeApi.kt index 29e50900..3510998e 100644 --- a/api/src/test/kotlin/dev/msfjarvis/claw/api/FakeApi.kt +++ b/api/src/test/kotlin/dev/msfjarvis/claw/api/FakeApi.kt @@ -12,6 +12,7 @@ class FakeApi(private val delegate: BehaviorDelegate) : LobstersApi private val hottest: List = json.decodeFromString(getJson("hottest.json")) private val postDetails: LobstersPostDetails = json.decodeFromString(getJson("post_details_d9ucpe.json")) + private val user: User = json.decodeFromString(getJson("msfjarvis.json")) override suspend fun getHottestPosts(page: Int): List { return delegate.returningResponse(hottest).getHottestPosts(page) @@ -24,4 +25,8 @@ class FakeApi(private val delegate: BehaviorDelegate) : LobstersApi override suspend fun getPostDetails(postId: String): LobstersPostDetails { return delegate.returningResponse(postDetails).getPostDetails(postId) } + + override suspend fun getUser(username: String): User { + return delegate.returningResponse(user).getUser(username) + } } diff --git a/api/src/test/resources/msfjarvis.json b/api/src/test/resources/msfjarvis.json new file mode 100644 index 00000000..c60ffb3d --- /dev/null +++ b/api/src/test/resources/msfjarvis.json @@ -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"} \ No newline at end of file