package com.mopub.network;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mopub.common.util.ResponseHeader;
import com.mopub.volley.AuthFailureError;
import com.mopub.volley.Request;
import com.mopub.volley.toolbox.HurlStack;
import org.apache.http.HttpResponse;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
import javax.net.ssl.SSLSocketFactory;
/**
* Modified Volley HurlStack with explicitly specified User-Agent.
*
* Used by Networking's singleton RequestQueue to ensure all network requests use WebView's
* User-Agent.
*/
public class RequestQueueHttpStack extends HurlStack {
@NonNull private final String mUserAgent;
public RequestQueueHttpStack(@NonNull final String userAgent) {
this(userAgent, null);
}
public RequestQueueHttpStack(@NonNull final String userAgent, @Nullable final UrlRewriter urlRewriter) {
this(userAgent, urlRewriter, null);
}
public RequestQueueHttpStack(@NonNull final String userAgent, @Nullable final UrlRewriter urlRewriter,
@Nullable final SSLSocketFactory sslSocketFactory) {
super(urlRewriter, sslSocketFactory);
mUserAgent = userAgent;
}
@Override
public HttpResponse performRequest(@NonNull final Request<?> request,
@Nullable Map<String, String> additionalHeaders) throws IOException, AuthFailureError {
if (additionalHeaders == null) {
additionalHeaders = new TreeMap<String, String>();
}
additionalHeaders.put(ResponseHeader.USER_AGENT.getKey(), mUserAgent);
return super.performRequest(request, additionalHeaders);
}
}