Luno v7.28.0版本的 MD5 值为:08d81b3b88ef7df48c89cb5d56dc11a2
以下内容为反编译后的 BaseApi.java 源代码,内容仅作参考
package com.singular.sdk.internal;
import java.io.IOException;
import java.util.HashMap;
import java.util.InvalidPropertiesFormatException;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import org.json.JSONException;
import org.json.JSONObject;
public abstract class BaseApi extends SingularMap implements Api {
static final String TIMESTAMP_KEY = "__TIMESTAMP__";
static final String TYPE_KEY = "__TYPE__";
private static final SingularLog logger = SingularLog.getLogger(BaseApi.class.getSimpleName());
public BaseApi(String str, long j) {
put(TYPE_KEY, str);
put(TIMESTAMP_KEY, String.valueOf(j));
}
public static BaseApi from(String str) throws IOException, NullPointerException {
Objects.requireNonNull(str, "api string cannot be null");
Map<String, String> fromString = fromString(str);
String str2 = fromString.get(TYPE_KEY);
String str3 = fromString.get(TIMESTAMP_KEY);
long parseLong = !Utils.isEmptyOrNull(str3) ? Long.parseLong(str3) : -1L;
if (Constants.API_TYPE_EVENT.equalsIgnoreCase(str2)) {
ApiSubmitEvent apiSubmitEvent = new ApiSubmitEvent(parseLong);
apiSubmitEvent.addParams(fromString);
return apiSubmitEvent;
}
if (Constants.API_TYPE_SESSION_START.equalsIgnoreCase(str2)) {
ApiStartSession apiStartSession = new ApiStartSession(parseLong);
apiStartSession.addParams(fromString);
return apiStartSession;
}
if (Constants.API_TYPE_GDPR_CONSENT.equalsIgnoreCase(str2)) {
ApiGDPRConsent apiGDPRConsent = new ApiGDPRConsent(parseLong);
apiGDPRConsent.addParams(fromString);
return apiGDPRConsent;
}
if (Constants.API_TYPE_GDPR_UNDER_13.equalsIgnoreCase(str2)) {
ApiGDPRUnder13 apiGDPRUnder13 = new ApiGDPRUnder13(parseLong);
apiGDPRUnder13.addParams(fromString);
return apiGDPRUnder13;
}
if (Constants.API_TYPE_CUSTOM_USER_ID.equalsIgnoreCase(str2)) {
ApiCustomUserId apiCustomUserId = new ApiCustomUserId(parseLong);
apiCustomUserId.addParams(fromString);
return apiCustomUserId;
}
throw new InvalidPropertiesFormatException(String.format("Unknown type = %s", str2));
}
private static Map<String, String> fromString(String str) throws IOException {
try {
JSONObject jSONObject = new JSONObject(str);
HashMap hashMap = new HashMap();
Iterator<String> keys = jSONObject.keys();
while (keys.hasNext()) {
String next = keys.next();
hashMap.put(next, (String) jSONObject.get(next));
}
return hashMap;
} catch (JSONException e) {
throw new IOException(e);
}
}
public void addParams(Map<String, String> map) {
if (map == null) {
return;
}
putAll(map);
}
Map<String, String> getParams() {
HashMap hashMap = new HashMap(this);
hashMap.remove(TYPE_KEY);
hashMap.remove(TIMESTAMP_KEY);
return hashMap;
}
public long getTimestamp() {
String str = get(TIMESTAMP_KEY);
if (Utils.isEmptyOrNull(str)) {
return -1L;
}
return Long.parseLong(str);
}
public String getType() {
return get(TYPE_KEY);
}
public String getUrl() {
return "https://sdk-api-v1.singular.net/api/v1" + getPath();
}
public boolean makeRequest(SingularInstance singularInstance) throws IOException {
return SingularRequestHandler.makeRequest(singularInstance, getUrl(), getParams(), getTimestamp(), getOnApiCallback());
}
public String toJsonAsString() {
return new JSONObject((Map<?, ?>) this).toString();
}
}