Skip to content

Commit 60ff079

Browse files
committed
refactor: core:network -> remote:common
1 parent 9b04af9 commit 60ff079

File tree

49 files changed

+89
-104
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+89
-104
lines changed

build-logic/convention/src/main/java/RemoteConventionPlugin.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal class RemoteConventionPlugin : Plugin<Project> {
1515

1616
dependencies {
1717
"implementation"(project(":core:model"))
18-
"implementation"(project(":core:network"))
18+
"implementation"(project(":remote:common"))
1919

2020
"implementation"(libs.findBundle("coroutine").get())
2121

core/network/src/main/java/com/suwiki/core/network/di/Consts.kt

-3
This file was deleted.

core/network/src/test/java/com/suwiki/core/network/ExampleUnitTest.kt

-16
This file was deleted.

gradle/libs.versions.toml

+2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ protobuf = "3.24.4"
6464
espresso-core = "3.5.1"
6565
junit-ktx = "1.1.5"
6666
androidx-test-runner = "1.5.2"
67+
junit = "1.1.5"
6768

6869
[plugins]
6970
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
@@ -190,6 +191,7 @@ espresso-core = { group = "androidx.test.espresso", name = "espresso-core", vers
190191

191192
protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf" }
192193
protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" }
194+
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junit" }
193195

194196
[bundles]
195197
firebase = ["firebase-analytics"]
File renamed without changes.

core/network/build.gradle.kts remote/common/build.gradle.kts

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
42
plugins {
53
alias(libs.plugins.suwiki.android.library)
@@ -8,15 +6,15 @@ plugins {
86
}
97

108
android {
11-
namespace = "com.suwiki.core.network"
9+
namespace = "com.suwiki.remote.common"
1210

1311
buildTypes {
1412
getByName("debug") {
15-
buildConfigField("String", "BASE_URL", "\"http://54.180.72.97:8080\"")
13+
buildConfigField("String", "BASE_URL", "String.valueOf(\"http://54.180.72.97:8080\")")
1614
}
1715

1816
getByName("release") {
19-
buildConfigField("String", "BASE_URL", "\"https://api.suwiki.kr\"")
17+
buildConfigField("String", "BASE_URL", "String.valueOf(\"https://api.suwiki.kr\")")
2018
}
2119
}
2220
}
File renamed without changes.
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
33

4-
</manifest>
4+
</manifest>

core/network/src/main/java/com/suwiki/core/network/api/AuthApi.kt remote/common/src/main/java/com/suwiki/remote/common/api/AuthApi.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
package com.suwiki.core.network.api
1+
package com.suwiki.remote.common.api
22

3-
import com.suwiki.core.network.model.TokenResponse
4-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.di.AUTH_HEADER
4+
import com.suwiki.remote.common.model.TokenResponse
5+
import com.suwiki.remote.common.retrofit.ApiResult
56
import retrofit2.http.Header
67
import retrofit2.http.POST
78

89
// TODO : v2 api로 업그레이드 필요.
910
interface AuthApi {
1011
companion object {
1112
const val USER = "/user"
12-
const val AUTH_HEADER = "Authorization"
1313
}
1414

1515
// Refresh Token

core/network/src/main/java/com/suwiki/core/network/authenticator/TokenAuthenticator.kt remote/common/src/main/java/com/suwiki/remote/common/authenticator/TokenAuthenticator.kt

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
package com.suwiki.core.network.authenticator
1+
package com.suwiki.remote.common.authenticator
22

33
import com.suwiki.core.model.exception.SuwikiServerError
4-
import com.suwiki.core.network.di.RETROFIT_TAG
5-
import com.suwiki.core.network.repository.AuthRepository
6-
import com.suwiki.core.network.retrofit.Json
4+
import com.suwiki.remote.common.di.AUTH_HEADER
5+
import com.suwiki.remote.common.di.RETROFIT_TAG
6+
import com.suwiki.remote.common.repository.AuthRepository
7+
import com.suwiki.remote.common.retrofit.Json
78
import kotlinx.coroutines.flow.first
89
import kotlinx.coroutines.runBlocking
910
import kotlinx.coroutines.sync.Mutex
@@ -23,19 +24,22 @@ internal class TokenAuthenticator @Inject constructor(
2324

2425
mutex.withLock {
2526
val accessToken = authRepository.accessToken.first()
26-
val alreadyRefreshed = response.request.header(AUTH_HEADER)?.contains(accessToken) == false
27+
val alreadyRefreshed =
28+
response.request.header(AUTH_HEADER)?.contains(accessToken) == false
2729
// if request's header's token is different, then that means the access token has already been refreshed
2830
// we return the response with the locally persisted token in the header
2931
if (alreadyRefreshed) {
30-
Timber.tag(RETROFIT_TAG).d("TokenAuthenticator - 이미 토큰이 갱신됨 / 중단된 API 재요청")
32+
Timber.tag(RETROFIT_TAG)
33+
.d("TokenAuthenticator - 이미 토큰이 갱신됨 / 중단된 API 재요청")
3134

3235
return@runBlocking response.request.newBuilder()
3336
.header(AUTH_HEADER, accessToken)
3437
.build()
3538
}
3639

3740
if (authRepository.reissueRefreshToken()) {
38-
Timber.tag(RETROFIT_TAG).d("TokenAuthenticator - 토큰 갱신 성공 / 중단된 API 재요청")
41+
Timber.tag(RETROFIT_TAG)
42+
.d("TokenAuthenticator - 토큰 갱신 성공 / 중단된 API 재요청")
3943
response.request
4044
.newBuilder()
4145
.removeHeader(AUTH_HEADER)
@@ -46,10 +50,6 @@ internal class TokenAuthenticator @Inject constructor(
4650
}
4751
}
4852
}
49-
50-
companion object {
51-
const val AUTH_HEADER = "Authorization"
52-
}
5353
}
5454

5555
private val okhttp3.Response.isTokenExpired: Boolean

core/network/src/main/java/com/suwiki/core/network/di/ApiModule.kt remote/common/src/main/java/com/suwiki/remote/common/di/ApiModule.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.suwiki.core.network.di
1+
package com.suwiki.remote.common.di
22

3-
import com.suwiki.core.network.api.AuthApi
3+
import com.suwiki.remote.common.api.AuthApi
44
import dagger.Module
55
import dagger.Provides
66
import dagger.hilt.InstallIn
@@ -14,7 +14,7 @@ object ApiModule {
1414

1515
@Singleton
1616
@Provides
17-
fun provideAuthApi(@NormalRetrofit retrofit: Retrofit): AuthApi {
17+
fun provideAuthApi(@NoAuthRetrofit retrofit: Retrofit): AuthApi {
1818
return retrofit.create(AuthApi::class.java)
1919
}
2020
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.suwiki.remote.common.di
2+
3+
internal const val RETROFIT_TAG = "Retrofit2"
4+
internal const val AUTH_HEADER = "Authorization"

core/network/src/main/java/com/suwiki/core/network/di/NetworkModule.kt remote/common/src/main/java/com/suwiki/remote/common/di/NetworkModule.kt

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.suwiki.core.network.di
1+
package com.suwiki.remote.common.di
22

33
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
4-
import com.suwiki.core.network.BuildConfig
5-
import com.suwiki.core.network.authenticator.TokenAuthenticator
6-
import com.suwiki.core.network.interceptor.AuthenticationInterceptor
7-
import com.suwiki.core.network.retrofit.ResultCallAdapterFactory
4+
import com.suwiki.remote.common.BuildConfig
5+
import com.suwiki.remote.common.authenticator.TokenAuthenticator
6+
import com.suwiki.remote.common.interceptor.AuthenticationInterceptor
7+
import com.suwiki.remote.common.retrofit.ResultCallAdapterFactory
88
import dagger.Module
99
import dagger.Provides
1010
import dagger.hilt.InstallIn
@@ -25,8 +25,8 @@ object NetworkModule {
2525

2626
@Singleton
2727
@Provides
28-
@NormalOkHttpClient
29-
fun provideNormalHttpClient(
28+
@NoAuthOkHttpClient
29+
fun provideNoAuthHttpClient(
3030
loggingInterceptor: HttpLoggingInterceptor,
3131
): OkHttpClient {
3232
return OkHttpClient.Builder()
@@ -72,9 +72,9 @@ object NetworkModule {
7272

7373
@Singleton
7474
@Provides
75-
@NormalRetrofit
76-
fun provideNormalRetrofit(
77-
@NormalOkHttpClient okHttpClient: OkHttpClient,
75+
@NoAuthRetrofit
76+
fun provideNoAuthRetrofit(
77+
@NoAuthOkHttpClient okHttpClient: OkHttpClient,
7878
json: Json,
7979
): Retrofit {
8080
return Retrofit.Builder()

core/network/src/main/java/com/suwiki/core/network/di/Qualifier.kt remote/common/src/main/java/com/suwiki/remote/common/di/Qualifier.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
package com.suwiki.core.network.di
1+
package com.suwiki.remote.common.di
22

33
import javax.inject.Qualifier
44

55
@Qualifier
66
@Retention(AnnotationRetention.BINARY)
7-
internal annotation class NormalOkHttpClient
7+
internal annotation class NoAuthOkHttpClient
88

99
@Qualifier
1010
@Retention(AnnotationRetention.BINARY)
1111
internal annotation class AuthOkHttpClient
1212

1313
@Qualifier
1414
@Retention(AnnotationRetention.BINARY)
15-
annotation class NormalRetrofit
15+
annotation class NoAuthRetrofit
1616

1717
@Qualifier
1818
@Retention(AnnotationRetention.BINARY)

core/network/src/main/java/com/suwiki/core/network/di/RepositoryModule.kt remote/common/src/main/java/com/suwiki/remote/common/di/RepositoryModule.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.suwiki.core.network.di
1+
package com.suwiki.remote.common.di
22

3-
import com.suwiki.core.network.repository.AuthRepository
4-
import com.suwiki.core.network.repository.AuthRepositoryImpl
3+
import com.suwiki.remote.common.repository.AuthRepository
4+
import com.suwiki.remote.common.repository.AuthRepositoryImpl
55
import dagger.Binds
66
import dagger.Module
77
import dagger.hilt.InstallIn

core/network/src/main/java/com/suwiki/core/network/interceptor/AuthenticationInterceptor.kt remote/common/src/main/java/com/suwiki/remote/common/interceptor/AuthenticationInterceptor.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.suwiki.core.network.interceptor
1+
package com.suwiki.remote.common.interceptor
22

3-
import com.suwiki.core.network.authenticator.TokenAuthenticator
4-
import com.suwiki.core.network.di.RETROFIT_TAG
5-
import com.suwiki.core.network.repository.AuthRepository
3+
import com.suwiki.remote.common.di.AUTH_HEADER
4+
import com.suwiki.remote.common.di.RETROFIT_TAG
5+
import com.suwiki.remote.common.repository.AuthRepository
66
import kotlinx.coroutines.flow.first
77
import kotlinx.coroutines.runBlocking
88
import okhttp3.Interceptor
@@ -16,7 +16,7 @@ internal class AuthenticationInterceptor @Inject constructor(
1616
return runBlocking {
1717
val accessToken = authRepository.accessToken.first()
1818
val request = chain.request().newBuilder()
19-
.addHeader(TokenAuthenticator.AUTH_HEADER, accessToken).build()
19+
.addHeader(AUTH_HEADER, accessToken).build()
2020
Timber.tag(RETROFIT_TAG)
2121
.d(
2222
"AuthenticationInterceptor - intercept() called / request header: %s",

core/network/src/main/java/com/suwiki/core/network/model/TokenResponse.kt remote/common/src/main/java/com/suwiki/remote/common/model/TokenResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.model
1+
package com.suwiki.remote.common.model
22

33
import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable

core/network/src/main/java/com/suwiki/core/network/repository/AuthRepository.kt remote/common/src/main/java/com/suwiki/remote/common/repository/AuthRepository.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.repository
1+
package com.suwiki.remote.common.repository
22

33
import kotlinx.coroutines.flow.Flow
44

core/network/src/main/java/com/suwiki/core/network/repository/AuthRepositoryImpl.kt remote/common/src/main/java/com/suwiki/remote/common/repository/AuthRepositoryImpl.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.suwiki.core.network.repository
1+
package com.suwiki.remote.common.repository
22

3-
import com.suwiki.core.network.api.AuthApi
4-
import com.suwiki.core.network.di.RETROFIT_TAG
5-
import com.suwiki.core.network.retrofit.onFailure
6-
import com.suwiki.core.network.retrofit.onSuccess
73
import com.suwiki.core.security.SecurityPreferences
4+
import com.suwiki.remote.common.api.AuthApi
5+
import com.suwiki.remote.common.di.RETROFIT_TAG
6+
import com.suwiki.remote.common.retrofit.onFailure
7+
import com.suwiki.remote.common.retrofit.onSuccess
88
import kotlinx.coroutines.flow.Flow
99
import kotlinx.coroutines.flow.first
1010
import timber.log.Timber

core/network/src/main/java/com/suwiki/core/network/retrofit/ApiResult.kt remote/common/src/main/java/com/suwiki/remote/common/retrofit/ApiResult.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.retrofit
1+
package com.suwiki.remote.common.retrofit
22

33
import com.suwiki.core.model.exception.ForbiddenException
44
import com.suwiki.core.model.exception.NetworkException

core/network/src/main/java/com/suwiki/core/network/retrofit/ApiResultCallAdapter.kt remote/common/src/main/java/com/suwiki/remote/common/retrofit/ApiResultCallAdapter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.retrofit
1+
package com.suwiki.remote.common.retrofit
22

33
import okhttp3.Request
44
import okio.Timeout

core/network/src/main/java/com/suwiki/core/network/retrofit/Json.kt remote/common/src/main/java/com/suwiki/remote/common/retrofit/Json.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.retrofit
1+
package com.suwiki.remote.common.retrofit
22

33
import kotlinx.serialization.json.Json
44

core/network/src/main/java/com/suwiki/core/network/retrofit/ResultCallAdapterFactory.kt remote/common/src/main/java/com/suwiki/remote/common/retrofit/ResultCallAdapterFactory.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.retrofit
1+
package com.suwiki.remote.common.retrofit
22

33
import retrofit2.Call
44
import retrofit2.CallAdapter

core/network/src/main/java/com/suwiki/core/network/retrofit/SuwikiErrorResponse.kt remote/common/src/main/java/com/suwiki/remote/common/retrofit/SuwikiErrorResponse.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.suwiki.core.network.retrofit
1+
package com.suwiki.remote.common.retrofit
22

33
import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable

remote/lectureevaluation/editor/src/main/java/com/suwiki/remote/lectureevaluation/editor/api/ExamEditorApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.editor.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.editor.request.PostExamEvaluationRequest
55
import com.suwiki.remote.lectureevaluation.editor.request.UpdateExamEvaluationRequest
66
import retrofit2.http.Body

remote/lectureevaluation/editor/src/main/java/com/suwiki/remote/lectureevaluation/editor/api/LectureEditorApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.editor.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.editor.request.PostLectureEvaluationRequest
55
import com.suwiki.remote.lectureevaluation.editor.request.UpdateLectureEvaluationRequest
66
import retrofit2.http.Body

remote/lectureevaluation/editor/src/main/java/com/suwiki/remote/lectureevaluation/editor/di/ApiModule.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.editor.di
22

3-
import com.suwiki.core.network.di.AuthRetrofit
3+
import com.suwiki.remote.common.di.AuthRetrofit
44
import com.suwiki.remote.lectureevaluation.editor.api.ExamEditorApi
55
import com.suwiki.remote.lectureevaluation.editor.api.LectureEditorApi
66
import dagger.Module

remote/lectureevaluation/my/src/main/java/com/suwiki/remote/lectureevaluation/my/api/ExamMyApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.my.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.my.response.DataResponse
55
import com.suwiki.remote.lectureevaluation.my.response.MyExamEvaluationResponse
66
import com.suwiki.remote.lectureevaluation.my.response.PurchaseHistoryResponse

remote/lectureevaluation/my/src/main/java/com/suwiki/remote/lectureevaluation/my/api/LectureMyApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.my.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.my.response.DataResponse
55
import com.suwiki.remote.lectureevaluation.my.response.MyLectureEvaluationResponse
66
import retrofit2.http.GET

remote/lectureevaluation/my/src/main/java/com/suwiki/remote/lectureevaluation/my/di/ApiModule.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.my.di
22

3-
import com.suwiki.core.network.di.AuthRetrofit
3+
import com.suwiki.remote.common.di.AuthRetrofit
44
import com.suwiki.remote.lectureevaluation.my.api.ExamMyApi
55
import com.suwiki.remote.lectureevaluation.my.api.LectureMyApi
66
import dagger.Module

remote/lectureevaluation/viewerreporter/src/main/java/com/suwiki/remote/lectureevaluation/viewerreporter/api/ExamReportApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.viewerreporter.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.viewerreporter.api.LectureReportApi.Companion.REPORT
55
import com.suwiki.remote.lectureevaluation.viewerreporter.api.LectureReportApi.Companion.USER
66
import com.suwiki.remote.lectureevaluation.viewerreporter.request.ReportExamRequest

remote/lectureevaluation/viewerreporter/src/main/java/com/suwiki/remote/lectureevaluation/viewerreporter/api/ExamViewerApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.viewerreporter.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.viewerreporter.api.LectureViewerApi.Companion.QUERY_LECTURE_ID
55
import com.suwiki.remote.lectureevaluation.viewerreporter.response.exam.ExamEvaluationListResponse
66
import retrofit2.http.GET

remote/lectureevaluation/viewerreporter/src/main/java/com/suwiki/remote/lectureevaluation/viewerreporter/api/LectureReportApi.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.suwiki.remote.lectureevaluation.viewerreporter.api
22

3-
import com.suwiki.core.network.retrofit.ApiResult
3+
import com.suwiki.remote.common.retrofit.ApiResult
44
import com.suwiki.remote.lectureevaluation.viewerreporter.request.ReportLectureRequest
55
import retrofit2.http.Body
66
import retrofit2.http.POST

0 commit comments

Comments
 (0)