Initial commit
This commit is contained in:
11
sources/com/alibaba/sdk/android/oss/common/HttpMethod.java
Normal file
11
sources/com/alibaba/sdk/android/oss/common/HttpMethod.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package com.alibaba.sdk.android.oss.common;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public enum HttpMethod {
|
||||
DELETE,
|
||||
GET,
|
||||
HEAD,
|
||||
POST,
|
||||
PUT,
|
||||
OPTIONS
|
||||
}
|
@@ -0,0 +1,64 @@
|
||||
package com.alibaba.sdk.android.oss.common;
|
||||
|
||||
import com.ubt.jimu.base.mvp.SingleClickListener;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.RejectedExecutionHandler;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class LogThreadPoolManager {
|
||||
private static LogThreadPoolManager f = new LogThreadPoolManager();
|
||||
private final Queue<Runnable> a = new LinkedList();
|
||||
private final RejectedExecutionHandler b = new RejectedExecutionHandler() { // from class: com.alibaba.sdk.android.oss.common.LogThreadPoolManager.1
|
||||
@Override // java.util.concurrent.RejectedExecutionHandler
|
||||
public void rejectedExecution(Runnable runnable, ThreadPoolExecutor threadPoolExecutor) {
|
||||
if (LogThreadPoolManager.this.a.size() >= 200) {
|
||||
LogThreadPoolManager.this.a.poll();
|
||||
}
|
||||
LogThreadPoolManager.this.a.offer(runnable);
|
||||
}
|
||||
};
|
||||
private final ScheduledExecutorService c = Executors.newScheduledThreadPool(1);
|
||||
private final ThreadPoolExecutor d = new ThreadPoolExecutor(1, 1, 5000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue(SingleClickListener.FAST_CLICK_DELAY_TIME), new ThreadFactory(this) { // from class: com.alibaba.sdk.android.oss.common.LogThreadPoolManager.2
|
||||
@Override // java.util.concurrent.ThreadFactory
|
||||
public Thread newThread(Runnable runnable) {
|
||||
return new Thread(runnable, "oss-android-log-thread");
|
||||
}
|
||||
}, this.b);
|
||||
private final Runnable e = new Runnable() { // from class: com.alibaba.sdk.android.oss.common.LogThreadPoolManager.3
|
||||
@Override // java.lang.Runnable
|
||||
public void run() {
|
||||
if (LogThreadPoolManager.this.a()) {
|
||||
LogThreadPoolManager.this.d.execute((Runnable) LogThreadPoolManager.this.a.poll());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private LogThreadPoolManager() {
|
||||
this.c.scheduleAtFixedRate(this.e, 0L, 1000L, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public boolean a() {
|
||||
return !this.a.isEmpty();
|
||||
}
|
||||
|
||||
public static LogThreadPoolManager b() {
|
||||
if (f == null) {
|
||||
f = new LogThreadPoolManager();
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
public void a(Runnable runnable) {
|
||||
if (runnable != null) {
|
||||
this.d.execute(runnable);
|
||||
}
|
||||
}
|
||||
}
|
10
sources/com/alibaba/sdk/android/oss/common/OSSConstants.java
Normal file
10
sources/com/alibaba/sdk/android/oss/common/OSSConstants.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.alibaba.sdk.android.oss.common;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public final class OSSConstants {
|
||||
public static final String[] a = {"aliyuncs.com", "aliyun-inc.com", "aliyun.com"};
|
||||
|
||||
static {
|
||||
new String[]{"aliyuncs.com", "aliyun-inc.com", "aliyun.com"};
|
||||
}
|
||||
}
|
77
sources/com/alibaba/sdk/android/oss/common/OSSLog.java
Normal file
77
sources/com/alibaba/sdk/android/oss/common/OSSLog.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package com.alibaba.sdk.android.oss.common;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSLog {
|
||||
private static boolean a = false;
|
||||
|
||||
public static void a() {
|
||||
a = true;
|
||||
}
|
||||
|
||||
public static boolean b() {
|
||||
return a;
|
||||
}
|
||||
|
||||
public static void c(String str) {
|
||||
d(str, true);
|
||||
}
|
||||
|
||||
public static void d(String str, boolean z) {
|
||||
if (a) {
|
||||
Log.i("OSS-Android-SDK", "[INFO]: ".concat(str));
|
||||
a(str, z);
|
||||
}
|
||||
}
|
||||
|
||||
public static void a(String str) {
|
||||
a("OSS-Android-SDK", str);
|
||||
}
|
||||
|
||||
public static void b(String str, boolean z) {
|
||||
a("OSS-Android-SDK", str, z);
|
||||
}
|
||||
|
||||
public static void c(String str, boolean z) {
|
||||
b("OSS-Android-SDK", str, z);
|
||||
}
|
||||
|
||||
public static void a(String str, String str2) {
|
||||
a(str, str2, true);
|
||||
}
|
||||
|
||||
public static void b(String str) {
|
||||
b("OSS-Android-SDK", str);
|
||||
}
|
||||
|
||||
public static void a(String str, String str2, boolean z) {
|
||||
if (a) {
|
||||
Log.d(str, "[Debug]: ".concat(str2));
|
||||
a(str2, z);
|
||||
}
|
||||
}
|
||||
|
||||
public static void b(String str, String str2) {
|
||||
a(str, str2, true);
|
||||
}
|
||||
|
||||
public static void b(String str, String str2, boolean z) {
|
||||
if (a) {
|
||||
Log.d(str, "[Error]: ".concat(str2));
|
||||
a(str2, z);
|
||||
}
|
||||
}
|
||||
|
||||
public static void a(Throwable th) {
|
||||
if (a) {
|
||||
OSSLogToFileUtils.f().a(th);
|
||||
}
|
||||
}
|
||||
|
||||
private static void a(String str, boolean z) {
|
||||
if (z) {
|
||||
OSSLogToFileUtils.f().a(str);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,207 @@
|
||||
package com.alibaba.sdk.android.oss.common;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
import android.os.StatFs;
|
||||
import com.alibaba.sdk.android.oss.ClientConfiguration;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Writer;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSLogToFileUtils {
|
||||
private static Context c;
|
||||
private static OSSLogToFileUtils d;
|
||||
private static File e;
|
||||
private boolean a = true;
|
||||
private static LogThreadPoolManager b = LogThreadPoolManager.b();
|
||||
private static SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
private static long g = 5242880;
|
||||
|
||||
private static class WriteCall implements Runnable {
|
||||
private Object a;
|
||||
|
||||
public WriteCall(Object obj) {
|
||||
this.a = obj;
|
||||
}
|
||||
|
||||
private PrintWriter a(PrintWriter printWriter) {
|
||||
printWriter.println("crash_time:" + OSSLogToFileUtils.f.format(new Date()));
|
||||
((Throwable) this.a).printStackTrace(printWriter);
|
||||
return printWriter;
|
||||
}
|
||||
|
||||
@Override // java.lang.Runnable
|
||||
public void run() {
|
||||
if (OSSLogToFileUtils.e != null) {
|
||||
OSSLogToFileUtils.f();
|
||||
if (OSSLogToFileUtils.c(OSSLogToFileUtils.e) > OSSLogToFileUtils.g) {
|
||||
OSSLogToFileUtils.f().a();
|
||||
}
|
||||
try {
|
||||
PrintWriter printWriter = new PrintWriter((Writer) new FileWriter(OSSLogToFileUtils.e, true), true);
|
||||
if (this.a instanceof Throwable) {
|
||||
a(printWriter);
|
||||
} else {
|
||||
printWriter.println(OSSLogToFileUtils.f().a((StackTraceElement[]) null) + " - " + this.a.toString());
|
||||
}
|
||||
printWriter.println("------>end of log");
|
||||
printWriter.println();
|
||||
printWriter.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private OSSLogToFileUtils() {
|
||||
}
|
||||
|
||||
public static OSSLogToFileUtils f() {
|
||||
if (d == null) {
|
||||
synchronized (OSSLogToFileUtils.class) {
|
||||
if (d == null) {
|
||||
d = new OSSLogToFileUtils();
|
||||
}
|
||||
}
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public File g() {
|
||||
File file;
|
||||
File file2 = null;
|
||||
boolean z = false;
|
||||
try {
|
||||
boolean z2 = true;
|
||||
if (this.a && Environment.getExternalStorageState().equals("mounted") && Build.VERSION.SDK_INT < 29) {
|
||||
if (h() <= g / 1024) {
|
||||
z2 = false;
|
||||
}
|
||||
file = new File(Environment.getExternalStorageDirectory().getPath() + File.separator + "OSSLog");
|
||||
} else {
|
||||
if (i() <= g / 1024) {
|
||||
z2 = false;
|
||||
}
|
||||
file = new File(c.getFilesDir().getPath() + File.separator + "OSSLog");
|
||||
}
|
||||
z = z2;
|
||||
} catch (Exception unused) {
|
||||
file = null;
|
||||
}
|
||||
if (z) {
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
file2 = new File(file.getPath() + "/logs.csv");
|
||||
if (!file2.exists()) {
|
||||
a(file2);
|
||||
}
|
||||
}
|
||||
return file2;
|
||||
}
|
||||
|
||||
private long h() {
|
||||
long j = 0;
|
||||
if ("mounted".equals(Environment.getExternalStorageState())) {
|
||||
try {
|
||||
j = (Build.VERSION.SDK_INT >= 18 ? new StatFs(Environment.getExternalStorageDirectory().getPath()).getAvailableBlocksLong() : r3.getAvailableBlocks()) * r3.getBlockSize();
|
||||
} catch (Exception unused) {
|
||||
}
|
||||
}
|
||||
OSSLog.b("sd卡存储空间:" + String.valueOf(j) + "kb", false);
|
||||
return j;
|
||||
}
|
||||
|
||||
private long i() {
|
||||
long j;
|
||||
try {
|
||||
j = ((Build.VERSION.SDK_INT >= 18 ? new StatFs(Environment.getDataDirectory().getPath()).getAvailableBlocksLong() : r1.getAvailableBlocks()) * r1.getBlockSize()) / 1024;
|
||||
} catch (Exception unused) {
|
||||
j = 0;
|
||||
}
|
||||
OSSLog.b("内部存储空间:" + String.valueOf(j) + "kb", false);
|
||||
return j;
|
||||
}
|
||||
|
||||
public static long c(File file) {
|
||||
if (file == null || !file.exists()) {
|
||||
return 0L;
|
||||
}
|
||||
return file.length();
|
||||
}
|
||||
|
||||
public static void a(Context context, ClientConfiguration clientConfiguration) {
|
||||
File file;
|
||||
OSSLog.b("init ...", false);
|
||||
if (clientConfiguration != null) {
|
||||
g = clientConfiguration.g();
|
||||
}
|
||||
if (c != null && d != null && (file = e) != null && file.exists()) {
|
||||
OSSLog.b("LogToFileUtils has been init ...", false);
|
||||
return;
|
||||
}
|
||||
c = context.getApplicationContext();
|
||||
d = f();
|
||||
b.a(new Runnable() { // from class: com.alibaba.sdk.android.oss.common.OSSLogToFileUtils.1
|
||||
@Override // java.lang.Runnable
|
||||
public void run() {
|
||||
File unused = OSSLogToFileUtils.e = OSSLogToFileUtils.d.g();
|
||||
if (OSSLogToFileUtils.e != null) {
|
||||
OSSLog.d("LogFilePath is: " + OSSLogToFileUtils.e.getPath(), false);
|
||||
if (OSSLogToFileUtils.g < OSSLogToFileUtils.c(OSSLogToFileUtils.e)) {
|
||||
OSSLog.d("init reset log file", false);
|
||||
OSSLogToFileUtils.d.a();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void a() {
|
||||
OSSLog.b("Reset Log File ... ", false);
|
||||
if (!e.getParentFile().exists()) {
|
||||
OSSLog.b("Reset Log make File dir ... ", false);
|
||||
e.getParentFile().mkdir();
|
||||
}
|
||||
File file = new File(e.getParent() + "/logs.csv");
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
a(file);
|
||||
}
|
||||
|
||||
public void a(File file) {
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (Exception e2) {
|
||||
OSSLog.c("Create log file failure !!! " + e2.toString(), false);
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public String a(StackTraceElement[] stackTraceElementArr) {
|
||||
if (stackTraceElementArr != null) {
|
||||
return null;
|
||||
}
|
||||
return "[" + f.format(new Date()) + "]";
|
||||
}
|
||||
|
||||
public synchronized void a(Object obj) {
|
||||
if (OSSLog.b()) {
|
||||
if (c != null && d != null && e != null) {
|
||||
if (!e.exists()) {
|
||||
a();
|
||||
}
|
||||
b.a(new WriteCall(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
import com.alibaba.sdk.android.oss.common.OSSLog;
|
||||
import com.alibaba.sdk.android.oss.common.utils.BinaryUtil;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class HmacSHA1Signature {
|
||||
private static final Object a = new Object();
|
||||
private static Mac b;
|
||||
|
||||
public String a() {
|
||||
return "HmacSHA1";
|
||||
}
|
||||
|
||||
public String a(String str, String str2) {
|
||||
OSSLog.b(a(), false);
|
||||
OSSLog.b(b(), false);
|
||||
try {
|
||||
OSSLog.a("sign start");
|
||||
byte[] a2 = a(str.getBytes("UTF-8"), str2.getBytes("UTF-8"));
|
||||
OSSLog.a("base64 start");
|
||||
return BinaryUtil.a(a2);
|
||||
} catch (UnsupportedEncodingException unused) {
|
||||
throw new RuntimeException("Unsupported algorithm: UTF-8");
|
||||
}
|
||||
}
|
||||
|
||||
public String b() {
|
||||
return "1";
|
||||
}
|
||||
|
||||
private byte[] a(byte[] bArr, byte[] bArr2) {
|
||||
Mac mac;
|
||||
try {
|
||||
if (b == null) {
|
||||
synchronized (a) {
|
||||
if (b == null) {
|
||||
b = Mac.getInstance(a());
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
mac = (Mac) b.clone();
|
||||
} catch (CloneNotSupportedException unused) {
|
||||
mac = Mac.getInstance(a());
|
||||
}
|
||||
mac.init(new SecretKeySpec(bArr, a()));
|
||||
return mac.doFinal(bArr2);
|
||||
} catch (InvalidKeyException unused2) {
|
||||
throw new RuntimeException("key must not be null");
|
||||
} catch (NoSuchAlgorithmException unused3) {
|
||||
throw new RuntimeException("Unsupported algorithm: HmacSHA1");
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
import com.alibaba.sdk.android.oss.ClientException;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public interface OSSCredentialProvider {
|
||||
OSSFederationToken a() throws ClientException;
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public abstract class OSSCustomSignerCredentialProvider implements OSSCredentialProvider {
|
||||
@Override // com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider
|
||||
public OSSFederationToken a() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract String a(String str);
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
import com.alibaba.sdk.android.oss.ClientException;
|
||||
import com.alibaba.sdk.android.oss.common.OSSLog;
|
||||
import com.alibaba.sdk.android.oss.common.utils.DateUtil;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public abstract class OSSFederationCredentialProvider implements OSSCredentialProvider {
|
||||
private volatile OSSFederationToken a;
|
||||
|
||||
@Override // com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider
|
||||
public abstract OSSFederationToken a() throws ClientException;
|
||||
|
||||
public synchronized OSSFederationToken b() throws ClientException {
|
||||
if (this.a == null || DateUtil.b() / 1000 > this.a.a() - 300) {
|
||||
if (this.a != null) {
|
||||
OSSLog.a("token expired! current time: " + (DateUtil.b() / 1000) + " token expired: " + this.a.a());
|
||||
}
|
||||
this.a = a();
|
||||
}
|
||||
return this.a;
|
||||
}
|
||||
}
|
@@ -0,0 +1,52 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSFederationToken {
|
||||
private String a;
|
||||
private String b;
|
||||
private String c;
|
||||
private long d;
|
||||
|
||||
public OSSFederationToken(String str, String str2, String str3, long j) {
|
||||
b(str);
|
||||
c(str2);
|
||||
a(str3);
|
||||
a(j);
|
||||
}
|
||||
|
||||
public void a(String str) {
|
||||
this.c = str;
|
||||
}
|
||||
|
||||
public String b() {
|
||||
return this.c;
|
||||
}
|
||||
|
||||
public String c() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public String d() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "OSSFederationToken [tempAk=" + this.a + ", tempSk=" + this.b + ", securityToken=" + this.c + ", expiration=" + this.d + "]";
|
||||
}
|
||||
|
||||
public long a() {
|
||||
return this.d;
|
||||
}
|
||||
|
||||
public void b(String str) {
|
||||
this.a = str;
|
||||
}
|
||||
|
||||
public void c(String str) {
|
||||
this.b = str;
|
||||
}
|
||||
|
||||
public void a(long j) {
|
||||
this.d = j;
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
@Deprecated
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSPlainTextAKSKCredentialProvider implements OSSCredentialProvider {
|
||||
private String a;
|
||||
private String b;
|
||||
|
||||
@Override // com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider
|
||||
public OSSFederationToken a() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String b() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public String c() {
|
||||
return this.b;
|
||||
}
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package com.alibaba.sdk.android.oss.common.auth;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSStsTokenCredentialProvider implements OSSCredentialProvider {
|
||||
private String a;
|
||||
private String b;
|
||||
private String c;
|
||||
|
||||
public OSSStsTokenCredentialProvider(String str, String str2, String str3) {
|
||||
a(str.trim());
|
||||
b(str2.trim());
|
||||
c(str3.trim());
|
||||
}
|
||||
|
||||
public void a(String str) {
|
||||
this.a = str;
|
||||
}
|
||||
|
||||
public void b(String str) {
|
||||
this.b = str;
|
||||
}
|
||||
|
||||
public void c(String str) {
|
||||
this.c = str;
|
||||
}
|
||||
|
||||
@Override // com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider
|
||||
public OSSFederationToken a() {
|
||||
return new OSSFederationToken(this.a, this.b, this.c, Long.MAX_VALUE);
|
||||
}
|
||||
}
|
@@ -0,0 +1,10 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import android.util.Base64;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class BinaryUtil {
|
||||
public static String a(byte[] bArr) {
|
||||
return new String(Base64.encode(bArr, 0)).trim();
|
||||
}
|
||||
}
|
72
sources/com/alibaba/sdk/android/oss/common/utils/CRC64.java
Normal file
72
sources/com/alibaba/sdk/android/oss/common/utils/CRC64.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import com.ijm.dataencryption.de.DataDecryptTool;
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.zip.Checksum;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class CRC64 implements Checksum {
|
||||
private static final long[][] b = (long[][]) Array.newInstance((Class<?>) long.class, 8, DataDecryptTool.DECRYPT_ALL_FILE);
|
||||
private long a = 0;
|
||||
|
||||
static {
|
||||
for (int i = 0; i < 256; i++) {
|
||||
long j = i;
|
||||
for (int i2 = 0; i2 < 8; i2++) {
|
||||
j = (j & 1) == 1 ? (j >>> 1) ^ (-3932672073523589310L) : j >>> 1;
|
||||
}
|
||||
b[0][i] = j;
|
||||
}
|
||||
for (int i3 = 0; i3 < 256; i3++) {
|
||||
long j2 = b[0][i3];
|
||||
for (int i4 = 1; i4 < 8; i4++) {
|
||||
long[][] jArr = b;
|
||||
j2 = (j2 >>> 8) ^ jArr[0][(int) (255 & j2)];
|
||||
jArr[i4][i3] = j2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void a(byte[] bArr, int i) {
|
||||
update(bArr, 0, i);
|
||||
}
|
||||
|
||||
@Override // java.util.zip.Checksum
|
||||
public long getValue() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
@Override // java.util.zip.Checksum
|
||||
public void reset() {
|
||||
this.a = 0L;
|
||||
}
|
||||
|
||||
@Override // java.util.zip.Checksum
|
||||
public void update(int i) {
|
||||
byte[] bArr = {(byte) (i & 255)};
|
||||
a(bArr, bArr.length);
|
||||
}
|
||||
|
||||
@Override // java.util.zip.Checksum
|
||||
public void update(byte[] bArr, int i, int i2) {
|
||||
this.a = ~this.a;
|
||||
int i3 = i;
|
||||
int i4 = i2;
|
||||
while (i4 >= 8) {
|
||||
long[][] jArr = b;
|
||||
long[] jArr2 = jArr[7];
|
||||
long j = this.a;
|
||||
this.a = ((((((jArr[6][(int) ((bArr[i3 + 1] & 255) ^ ((j >>> 8) & 255))] ^ jArr2[(int) ((j & 255) ^ (bArr[i3] & 255))]) ^ jArr[5][(int) (((j >>> 16) & 255) ^ (bArr[i3 + 2] & 255))]) ^ jArr[4][(int) (((j >>> 24) & 255) ^ (bArr[i3 + 3] & 255))]) ^ jArr[3][(int) (((j >>> 32) & 255) ^ (bArr[i3 + 4] & 255))]) ^ jArr[2][(int) (((j >>> 40) & 255) ^ (bArr[i3 + 5] & 255))]) ^ jArr[1][(int) ((255 & (j >>> 48)) ^ (bArr[i3 + 6] & 255))]) ^ jArr[0][(int) ((j >>> 56) ^ (bArr[i3 + 7] & 255))];
|
||||
i3 += 8;
|
||||
i4 -= 8;
|
||||
}
|
||||
while (i4 > 0) {
|
||||
long[] jArr3 = b[0];
|
||||
long j2 = this.a;
|
||||
this.a = (j2 >>> 8) ^ jArr3[(int) ((bArr[i3] ^ j2) & 255)];
|
||||
i3++;
|
||||
i4--;
|
||||
}
|
||||
this.a = ~this.a;
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class CaseInsensitiveHashMap<k, v> extends HashMap<k, v> {
|
||||
@Override // java.util.HashMap, java.util.AbstractMap, java.util.Map
|
||||
public v get(Object obj) {
|
||||
if (obj == null || containsKey(obj) || !(obj instanceof String)) {
|
||||
return (v) super.get(obj);
|
||||
}
|
||||
String lowerCase = ((String) obj).toLowerCase();
|
||||
if (containsKey(lowerCase)) {
|
||||
return get(lowerCase);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.SimpleTimeZone;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class DateUtil {
|
||||
private static volatile long a;
|
||||
|
||||
public static String a(Date date) {
|
||||
return c().format(date);
|
||||
}
|
||||
|
||||
public static long b() {
|
||||
return System.currentTimeMillis() + a;
|
||||
}
|
||||
|
||||
private static DateFormat c() {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
|
||||
simpleDateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
|
||||
return simpleDateFormat;
|
||||
}
|
||||
|
||||
public static Date a(String str) throws ParseException {
|
||||
return c().parse(str);
|
||||
}
|
||||
|
||||
public static synchronized String a() {
|
||||
String a2;
|
||||
synchronized (DateUtil.class) {
|
||||
a2 = a(new Date(b()));
|
||||
}
|
||||
return a2;
|
||||
}
|
||||
|
||||
public static synchronized void a(long j) {
|
||||
synchronized (DateUtil.class) {
|
||||
a = j - System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class HttpUtil {
|
||||
public static String a(String str, String str2) {
|
||||
if (str == null) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
return URLEncoder.encode(str, str2).replace("+", "%20").replace("*", "%2A").replace("%7E", "~").replace("%2F", "/");
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("failed to encode url!", e);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,120 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import com.alibaba.sdk.android.oss.common.OSSLog;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class HttpdnsMini {
|
||||
private static HttpdnsMini c;
|
||||
private ConcurrentMap<String, HostObject> a = new ConcurrentHashMap();
|
||||
private ExecutorService b = Executors.newFixedThreadPool(5);
|
||||
|
||||
class HostObject {
|
||||
private String a;
|
||||
private String b;
|
||||
private long c;
|
||||
private long d;
|
||||
|
||||
HostObject(HttpdnsMini httpdnsMini) {
|
||||
}
|
||||
|
||||
public String a() {
|
||||
return this.a;
|
||||
}
|
||||
|
||||
public String b() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public long c() {
|
||||
return this.d;
|
||||
}
|
||||
|
||||
public long d() {
|
||||
return this.c;
|
||||
}
|
||||
|
||||
public boolean e() {
|
||||
return c() + this.c < System.currentTimeMillis() / 1000;
|
||||
}
|
||||
|
||||
public boolean f() {
|
||||
return (c() + this.c) + 600 > System.currentTimeMillis() / 1000;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "[hostName=" + a() + ", ip=" + this.b + ", ttl=" + d() + ", queryTime=" + this.d + "]";
|
||||
}
|
||||
|
||||
public void a(String str) {
|
||||
this.a = str;
|
||||
}
|
||||
|
||||
public void b(String str) {
|
||||
this.b = str;
|
||||
}
|
||||
|
||||
public void a(long j) {
|
||||
this.d = j;
|
||||
}
|
||||
|
||||
public void b(long j) {
|
||||
this.c = j;
|
||||
}
|
||||
}
|
||||
|
||||
class QueryHostTask implements Callable<String> {
|
||||
private String a;
|
||||
private boolean b = false;
|
||||
|
||||
public QueryHostTask(String str) {
|
||||
this.a = str;
|
||||
}
|
||||
|
||||
/* JADX WARN: Removed duplicated region for block: B:12:0x015f */
|
||||
/* JADX WARN: Removed duplicated region for block: B:15:0x0167 A[RETURN] */
|
||||
/* JADX WARN: Removed duplicated region for block: B:56:0x016b A[EXC_TOP_SPLITTER, SYNTHETIC] */
|
||||
@Override // java.util.concurrent.Callable
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
||||
*/
|
||||
public java.lang.String call() {
|
||||
/*
|
||||
Method dump skipped, instructions count: 372
|
||||
To view this dump change 'Code comments level' option to 'DEBUG'
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.alibaba.sdk.android.oss.common.utils.HttpdnsMini.QueryHostTask.call():java.lang.String");
|
||||
}
|
||||
}
|
||||
|
||||
private HttpdnsMini() {
|
||||
}
|
||||
|
||||
public static HttpdnsMini a() {
|
||||
if (c == null) {
|
||||
synchronized (HttpdnsMini.class) {
|
||||
if (c == null) {
|
||||
c = new HttpdnsMini();
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
public String a(String str) {
|
||||
HostObject hostObject = this.a.get(str);
|
||||
if (hostObject == null || hostObject.e()) {
|
||||
OSSLog.a("[httpdnsmini] - refresh host: " + str);
|
||||
this.b.submit(new QueryHostTask(str));
|
||||
}
|
||||
if (hostObject == null || !hostObject.f()) {
|
||||
return null;
|
||||
}
|
||||
return hostObject.b();
|
||||
}
|
||||
}
|
321
sources/com/alibaba/sdk/android/oss/common/utils/OSSUtils.java
Normal file
321
sources/com/alibaba/sdk/android/oss/common/utils/OSSUtils.java
Normal file
@@ -0,0 +1,321 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.InetAddresses;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
import android.webkit.MimeTypeMap;
|
||||
import com.alibaba.sdk.android.oss.common.OSSConstants;
|
||||
import com.alibaba.sdk.android.oss.common.OSSLog;
|
||||
import com.alibaba.sdk.android.oss.common.auth.HmacSHA1Signature;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSCustomSignerCredentialProvider;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSFederationCredentialProvider;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSFederationToken;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSPlainTextAKSKCredentialProvider;
|
||||
import com.alibaba.sdk.android.oss.common.auth.OSSStsTokenCredentialProvider;
|
||||
import com.alibaba.sdk.android.oss.exception.InconsistentException;
|
||||
import com.alibaba.sdk.android.oss.internal.RequestMessage;
|
||||
import com.alibaba.sdk.android.oss.model.CopyObjectRequest;
|
||||
import com.alibaba.sdk.android.oss.model.OSSRequest;
|
||||
import com.alibaba.sdk.android.oss.model.ObjectMetadata;
|
||||
import com.ubt.jimu.course.view.fragment.JimuMissionListFragment;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import org.json.JSONObject;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class OSSUtils {
|
||||
private static final List<String> a = Arrays.asList("bucketInfo", "acl", "uploads", "location", "cors", "logging", "website", "referer", "lifecycle", "delete", "append", "uploadId", "partNumber", "security-token", JimuMissionListFragment.POSITION, "response-cache-control", "response-content-disposition", "response-content-encoding", "response-content-language", "response-content-type", "response-expires", "x-oss-process", "sequential", "symlink", "restore");
|
||||
|
||||
public static void a(Map<String, String> map, ObjectMetadata objectMetadata) {
|
||||
if (objectMetadata == null) {
|
||||
return;
|
||||
}
|
||||
objectMetadata.a();
|
||||
throw null;
|
||||
}
|
||||
|
||||
public static boolean a(OSSRequest oSSRequest) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static String b(String str, String str2, String str3) {
|
||||
try {
|
||||
return "OSS " + str + ":" + new HmacSHA1Signature().a(str2, str3).trim();
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Compute signature failed!", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean b(OSSRequest oSSRequest) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean c(String str) {
|
||||
return TextUtils.isEmpty(str);
|
||||
}
|
||||
|
||||
public static boolean d(String str) {
|
||||
if (TextUtils.isEmpty(str)) {
|
||||
return false;
|
||||
}
|
||||
for (String str2 : OSSConstants.a) {
|
||||
if (str.toLowerCase().endsWith(str2)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean e(String str) throws Exception {
|
||||
if (str == null) {
|
||||
throw new Exception("host is null");
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= 29) {
|
||||
return InetAddresses.isNumericAddress(str);
|
||||
}
|
||||
try {
|
||||
return ((Boolean) Class.forName("java.net.InetAddress").getMethod("isNumeric", String.class).invoke(null, str)).booleanValue();
|
||||
} catch (ClassNotFoundException | IllegalAccessException | IllegalArgumentException | NoSuchMethodException | InvocationTargetException unused) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean f(String str) {
|
||||
if (str == null) {
|
||||
return false;
|
||||
}
|
||||
return str.matches("^[a-z0-9][a-z0-9\\-]{1,61}[a-z0-9]$");
|
||||
}
|
||||
|
||||
public static boolean g(String str) {
|
||||
if (str != null && str.length() > 0 && str.length() <= 1023) {
|
||||
try {
|
||||
str.getBytes("utf-8");
|
||||
char[] charArray = str.toCharArray();
|
||||
char c = charArray[0];
|
||||
if (c != '/' && c != '\\') {
|
||||
for (char c2 : charArray) {
|
||||
if (c2 != '\t' && c2 < ' ') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} catch (UnsupportedEncodingException unused) {
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String a(RequestMessage requestMessage) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(requestMessage.j().toString() + "\n");
|
||||
Map<String, String> d = requestMessage.d();
|
||||
TreeMap treeMap = new TreeMap();
|
||||
if (d != null) {
|
||||
for (Map.Entry<String, String> entry : d.entrySet()) {
|
||||
if (entry.getKey() != null) {
|
||||
String lowerCase = entry.getKey().toLowerCase();
|
||||
if (lowerCase.equals("Content-Type".toLowerCase()) || lowerCase.equals("Content-MD5".toLowerCase()) || lowerCase.equals("Date".toLowerCase()) || lowerCase.startsWith("x-oss-")) {
|
||||
treeMap.put(lowerCase, entry.getValue().trim());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!treeMap.containsKey("Content-Type".toLowerCase())) {
|
||||
treeMap.put("Content-Type".toLowerCase(), "");
|
||||
}
|
||||
if (!treeMap.containsKey("Content-MD5".toLowerCase())) {
|
||||
treeMap.put("Content-MD5".toLowerCase(), "");
|
||||
}
|
||||
for (Map.Entry entry2 : treeMap.entrySet()) {
|
||||
String str = (String) entry2.getKey();
|
||||
Object value = entry2.getValue();
|
||||
if (str.startsWith("x-oss-")) {
|
||||
sb.append(str);
|
||||
sb.append(':');
|
||||
sb.append(value);
|
||||
} else {
|
||||
sb.append(value);
|
||||
}
|
||||
sb.append("\n");
|
||||
}
|
||||
sb.append(a(requestMessage.g(), requestMessage.k(), requestMessage.l()));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void b(String str) {
|
||||
if (!g(str)) {
|
||||
throw new IllegalArgumentException("The object key is invalid. \nAn object name should be: \n1) between 1 - 1023 bytes long when encoded as UTF-8 \n2) cannot contain LF or CR or unsupported chars in XML1.0, \n3) cannot begin with \"/\" or \"\\\".");
|
||||
}
|
||||
}
|
||||
|
||||
public static void b(RequestMessage requestMessage) throws Exception {
|
||||
String b;
|
||||
OSSLog.a("signRequest start");
|
||||
if (requestMessage.p()) {
|
||||
if (requestMessage.h() != null) {
|
||||
OSSCredentialProvider h = requestMessage.h();
|
||||
OSSFederationToken oSSFederationToken = null;
|
||||
boolean z = h instanceof OSSFederationCredentialProvider;
|
||||
if (z) {
|
||||
oSSFederationToken = ((OSSFederationCredentialProvider) h).b();
|
||||
if (oSSFederationToken != null) {
|
||||
requestMessage.d().put("x-oss-security-token", oSSFederationToken.b());
|
||||
} else {
|
||||
OSSLog.b("Can't get a federation token");
|
||||
throw new IOException("Can't get a federation token");
|
||||
}
|
||||
} else if (h instanceof OSSStsTokenCredentialProvider) {
|
||||
oSSFederationToken = h.a();
|
||||
requestMessage.d().put("x-oss-security-token", oSSFederationToken.b());
|
||||
}
|
||||
String a2 = a(requestMessage);
|
||||
OSSLog.a("get contentToSign");
|
||||
if (!z && !(h instanceof OSSStsTokenCredentialProvider)) {
|
||||
if (h instanceof OSSPlainTextAKSKCredentialProvider) {
|
||||
OSSPlainTextAKSKCredentialProvider oSSPlainTextAKSKCredentialProvider = (OSSPlainTextAKSKCredentialProvider) h;
|
||||
b = b(oSSPlainTextAKSKCredentialProvider.b(), oSSPlainTextAKSKCredentialProvider.c(), a2);
|
||||
} else {
|
||||
b = h instanceof OSSCustomSignerCredentialProvider ? ((OSSCustomSignerCredentialProvider) h).a(a2) : "---initValue---";
|
||||
}
|
||||
} else {
|
||||
b = b(oSSFederationToken.c(), oSSFederationToken.d(), a2);
|
||||
}
|
||||
OSSLog.b("signed content: " + a2 + " \n --------- signature: " + b, false);
|
||||
OSSLog.a("get signature");
|
||||
requestMessage.d().put("Authorization", b);
|
||||
return;
|
||||
}
|
||||
throw new IllegalStateException("当前CredentialProvider为空!!!\n1. 请检查您是否在初始化OSSService时设置CredentialProvider;\n2. 如果您bucket为公共权限,请确认获取到Bucket后已经调用Bucket中接口声明ACL;");
|
||||
}
|
||||
}
|
||||
|
||||
public static String a(String str, String str2, Map<String, String> map) {
|
||||
String str3 = "/";
|
||||
if (str != null || str2 != null) {
|
||||
if (str2 == null) {
|
||||
str3 = "/" + str + "/";
|
||||
} else {
|
||||
str3 = "/" + str + "/" + str2;
|
||||
}
|
||||
}
|
||||
return a(str3, map);
|
||||
}
|
||||
|
||||
public static String a(String str, Map<String, String> map) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(str);
|
||||
if (map != null) {
|
||||
String[] strArr = (String[]) map.keySet().toArray(new String[map.size()]);
|
||||
Arrays.sort(strArr);
|
||||
char c = '?';
|
||||
for (String str2 : strArr) {
|
||||
if (a.contains(str2)) {
|
||||
sb.append(c);
|
||||
sb.append(str2);
|
||||
String str3 = map.get(str2);
|
||||
if (!c(str3)) {
|
||||
sb.append("=");
|
||||
sb.append(str3);
|
||||
}
|
||||
c = '&';
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String a(Map<String, String> map, String str) {
|
||||
if (map == null || map.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean z = true;
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
String value = entry.getValue();
|
||||
if (!z) {
|
||||
sb.append("&");
|
||||
}
|
||||
sb.append(HttpUtil.a(key, str));
|
||||
if (!c(value)) {
|
||||
sb.append("=");
|
||||
sb.append(HttpUtil.a(value, str));
|
||||
}
|
||||
z = false;
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String a(Map<String, String> map) {
|
||||
return Base64.encodeToString(new JSONObject(map).toString().getBytes(), 2);
|
||||
}
|
||||
|
||||
public static boolean a(String str, List<String> list) {
|
||||
Iterator<String> it = list.iterator();
|
||||
while (it.hasNext()) {
|
||||
if (str.endsWith(it.next().toLowerCase())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void a(boolean z, String str) {
|
||||
if (!z) {
|
||||
throw new IllegalArgumentException(str);
|
||||
}
|
||||
}
|
||||
|
||||
public static void a(String str) {
|
||||
if (!f(str)) {
|
||||
throw new IllegalArgumentException("The bucket name is invalid. \nA bucket name must: \n1) be comprised of lower-case characters, numbers or dash(-); \n2) start with lower case or numbers; \n3) be between 3-63 characters long. ");
|
||||
}
|
||||
}
|
||||
|
||||
public static void a(OSSRequest oSSRequest, RequestMessage requestMessage) {
|
||||
if (a(oSSRequest)) {
|
||||
a(requestMessage.g());
|
||||
}
|
||||
if (b(oSSRequest)) {
|
||||
b(requestMessage.k());
|
||||
}
|
||||
if (oSSRequest instanceof CopyObjectRequest) {
|
||||
b(((CopyObjectRequest) oSSRequest).c());
|
||||
}
|
||||
}
|
||||
|
||||
public static String a(String str, String str2, String str3) {
|
||||
String mimeTypeFromExtension;
|
||||
String mimeTypeFromExtension2;
|
||||
if (str != null) {
|
||||
return str;
|
||||
}
|
||||
MimeTypeMap singleton = MimeTypeMap.getSingleton();
|
||||
return (str2 == null || (mimeTypeFromExtension2 = singleton.getMimeTypeFromExtension(str2.substring(str2.lastIndexOf(46) + 1))) == null) ? (str3 == null || (mimeTypeFromExtension = singleton.getMimeTypeFromExtension(str3.substring(str3.lastIndexOf(46) + 1))) == null) ? "application/octet-stream" : mimeTypeFromExtension : mimeTypeFromExtension2;
|
||||
}
|
||||
|
||||
public static String a(Context context) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("=====[device info]=====\n");
|
||||
sb.append("[INFO]: android_version:" + Build.VERSION.RELEASE + "\n");
|
||||
sb.append("[INFO]: mobile_model:" + Build.MODEL + "\n");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void a(Long l, Long l2, String str) throws InconsistentException {
|
||||
if (l != null && l2 != null && !l.equals(l2)) {
|
||||
throw new InconsistentException(l, l2, str);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package com.alibaba.sdk.android.oss.common.utils;
|
||||
|
||||
import android.os.Build;
|
||||
import com.alibaba.sdk.android.oss.common.OSSLog;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class VersionInfoUtils {
|
||||
private static String a;
|
||||
|
||||
public static String a(String str) {
|
||||
if (OSSUtils.c(a)) {
|
||||
a = "aliyun-sdk-android/" + b() + a();
|
||||
}
|
||||
if (OSSUtils.c(str)) {
|
||||
return a;
|
||||
}
|
||||
return a + "/" + str;
|
||||
}
|
||||
|
||||
public static String b() {
|
||||
return "2.9.9";
|
||||
}
|
||||
|
||||
private static String a() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("(");
|
||||
sb.append(System.getProperty("os.name"));
|
||||
sb.append("/Android " + Build.VERSION.RELEASE);
|
||||
sb.append("/");
|
||||
sb.append(HttpUtil.a(Build.MODEL, "utf-8") + ";" + HttpUtil.a(Build.ID, "utf-8"));
|
||||
sb.append(")");
|
||||
String sb2 = sb.toString();
|
||||
OSSLog.a("user agent : " + sb2);
|
||||
return OSSUtils.c(sb2) ? System.getProperty("http.agent").replaceAll("[^\\p{ASCII}]", "?") : sb2;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user