米游社.apk(点击下载) / StcSliceCompleteRequest.java
package io.rong.imlib.filetransfer;
import android.net.Uri;
import android.os.SystemClock;
import android.util.Xml;
import cn.rongcloud.wrapper.CrashConstant;
import com.tencent.imsdk.BaseConstants;
import io.rong.common.RLog;
import io.rong.common.fwlog.FwLog;
import io.rong.imlib.common.ExecutorFactory;
import io.rong.imlib.common.NetUtils;
import io.rong.imlib.filetransfer.FtConst;
import io.rong.imlib.filetransfer.upload.StcSliceUploadResult;
import io.rong.imlib.navigation.NavigationCacheHelper;
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xmlpull.v1.XmlSerializer;
import wz.h;
public class StcSliceCompleteRequest extends Request {
private static final String Boundary = "526f6e67436c6f756498";
private static final String TAG = Request.class.getSimpleName();
private List<StcSliceUploadResult> mList;
private SliceRequestCallBack mSliceRequestCallBack;
private String uploadId;
public StcSliceCompleteRequest(Configuration configuration, SliceRequestCallBack sliceRequestCallBack, List<StcSliceUploadResult> list) {
super(configuration, sliceRequestCallBack);
this.mSliceRequestCallBack = sliceRequestCallBack;
this.mList = list;
if (list != null && !list.isEmpty()) {
this.uploadId = this.mList.get(0).getUploadId();
}
}
private String getUrl(InputStream inputStream) throws Exception {
SAXParser newSAXParser = SAXParserFactory.newInstance().newSAXParser();
SliceEndUploadResultParser sliceEndUploadResultParser = new SliceEndUploadResultParser();
newSAXParser.parse(inputStream, sliceEndUploadResultParser);
return sliceEndUploadResultParser.getUrl();
}
private void setXml(List<StcSliceUploadResult> list, OutputStream outputStream) throws Exception {
XmlSerializer newSerializer = Xml.newSerializer();
newSerializer.setOutput(outputStream, "utf-8");
newSerializer.startDocument("utf-8", Boolean.TRUE);
newSerializer.startTag(null, "CompleteMultipartUpload");
newSerializer.attribute(null, h.a.f155981g, "http://s3.amazonaws.com/doc/2006-03-01/");
for (StcSliceUploadResult stcSliceUploadResult : list) {
newSerializer.startTag(null, "Part");
newSerializer.startTag(null, "ETag");
newSerializer.text(stcSliceUploadResult.getETag());
newSerializer.endTag(null, "ETag");
newSerializer.startTag(null, "PartNumber");
newSerializer.text(String.valueOf(stcSliceUploadResult.getPartNumber()));
newSerializer.endTag(null, "PartNumber");
newSerializer.endTag(null, "Part");
}
newSerializer.endTag(null, "CompleteMultipartUpload");
newSerializer.endDocument();
outputStream.flush();
}
@Override // io.rong.imlib.filetransfer.Request
public boolean enableEndBoundary() {
return false;
}
@Override // io.rong.imlib.filetransfer.Request
public String getBoundary() {
return Boundary;
}
@Override // io.rong.imlib.filetransfer.Request
public String getContentType() {
return "application/xml";
}
@Override // io.rong.imlib.filetransfer.Request
public String getFormData() {
return "";
}
@Override // io.rong.imlib.filetransfer.Request
public FtConst.MimeType getMimeType() {
return this.mimeType;
}
public String getUploadId() {
return this.uploadId;
}
@Override // io.rong.imlib.filetransfer.Request
public String getUploadPlatformTag() {
return "SS3";
}
@Override // io.rong.imlib.filetransfer.Request
public String getUploadedUrl(String str) {
return null;
}
@Override // io.rong.imlib.filetransfer.Request
public void headers(HttpURLConnection httpURLConnection) {
httpURLConnection.setRequestProperty("Authorization", this.stcAuthorization);
httpURLConnection.setRequestProperty("x-amz-content-sha256", this.stcContentSha256);
httpURLConnection.setRequestProperty("x-amz-date", this.stcDate);
}
@Override // io.rong.imlib.filetransfer.Request
public void sendRequest() {
DataOutputStream dataOutputStream;
Throwable th2;
Exception e10;
String str = TAG;
RLog.d(str, "completeRequest auth start");
if (!this.requestCallBack.doAuth(this)) {
this.requestCallBack.onError(this, BaseConstants.ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID);
return;
}
RLog.d(str, "completeRequest auth finish");
BufferedInputStream bufferedInputStream = null;
try {
if (this.method.equals("POST")) {
FwLog.write(3, 1, FwLog.LogTag.L_MEDIA_UPLOAD_T.getTag(), "id|type", this.uploadId, getUploadPlatformTag());
long elapsedRealtime = SystemClock.elapsedRealtime();
HttpURLConnection createURLConnection = NetUtils.createURLConnection(this.serverIp);
this.conn = createURLConnection;
createURLConnection.setDoOutput(true);
this.conn.setDoInput(true);
this.conn.setUseCaches(false);
this.conn.setRequestMethod(this.method);
this.conn.setConnectTimeout(120000);
headers(this.conn);
this.conn.setRequestProperty("Content-Type", getContentType());
this.conn.connect();
dataOutputStream = new DataOutputStream(this.conn.getOutputStream());
try {
setXml(this.mList, dataOutputStream);
final int responseCode = this.conn.getResponseCode();
io.rong.common.rlog.RLog.d(str, "upload end finish,responseCode:" + responseCode);
BufferedInputStream bufferedInputStream2 = new BufferedInputStream(this.conn.getInputStream());
try {
FwLog.write(3, 1, FwLog.LogTag.L_MEDIA_UPLOAD_R.getTag(), "id|type|code", this.uploadId, getUploadPlatformTag(), Integer.valueOf(responseCode));
final long elapsedRealtime2 = SystemClock.elapsedRealtime() - elapsedRealtime;
final String host = Uri.parse(this.serverIp).getHost();
if (responseCode >= 200) {
if (responseCode < 300) {
ExecutorFactory.getInstance().PriorityExecutor().execute(new Runnable() {
/* class io.rong.imlib.filetransfer.StcSliceCompleteRequest.AnonymousClass1 */
public void run() {
String queryRequestIP = NavigationCacheHelper.queryRequestIP(host);
FwLog.write(-1, 1, FwLog.LogTag.L_MEDIA_STATISTICS_S.getTag(), "id|code|type|size|duration|host|ip", StcSliceCompleteRequest.this.uploadId, Integer.valueOf(responseCode), StcSliceCompleteRequest.this.getUploadPlatformTag(), Long.valueOf(StcSliceCompleteRequest.this.fileLength), Long.valueOf(elapsedRealtime2), host, queryRequestIP);
}
});
RLog.d(str, "completeRequest request finish");
this.requestCallBack.onComplete(getUrl(bufferedInputStream2));
bufferedInputStream = bufferedInputStream2;
}
}
RLog.e(str, "completeRequest responseCode error:" + responseCode);
FwLog.write(-1, 1, FwLog.LogTag.L_MEDIA_STATISTICS_S.getTag(), "id|code|type|host", this.uploadId, Integer.valueOf(responseCode), getUploadPlatformTag(), host);
this.requestCallBack.onError(this, responseCode);
bufferedInputStream = bufferedInputStream2;
} catch (Exception e11) {
e10 = e11;
bufferedInputStream = bufferedInputStream2;
try {
this.requestCallBack.onError(this, BaseConstants.ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID);
FwLog.write(2, 1, FwLog.LogTag.L_MEDIA_S.getTag(), CrashConstant.CRASH_STACK_KEY, FwLog.stackToString(e10));
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
} catch (Throwable th3) {
th2 = th3;
}
} catch (Throwable th4) {
th2 = th4;
bufferedInputStream = bufferedInputStream2;
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
throw th2;
}
} catch (Exception e12) {
e10 = e12;
this.requestCallBack.onError(this, BaseConstants.ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID);
FwLog.write(2, 1, FwLog.LogTag.L_MEDIA_S.getTag(), CrashConstant.CRASH_STACK_KEY, FwLog.stackToString(e10));
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
}
} else {
dataOutputStream = null;
}
} catch (Exception e13) {
e10 = e13;
dataOutputStream = null;
this.requestCallBack.onError(this, BaseConstants.ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID);
FwLog.write(2, 1, FwLog.LogTag.L_MEDIA_S.getTag(), CrashConstant.CRASH_STACK_KEY, FwLog.stackToString(e10));
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
} catch (Throwable th5) {
th2 = th5;
dataOutputStream = null;
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
throw th2;
}
Request.closeInputStream(bufferedInputStream);
Request.closeOutputStream(dataOutputStream);
disconnect(this.conn);
}
}