Created
March 17, 2020 09:31
-
-
Save lordcodes/f68da5178cb440cfdc4ee2b5c85dce2b to your computer and use it in GitHub Desktop.
Code for the article: "Authorization and retrying of web requests for OkHttp and Retrofit"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class TokenRefreshAuthenticator( | |
private val authorizationRepository: AuthorizationRepository | |
) : Authenticator { | |
override fun authenticate(route: Route?, response: Response): Request? = when { | |
response.retryCount > 2 -> null | |
else -> response.createSignedRequest() | |
} | |
private fun Response.createSignedRequest(): Request? = try { | |
val accessToken = authenticationRepository.fetchFreshAccessToken() | |
request.signWithToken(accessToken) | |
} catch (error: Throwable) { | |
Logger.error(error, "Failed to re-sign request") | |
null | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment