package com.example.networking;
import com.example.util.other.PropertiesManager;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import timber.log.Timber;
import javax.inject.Inject;
import java.io.IOException;
public class AuthenticationInterceptor implements Interceptor {
private static final String AUTHORIZATION_HEADER_KEY = "Authorization";
private static final String AUTHORIZATION_HEADER_VALUE_WITH_PLACEHOLDER = "Bearer %s";
private static final String AUTHORIZATION_FAKE_HEADER_KEY = "Authentication";
private static final String AUTHORIZATION_FAKE_HEADER_VALUE = ": True";
/**
* Fake authorization header. Only added so that this interceptor replaces it with the correct auth key.
*/
public static final String DO_AUTHENTICATION = AUTHORIZATION_FAKE_HEADER_KEY + AUTHORIZATION_FAKE_HEADER_VALUE;
private final PropertiesManager propertiesManager;
@Inject
public AuthenticationInterceptor(PropertiesManager propertiesManager) {
this.propertiesManager = propertiesManager;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (request.header(AUTHORIZATION_FAKE_HEADER_KEY) != null) {
Timber.d("Secure network request encountered. Adding authentication headers.");
request = request.newBuilder()
.addHeader(AUTHORIZATION_HEADER_KEY,
String.format(AUTHORIZATION_HEADER_VALUE_WITH_PLACEHOLDER, propertiesManager.getDribleClientAccessToken()))
.build();
}
return chain.proceed(request);
}
}