hegunhee / NowInJururu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Auth Token을 Interceptor로 처리하는 방법(runBlocking)

hegunhee opened this issue · comments

AS_IS
Twitch Token의 경우 api call을 통해 auth token을 불러와야
트위치 Api 값(검색, 스트리머)들을 받아올 수 있기 때문에
매번 Api Call을 하는곳마다 token을 불러오는 코드를 작성했다.
TO_BE
인터셉터에서 처리해주기 때문에
인터셉터 함수 안에서 Header를 작성해줬다.
장점
Twitch 정보를 불러오는 DataSource 함수마다 Auth Token을 불러오는 코드를 작성했지만
인터셉터를 통해 Auth Token을 불러오는 코드를 한곳만 작성해서 보일러 플레이트 코드를 줄였다.
회고
runBlocking은 테스트 코드에서만 사용하는줄알았지만
OkHttp와 같이 내부적으로 UiThread가 아닌 많은 양의 스레드를 사용하는곳에서도
runBlocking을 안전하게 사용하는것을 처음 알았다

runBlocking을 사용해도 왜 안전한지는 다음 코멘트에서 후술

https://youtu.be/PXnVry_emns?si=7Zcuo06IpKojzL4m&t=128
해당 영상을 참고로 왜 intercept함수 내에서 runBlocking을 사용하는지 설명하겠다.
OkHttp의 경우 내부적으로 UiThread가 아닌 20개정도 되는 thread를 사용한다.
그러므로 intercept 함수에서 runBlocking을 사용해도 안전하다