package com.czhj.volley.toolbox; import com.baidu.mobads.sdk.internal.ae; import com.czhj.sdk.common.Constants; import com.czhj.volley.AuthFailureError; import com.czhj.volley.Header; import com.czhj.volley.Request; import java.io.DataOutputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocketFactory; public class HurlStack extends BaseHttpStack { private static final int a = 100; private final UrlRewriter b; private final SSLSocketFactory c; /* access modifiers changed from: package-private */ public static class UrlConnectionInputStream extends FilterInputStream { private final HttpURLConnection a; UrlConnectionInputStream(HttpURLConnection httpURLConnection) { super(HurlStack.b(httpURLConnection)); this.a = httpURLConnection; } @Override // java.io.FilterInputStream, java.io.Closeable, java.lang.AutoCloseable, java.io.InputStream public void close() throws IOException { super.close(); this.a.disconnect(); } } public interface UrlRewriter { String rewriteUrl(String str); } public HurlStack() { this(null); } public HurlStack(UrlRewriter urlRewriter) { this(urlRewriter, null); } public HurlStack(UrlRewriter urlRewriter, SSLSocketFactory sSLSocketFactory) { this.b = urlRewriter; this.c = sSLSocketFactory; } private HttpURLConnection a(URL url, Request<?> request) throws IOException { SSLSocketFactory sSLSocketFactory; HttpURLConnection createConnection = createConnection(url); int timeoutMs = request.getTimeoutMs(); createConnection.setConnectTimeout(request.getConnectTimeoutMs()); createConnection.setReadTimeout(timeoutMs); createConnection.setUseCaches(false); createConnection.setDoInput(true); if (Constants.HTTPS.equals(url.getProtocol()) && (sSLSocketFactory = this.c) != null) { HttpsURLConnection httpsURLConnection = (HttpsURLConnection) createConnection; httpsURLConnection.setSSLSocketFactory(sSLSocketFactory); httpsURLConnection.setHostnameVerifier(new HostnameVerifier() { /* class com.czhj.volley.toolbox.HurlStack.AnonymousClass1 */ public boolean verify(String str, SSLSession sSLSession) { return true; } }); } return createConnection; } static List<Header> a(Map<String, List<String>> map) { ArrayList arrayList = new ArrayList(map.size()); for (Map.Entry<String, List<String>> entry : map.entrySet()) { if (entry.getKey() != null) { for (String str : entry.getValue()) { arrayList.add(new Header(entry.getKey(), str)); } } } return arrayList; } static void a(HttpURLConnection httpURLConnection, Request<?> request) throws IOException, AuthFailureError { String str; String str2; switch (request.getMethod()) { case -1: byte[] body = request.getBody(); if (body != null) { httpURLConnection.setRequestMethod(ae.b); a(httpURLConnection, request, body); return; } return; case 0: str = "GET"; httpURLConnection.setRequestMethod(str); return; case 1: httpURLConnection.setRequestMethod(ae.b); b(httpURLConnection, request); return; case 2: str2 = "PUT"; httpURLConnection.setRequestMethod(str2); b(httpURLConnection, request); return; case 3: str = "DELETE"; httpURLConnection.setRequestMethod(str); return; case 4: str = "HEAD"; httpURLConnection.setRequestMethod(str); return; case 5: str = "OPTIONS"; httpURLConnection.setRequestMethod(str); return; case 6: str = "TRACE"; httpURLConnection.setRequestMethod(str); return; case 7: str2 = "PATCH"; httpURLConnection.setRequestMethod(str2); b(httpURLConnection, request); return; default: throw new IllegalStateException("Unknown method type."); } } private static void a(HttpURLConnection httpURLConnection, Request<?> request, byte[] bArr) throws IOException { httpURLConnection.setDoOutput(true); httpURLConnection.setRequestProperty("Content-Type", request.getBodyContentType()); DataOutputStream dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream()); dataOutputStream.write(bArr); dataOutputStream.close(); } private static boolean a(int i, int i2) { return (i == 4 || (100 <= i2 && i2 < 200) || i2 == 204 || i2 == 304) ? false : true; } /* access modifiers changed from: private */ public static InputStream b(HttpURLConnection httpURLConnection) { try { return httpURLConnection.getInputStream(); } catch (IOException unused) { return httpURLConnection.getErrorStream(); } } private static void b(HttpURLConnection httpURLConnection, Request<?> request) throws IOException, AuthFailureError { byte[] body = request.getBody(); if (body != null) { a(httpURLConnection, request, body); } } /* access modifiers changed from: protected */ public HttpURLConnection createConnection(URL url) throws IOException { HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setInstanceFollowRedirects(HttpURLConnection.getFollowRedirects()); return httpURLConnection; } @Override // com.czhj.volley.toolbox.BaseHttpStack public HttpResponse executeRequest(Request<?> request, Map<String, String> map) throws IOException, AuthFailureError { String url = request.getUrl(); HashMap hashMap = new HashMap(); hashMap.putAll(map); hashMap.putAll(request.getHeaders()); UrlRewriter urlRewriter = this.b; if (urlRewriter != null) { String rewriteUrl = urlRewriter.rewriteUrl(url); if (rewriteUrl != null) { url = rewriteUrl; } else { throw new IOException("URL blocked by rewriter: " + url); } } HttpURLConnection a2 = a(new URL(url), request); try { for (String str : hashMap.keySet()) { a2.setRequestProperty(str, (String) hashMap.get(str)); } a(a2, request); int responseCode = a2.getResponseCode(); if (responseCode == -1) { throw new IOException("Could not retrieve response code from HttpUrlConnection."); } else if (a(request.getMethod(), responseCode)) { return new HttpResponse(responseCode, a(a2.getHeaderFields()), a2.getContentLength(), new UrlConnectionInputStream(a2)); } else { HttpResponse httpResponse = new HttpResponse(responseCode, a(a2.getHeaderFields())); a2.disconnect(); return httpResponse; } } catch (Throwable th) { if (0 == 0) { a2.disconnect(); } throw th; } } }