Skip to content

Commit 2a3616d

Browse files
committed
Refactor: LoginService 분리 및 네트워크 인증 로직 개선
- 인증이 필요 없는 API 처리를 위한 LoginService 추가 및 관련 로직 이동 - AuthInterceptor 내 No-Service-Token 헤더 체크 및 삭제 로직 제거
1 parent f514780 commit 2a3616d

5 files changed

Lines changed: 34 additions & 34 deletions

File tree

app/src/main/java/com/threegap/bitnagil/di/data/ServiceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.threegap.bitnagil.di.data
22

33
import com.threegap.bitnagil.data.address.service.AddressService
44
import com.threegap.bitnagil.data.auth.service.AuthService
5+
import com.threegap.bitnagil.data.auth.service.LoginService
56
import com.threegap.bitnagil.data.emotion.service.EmotionService
67
import com.threegap.bitnagil.data.file.service.FileService
78
import com.threegap.bitnagil.data.onboarding.service.OnBoardingService
@@ -30,6 +31,11 @@ object ServiceModule {
3031
fun provideAuthService(@Auth retrofit: Retrofit): AuthService =
3132
retrofit.create(AuthService::class.java)
3233

34+
@Provides
35+
@Singleton
36+
fun provideLoginService(@NoneAuth retrofit: Retrofit): LoginService =
37+
retrofit.create(LoginService::class.java)
38+
3339
@Provides
3440
@Singleton
3541
fun providerOnBoardingService(@Auth retrofit: Retrofit): OnBoardingService =

core/network/src/main/java/com/threegap/bitnagil/network/auth/AuthInterceptor.kt

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,16 @@ package com.threegap.bitnagil.network.auth
33
import com.threegap.bitnagil.network.token.TokenProvider
44
import kotlinx.coroutines.runBlocking
55
import okhttp3.Interceptor
6-
import okhttp3.Request
76
import okhttp3.Response
87

98
class AuthInterceptor(
109
private val tokenProvider: TokenProvider,
1110
) : Interceptor {
1211
override fun intercept(chain: Interceptor.Chain): Response {
1312
val originalRequest = chain.request()
14-
val noToken = originalRequest.header(HEADER_NO_SERVICE_TOKEN)
15-
16-
if (noToken == "true") {
17-
return chain.proceed(removeNoTokenHeader(originalRequest))
18-
}
1913

2014
val token = runBlocking { tokenProvider.getAccessToken() }
21-
if (token.isNullOrBlank()) {
22-
return chain.proceed(originalRequest)
23-
}
15+
if (token.isNullOrBlank()) return chain.proceed(originalRequest)
2416

2517
val newRequest = originalRequest.newBuilder()
2618
.addHeader(HEADER_AUTHORIZATION, "$TOKEN_PREFIX $token")
@@ -29,13 +21,7 @@ class AuthInterceptor(
2921
return chain.proceed(newRequest)
3022
}
3123

32-
private fun removeNoTokenHeader(request: Request): Request =
33-
request.newBuilder()
34-
.removeHeader(HEADER_NO_SERVICE_TOKEN)
35-
.build()
36-
3724
companion object {
38-
private const val HEADER_NO_SERVICE_TOKEN = "No-Service-Token"
3925
private const val HEADER_AUTHORIZATION = "Authorization"
4026
private const val TOKEN_PREFIX = "Bearer"
4127
}

data/src/main/java/com/threegap/bitnagil/data/auth/datasourceimpl/AuthRemoteDataSourceImpl.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,18 @@ import com.threegap.bitnagil.data.auth.model.request.TermsAgreementRequest
66
import com.threegap.bitnagil.data.auth.model.request.WithdrawalReasonRequest
77
import com.threegap.bitnagil.data.auth.model.response.LoginResponse
88
import com.threegap.bitnagil.data.auth.service.AuthService
9+
import com.threegap.bitnagil.data.auth.service.LoginService
910
import com.threegap.bitnagil.data.common.safeApiCall
1011
import com.threegap.bitnagil.data.common.safeUnitApiCall
1112
import javax.inject.Inject
1213

1314
class AuthRemoteDataSourceImpl @Inject constructor(
1415
private val authService: AuthService,
16+
private val loginService: LoginService,
1517
) : AuthRemoteDataSource {
1618
override suspend fun login(socialAccessToken: String, loginRequest: LoginRequest): Result<LoginResponse> =
1719
safeApiCall {
18-
authService.postLogin(socialAccessToken, loginRequest)
20+
loginService.postLogin(socialAccessToken, loginRequest)
1921
}
2022

2123
override suspend fun submitAgreement(termsAgreementRequest: TermsAgreementRequest): Result<Unit> =
@@ -35,6 +37,6 @@ class AuthRemoteDataSourceImpl @Inject constructor(
3537

3638
override suspend fun reissueToken(refreshToken: String): Result<LoginResponse> =
3739
safeApiCall {
38-
authService.postReissueToken(refreshToken)
40+
loginService.postReissueToken(refreshToken)
3941
}
4042
}
Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,12 @@
11
package com.threegap.bitnagil.data.auth.service
22

3-
import com.threegap.bitnagil.data.auth.model.request.LoginRequest
43
import com.threegap.bitnagil.data.auth.model.request.TermsAgreementRequest
54
import com.threegap.bitnagil.data.auth.model.request.WithdrawalReasonRequest
6-
import com.threegap.bitnagil.data.auth.model.response.LoginResponse
75
import com.threegap.bitnagil.network.model.BaseResponse
86
import retrofit2.http.Body
9-
import retrofit2.http.Header
10-
import retrofit2.http.Headers
117
import retrofit2.http.POST
128

139
interface AuthService {
14-
@POST("/api/v1/auth/login")
15-
@Headers("No-Service-Token: true")
16-
suspend fun postLogin(
17-
@Header("SocialAccessToken") socialAccessToken: String,
18-
@Body loginRequest: LoginRequest,
19-
): BaseResponse<LoginResponse>
20-
2110
@POST("/api/v1/auth/agreements")
2211
suspend fun submitAgreement(
2312
@Body termsAgreementRequest: TermsAgreementRequest,
@@ -28,10 +17,4 @@ interface AuthService {
2817

2918
@POST("/api/v1/auth/logout")
3019
suspend fun postLogout(): BaseResponse<Unit>
31-
32-
@POST("/api/v1/auth/token/reissue")
33-
@Headers("No-Service-Token: true", "Auto-Login: true")
34-
suspend fun postReissueToken(
35-
@Header("Refresh-Token") refreshToken: String,
36-
): BaseResponse<LoginResponse>
3720
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.threegap.bitnagil.data.auth.service
2+
3+
import com.threegap.bitnagil.data.auth.model.request.LoginRequest
4+
import com.threegap.bitnagil.data.auth.model.response.LoginResponse
5+
import com.threegap.bitnagil.network.model.BaseResponse
6+
import retrofit2.http.Body
7+
import retrofit2.http.Header
8+
import retrofit2.http.Headers
9+
import retrofit2.http.POST
10+
11+
interface LoginService {
12+
@POST("/api/v1/auth/login")
13+
suspend fun postLogin(
14+
@Header("SocialAccessToken") socialAccessToken: String,
15+
@Body loginRequest: LoginRequest,
16+
): BaseResponse<LoginResponse>
17+
18+
@POST("/api/v1/auth/token/reissue")
19+
@Headers("Auto-Login: true")
20+
suspend fun postReissueToken(
21+
@Header("Refresh-Token") refreshToken: String,
22+
): BaseResponse<LoginResponse>
23+
}

0 commit comments

Comments
 (0)