-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Global/aos] Bearer Interceptor 구현 #110
[Global/aos] Bearer Interceptor 구현 #110
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
util 패키지에 constants관리하는데 같이 관리하는거는 어떻게 생각하는지!
고생했어 👍
val retrofit = Retrofit.Builder() | ||
.baseUrl(Constants.BASE_URL) | ||
.addConverterFactory(GsonConverterFactory.create()) | ||
.client(okHttpClient) | ||
.build() | ||
val api = retrofit.create(RefreshApi::class.java) | ||
return runRemote { api.refreshToken(RefreshTokenRequest(refreshToken)) } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분에 대해서 왜 retrofit을 di를 안했지? 라는 의문이 들었는데
@Provides
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
내가 이해한 바로는 retrofit -> okhttpclient -> bearerinterceptor -> retrofit 이렇게 순환참조가 일어나서 이렇게 선언을 했다고 생각하는데 생각하는 바가 맞는걸까?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞아!! 나도 di 로 하려고했는데 사이클이 돌아서 안되더라고..
companion object { | ||
const val TOKEN_ERROR = 401 | ||
const val AUTHORIZATION = "Authorization" | ||
const val BEARER = "Bearer" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분 util패키지 -> constants에서 관리하고 있는데 거기다가 진행하는 거는 어떨까?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
constants 에 지금 상수값이 거의 다 들어가있어서 좀 나눠서 관리하는건 어떨까 싶어. 예를들어 Constant 라고만 하면 나중에 무슨 상수값인지 모르니까 값을 불러오려면 파일에 들어가서 확인해야하는데, Error, Network, Token 뭐 이런식으로 하면 쉽게 찾을 수 있을것 같아. 장단이 있을거 같은데 얘기해보면 좋을듯!
@Provides | ||
fun provideAccessTokenInterceptor(dataStoreManager: DataStoreManager): AccessTokenInterceptor = | ||
AccessTokenInterceptor(dataStoreManager) | ||
|
||
@Provides | ||
fun provideBearerInterceptor(dataStoreManager: DataStoreManager): BearerInterceptor = | ||
BearerInterceptor(dataStoreManager) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
accesstokenInterceptor 없었는데 같이 추가 👍👍👍👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍👍👍
(newAccessToken)?.let { | ||
val newRequest = originalRequest.newBuilder() | ||
.addHeader(AUTHORIZATION, "$BEARER $newAccessToken") | ||
.build() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
기존 request 가 열려있으면 에러가 나서
여기서 response.close() 를 해줘야 정상적으로 새로운 request가 내려갔던 것으로 기억함!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
같은 파일 41 줄에 response.close() 넣어뒀어! 어디 넣어하는건지 잘 몰라서 일단 재발급 성공한 직후에 넣어뒀는데 여기로 옮기는게 나을까?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아! 못봤다ㅜㅜ 기존 위치가 좋은거 같아
} | ||
} | ||
} | ||
(newAccessToken)?.let { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사소한 컨밴션 이지만 이거 괄호 왜 썼는지?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
연산을 하려고 했는데 연산을 지우면서 같이 안 지운거같아 ㅋㅋㅋㅋㅋ 다음 커밋때 지울게요!
주요 작업
완료한 task 명세
결과 화면
2023-11-23.3.44.11.mov
2023-11-23.3.45.04.mov
리뷰 요청 사항
Related to issue #86