201 lines
9.2 KiB
Java
201 lines
9.2 KiB
Java
package com.alibaba.sdk.android.oss.internal;
|
|
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import android.text.TextUtils;
|
|
import com.alibaba.sdk.android.oss.ClientConfiguration;
|
|
import com.alibaba.sdk.android.oss.ClientException;
|
|
import com.alibaba.sdk.android.oss.ServiceException;
|
|
import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback;
|
|
import com.alibaba.sdk.android.oss.common.HttpMethod;
|
|
import com.alibaba.sdk.android.oss.common.OSSLog;
|
|
import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
|
|
import com.alibaba.sdk.android.oss.common.utils.DateUtil;
|
|
import com.alibaba.sdk.android.oss.common.utils.OSSUtils;
|
|
import com.alibaba.sdk.android.oss.common.utils.VersionInfoUtils;
|
|
import com.alibaba.sdk.android.oss.exception.InconsistentException;
|
|
import com.alibaba.sdk.android.oss.internal.ResponseParsers;
|
|
import com.alibaba.sdk.android.oss.model.OSSRequest;
|
|
import com.alibaba.sdk.android.oss.model.OSSResult;
|
|
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
|
|
import com.alibaba.sdk.android.oss.model.PutObjectResult;
|
|
import com.alibaba.sdk.android.oss.network.ExecutionContext;
|
|
import com.alibaba.sdk.android.oss.network.OSSRequestTask;
|
|
import java.net.InetSocketAddress;
|
|
import java.net.Proxy;
|
|
import java.net.URI;
|
|
import java.util.Map;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ThreadFactory;
|
|
import java.util.concurrent.TimeUnit;
|
|
import javax.net.ssl.HostnameVerifier;
|
|
import javax.net.ssl.HttpsURLConnection;
|
|
import javax.net.ssl.SSLSession;
|
|
import okhttp3.Dispatcher;
|
|
import okhttp3.OkHttpClient;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class InternalRequestOperation {
|
|
private static ExecutorService g = Executors.newFixedThreadPool(5, new ThreadFactory() { // from class: com.alibaba.sdk.android.oss.internal.InternalRequestOperation.1
|
|
@Override // java.util.concurrent.ThreadFactory
|
|
public Thread newThread(Runnable runnable) {
|
|
return new Thread(runnable, "oss-android-api-thread");
|
|
}
|
|
});
|
|
private volatile URI a;
|
|
private OkHttpClient b;
|
|
private Context c;
|
|
private OSSCredentialProvider d;
|
|
private int e;
|
|
private ClientConfiguration f;
|
|
|
|
public InternalRequestOperation(Context context, final URI uri, OSSCredentialProvider oSSCredentialProvider, ClientConfiguration clientConfiguration) {
|
|
this.e = 2;
|
|
this.c = context;
|
|
this.a = uri;
|
|
this.d = oSSCredentialProvider;
|
|
this.f = clientConfiguration;
|
|
OkHttpClient.Builder hostnameVerifier = new OkHttpClient.Builder().followRedirects(false).followSslRedirects(false).retryOnConnectionFailure(false).cache(null).hostnameVerifier(new HostnameVerifier(this) { // from class: com.alibaba.sdk.android.oss.internal.InternalRequestOperation.2
|
|
@Override // javax.net.ssl.HostnameVerifier
|
|
public boolean verify(String str, SSLSession sSLSession) {
|
|
return HttpsURLConnection.getDefaultHostnameVerifier().verify(uri.getHost(), sSLSession);
|
|
}
|
|
});
|
|
if (clientConfiguration != null) {
|
|
Dispatcher dispatcher = new Dispatcher();
|
|
dispatcher.setMaxRequests(clientConfiguration.e());
|
|
hostnameVerifier.connectTimeout(clientConfiguration.a(), TimeUnit.MILLISECONDS).readTimeout(clientConfiguration.j(), TimeUnit.MILLISECONDS).writeTimeout(clientConfiguration.j(), TimeUnit.MILLISECONDS).dispatcher(dispatcher);
|
|
if (clientConfiguration.h() != null && clientConfiguration.i() != 0) {
|
|
hostnameVerifier.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(clientConfiguration.h(), clientConfiguration.i())));
|
|
}
|
|
this.e = clientConfiguration.f();
|
|
}
|
|
this.b = hostnameVerifier.build();
|
|
}
|
|
|
|
public OSSAsyncTask<PutObjectResult> a(PutObjectRequest putObjectRequest, final OSSCompletedCallback<PutObjectRequest, PutObjectResult> oSSCompletedCallback) {
|
|
OSSLog.a(" Internal putObject Start ");
|
|
RequestMessage requestMessage = new RequestMessage();
|
|
requestMessage.d(putObjectRequest.b());
|
|
requestMessage.a(this.a);
|
|
requestMessage.a(HttpMethod.PUT);
|
|
requestMessage.a(putObjectRequest.c());
|
|
requestMessage.c(putObjectRequest.g());
|
|
if (putObjectRequest.j() != null) {
|
|
requestMessage.a(putObjectRequest.j());
|
|
}
|
|
if (putObjectRequest.k() != null) {
|
|
requestMessage.d(putObjectRequest.k());
|
|
}
|
|
if (putObjectRequest.l() != null) {
|
|
requestMessage.a(putObjectRequest.l());
|
|
}
|
|
if (putObjectRequest.d() != null) {
|
|
requestMessage.d().put("x-oss-callback", OSSUtils.a(putObjectRequest.d()));
|
|
}
|
|
if (putObjectRequest.e() != null) {
|
|
requestMessage.d().put("x-oss-callback-var", OSSUtils.a(putObjectRequest.e()));
|
|
}
|
|
OSSLog.a(" populateRequestMetadata ");
|
|
OSSUtils.a(requestMessage.d(), putObjectRequest.f());
|
|
OSSLog.a(" canonicalizeRequestMessage ");
|
|
a(requestMessage, putObjectRequest);
|
|
OSSLog.a(" ExecutionContext ");
|
|
ExecutionContext executionContext = new ExecutionContext(a(), putObjectRequest, this.c);
|
|
if (oSSCompletedCallback != null) {
|
|
executionContext.a(new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() { // from class: com.alibaba.sdk.android.oss.internal.InternalRequestOperation.4
|
|
@Override // com.alibaba.sdk.android.oss.callback.OSSCompletedCallback
|
|
public void a(PutObjectRequest putObjectRequest2, PutObjectResult putObjectResult) {
|
|
InternalRequestOperation.this.a(putObjectRequest2, putObjectResult, oSSCompletedCallback);
|
|
}
|
|
|
|
@Override // com.alibaba.sdk.android.oss.callback.OSSCompletedCallback
|
|
public void a(PutObjectRequest putObjectRequest2, ClientException clientException, ServiceException serviceException) {
|
|
oSSCompletedCallback.a(putObjectRequest2, clientException, serviceException);
|
|
}
|
|
});
|
|
}
|
|
if (putObjectRequest.i() != null) {
|
|
executionContext.a(putObjectRequest.i());
|
|
}
|
|
executionContext.a(putObjectRequest.h());
|
|
OSSRequestTask oSSRequestTask = new OSSRequestTask(requestMessage, new ResponseParsers.PutObjectResponseParser(), executionContext, this.e);
|
|
OSSLog.a(" call OSSRequestTask ");
|
|
return OSSAsyncTask.a(g.submit(oSSRequestTask), executionContext);
|
|
}
|
|
|
|
private boolean a(boolean z) {
|
|
String host;
|
|
if (!z || this.c == null) {
|
|
return false;
|
|
}
|
|
if (Build.VERSION.SDK_INT >= 14) {
|
|
host = System.getProperty("http.proxyHost");
|
|
} else {
|
|
host = android.net.Proxy.getHost(this.c);
|
|
}
|
|
String h = this.f.h();
|
|
if (!TextUtils.isEmpty(h)) {
|
|
host = h;
|
|
}
|
|
return TextUtils.isEmpty(host);
|
|
}
|
|
|
|
public OkHttpClient a() {
|
|
return this.b;
|
|
}
|
|
|
|
private void a(RequestMessage requestMessage, OSSRequest oSSRequest) {
|
|
Map<String, String> d = requestMessage.d();
|
|
if (d.get("Date") == null) {
|
|
d.put("Date", DateUtil.a());
|
|
}
|
|
if ((requestMessage.j() == HttpMethod.POST || requestMessage.j() == HttpMethod.PUT) && OSSUtils.c(d.get("Content-Type"))) {
|
|
d.put("Content-Type", OSSUtils.a((String) null, requestMessage.n(), requestMessage.k()));
|
|
}
|
|
requestMessage.c(a(this.f.m()));
|
|
requestMessage.a(this.d);
|
|
requestMessage.f(this.f.n());
|
|
requestMessage.b(this.f.l());
|
|
requestMessage.b(this.f.d());
|
|
requestMessage.d().put("User-Agent", VersionInfoUtils.a(this.f.c()));
|
|
boolean z = false;
|
|
if (requestMessage.d().containsKey("Range") || requestMessage.l().containsKey("x-oss-process")) {
|
|
requestMessage.a(false);
|
|
}
|
|
requestMessage.e(OSSUtils.a(this.a.getHost(), this.f.b()));
|
|
if (oSSRequest.a() == OSSRequest.CRC64Config.NULL) {
|
|
z = this.f.k();
|
|
} else if (oSSRequest.a() == OSSRequest.CRC64Config.YES) {
|
|
z = true;
|
|
}
|
|
requestMessage.a(z);
|
|
oSSRequest.a(z ? OSSRequest.CRC64Config.YES : OSSRequest.CRC64Config.NO);
|
|
}
|
|
|
|
private <Request extends OSSRequest, Result extends OSSResult> void a(Request request, Result result) throws ClientException {
|
|
if (request.a() == OSSRequest.CRC64Config.YES) {
|
|
try {
|
|
OSSUtils.a(result.a(), result.c(), result.b());
|
|
} catch (InconsistentException e) {
|
|
throw new ClientException(e.getMessage(), e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public <Request extends OSSRequest, Result extends OSSResult> void a(Request request, Result result, OSSCompletedCallback<Request, Result> oSSCompletedCallback) {
|
|
try {
|
|
a((InternalRequestOperation) request, (Request) result);
|
|
if (oSSCompletedCallback != null) {
|
|
oSSCompletedCallback.a(request, result);
|
|
}
|
|
} catch (ClientException e) {
|
|
if (oSSCompletedCallback != null) {
|
|
oSSCompletedCallback.a(request, e, null);
|
|
}
|
|
}
|
|
}
|
|
}
|