package com.byoutline.kickmaterial.api; import android.text.TextUtils; import com.byoutline.kickmaterial.dagger.GlobalScope; import com.byoutline.kickmaterial.managers.AccessTokenProvider; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; import javax.inject.Inject; import java.io.IOException; import java.util.AbstractMap; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author Sebastian Kacprzak <sebastian.kacprzak at byoutline.com> on 05.05.14. */ @GlobalScope public class KickMaterialRequestInterceptor implements Interceptor { private final AccessTokenProvider accessTokenProvider; @Inject public KickMaterialRequestInterceptor(AccessTokenProvider accessTokenProvider) { this.accessTokenProvider = accessTokenProvider; } @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); HttpUrl.Builder urlBuilder = original.url().newBuilder(); addBasicHeaders(urlBuilder); String accessToken = accessTokenProvider.get(); if (!TextUtils.isEmpty(accessToken)) { urlBuilder.addQueryParameter("oauth_token", accessToken); } HttpUrl newUrl = urlBuilder.build(); Request newRequest = original.newBuilder().url(newUrl).build(); return chain.proceed(newRequest); } private static void addBasicHeaders(HttpUrl.Builder builder) { for (Map.Entry<String, String> query : getBasicQueries()) { builder.addQueryParameter(query.getKey(), query.getValue()); } } public static List<Map.Entry<String, String>> getBasicQueries() { List<Map.Entry<String, String>> queries = new ArrayList<>(); queries.add(new AbstractMap.SimpleEntry<>("client_id", "SECRET_KEY")); return queries; } }