Skip to content

Commit d9b16e2

Browse files
signin logic done
Signed-off-by: Arnav Gupta <[email protected]>
1 parent 5b6a642 commit d9b16e2

File tree

5 files changed

+43
-9
lines changed

5 files changed

+43
-9
lines changed

api/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dependencies {
1313
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
1414
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2"
1515
api "com.squareup.retrofit2:retrofit:$retrofit_version"
16+
implementation("com.squareup.okhttp3:okhttp:4.9.0")
1617
implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version"
1718
implementation "com.squareup.moshi:moshi:$moshi_version"
1819
kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version"
Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,43 @@
11
package io.realworld.api
22

33
import io.realworld.api.services.ConduitAPI
4+
import io.realworld.api.services.ConduitAuthAPI
5+
import okhttp3.Interceptor
6+
import okhttp3.OkHttpClient
47
import retrofit2.Retrofit
58
import retrofit2.converter.moshi.MoshiConverterFactory
9+
import java.util.concurrent.TimeUnit
610

7-
class ConduitClient {
11+
object ConduitClient {
812

9-
val retrofit = Retrofit.Builder()
13+
var authToken: String? = null
14+
15+
private val authInterceptor = Interceptor { chain ->
16+
var req = chain.request()
17+
authToken?.let {
18+
req = req.newBuilder()
19+
.header("Authorization", "Token $it")
20+
.build()
21+
}
22+
chain.proceed(req)
23+
}
24+
25+
val okHttpBuilder = OkHttpClient.Builder()
26+
.readTimeout(5, TimeUnit.SECONDS)
27+
.connectTimeout(2, TimeUnit.SECONDS)
28+
29+
val retrofitBuilder = Retrofit.Builder()
1030
.baseUrl("https://conduit.productionready.io/api/")
1131
.addConverterFactory(MoshiConverterFactory.create())
32+
33+
val publicApi = retrofitBuilder
34+
.client(okHttpBuilder.build())
1235
.build()
36+
.create(ConduitAPI::class.java)
1337

14-
val api = retrofit.create(ConduitAPI::class.java)
38+
val authApi = retrofitBuilder
39+
.client(okHttpBuilder.build())
40+
.build()
41+
.create(ConduitAuthAPI::class.java)
1542

1643
}

api/src/test/java/io/realworld/api/ConduitClientTests.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@ class ConduitClientTests {
1515
@Test
1616
fun `GET articles`() {
1717
runBlocking {
18-
val articles = conduitClient.api.getArticles()
18+
val articles = conduitClient.publicApi.getArticles()
1919
assertNotNull(articles.body()?.articles)
2020
}
2121
}
2222

2323
@Test
2424
fun `GET articles by author`() {
2525
runBlocking {
26-
val articles = conduitClient.api.getArticles(author = "444")
26+
val articles = conduitClient.publicApi.getArticles(author = "444")
2727
assertNotNull(articles.body()?.articles)
2828
}
2929
}
3030

3131
@Test
3232
fun `GET articles by tags`() {
3333
runBlocking {
34-
val articles = conduitClient.api.getArticles(tag = "dragons")
34+
val articles = conduitClient.publicApi.getArticles(tag = "dragons")
3535
assertNotNull(articles.body()?.articles)
3636
}
3737
}
@@ -44,7 +44,7 @@ class ConduitClientTests {
4444
username = "rand_user_${Random.nextInt(99, 999)}"
4545
)
4646
runBlocking {
47-
val resp = conduitClient.api.signupUser(SignupRequest(userCreds))
47+
val resp = conduitClient.publicApi.signupUser(SignupRequest(userCreds))
4848
assertEquals(userCreds.username, resp.body()?.user?.username)
4949
}
5050
}

app/src/main/java/io/realworld/android/data/ArticlesRepo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package io.realworld.android.data
33
import io.realworld.api.ConduitClient
44

55
object ArticlesRepo {
6-
val api = ConduitClient().api
6+
val api = ConduitClient.publicApi
77

88
suspend fun getGlobalFeed() = api.getArticles()
99
}

app/src/main/java/io/realworld/android/data/UserRepo.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@ import io.realworld.api.models.requests.LoginRequest
66
import io.realworld.api.models.responses.UserResponse
77

88
object UserRepo {
9-
val api = ConduitClient().api
9+
val api = ConduitClient.publicApi
10+
val authAPI = ConduitClient.authApi
1011

1112
suspend fun login(email: String, password: String): UserResponse? {
1213
val response = api.loginUser(LoginRequest(LoginData(email, password)))
14+
15+
ConduitClient.authToken = response.body()?.user?.token
16+
1317
return response.body()
1418
}
1519

20+
suspend fun getUserProfile() = authAPI.getCurrentUser().body()?.user
21+
1622
}

0 commit comments

Comments
 (0)