Created
February 27, 2017 18:02
-
-
Save Augusent/52ff7393bd2361a79502b08f3e204ec2 to your computer and use it in GitHub Desktop.
Authorization Interceptor
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
@Singleton | |
public final class AuthInterceptor implements Interceptor { | |
private final Prefs prefs; | |
@Inject | |
public AuthInterceptor(Prefs prefs) { | |
this.prefs = prefs; | |
} | |
@Override | |
public Response intercept(Chain chain) throws IOException { | |
// Add authorization header to each request if Access Token exists on device | |
Request request = chain.request(); | |
final String accessToken = this.prefs.getAccessToken(); | |
if (accessToken != null) { | |
final Headers headers = request.headers() | |
.newBuilder() | |
.add(Constants.ACCESS_TOKEN_HEADER, accessToken) | |
.build(); | |
request = request.newBuilder().headers(headers).build(); | |
} | |
// Store obtained Access Token and Refresh Token if response contains them. | |
// Responses which serve new tokens: /signin, /signup, /auth_via_facebook, /session | |
final Response response = chain.proceed(request); | |
final String newAccessToken = response.headers().get(Constants.ACCESS_TOKEN_HEADER); | |
final String newRefreshToken = response.headers().get(Constants.REFRESH_TOKEN_HEADER); | |
final Date refreshTokenExpired = response.headers().getDate(Constants.REFRESH_TOKEN_EXPIRED_HEADER); | |
if (newAccessToken != null) { | |
prefs.setAccessToken(newAccessToken); | |
} | |
if (newRefreshToken != null) { | |
prefs.setRefreshToken(newRefreshToken); | |
} | |
return response; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment