13Poker by gametower unlimited gems v0.4版本的 MD5 值为:51324fc0f195c34821074948ab266846
以下内容为反编译后的 ReportingManager.java 源代码,内容仅作参考
package com.jirbo.adcolony;
import android.os.Build;
import com.adsdk.sdk.Const;
import com.jirbo.adcolony.AdManager;
import com.jirbo.adcolony.JSON;
import com.xbtsol.jynvrt161024.IVastConstant;
import java.util.ArrayList;
import java.util.Iterator;
public class ReportingManager {
static ArrayList<PendingEntry> pending_entries = new ArrayList<>();
static JSON.JSObject properties;
static volatile boolean submitting_entries;
static volatile boolean urgent;
ReportingManager() {
}
public static void configure() {
loadProperties();
submit();
}
public static void logVideoRequest(AdColonyVideoAd video_ad) {
synchronized (pending_entries) {
pending_entries.add(new PendingEntry("request", video_ad, null, false));
}
}
public static void logVideoStart(AdColonyVideoAd video_ad) {
synchronized (pending_entries) {
AdManager.VideoInfo video_info = video_ad.video_info;
pending_entries.add(new PendingEntry(IVastConstant.EVENT_START, video_ad, video_info, video_ad.for_vc));
if (!submitting_entries) {
submit();
}
}
video_ad.track("ext_tracking_start");
}
public static void logVideoImpression(AdColonyVideoAd video_ad, boolean is_replay) {
boolean for_vc = true;
synchronized (pending_entries) {
for_vc = (!video_ad.for_vc || is_replay) ? false : false;
if (for_vc) {
urgent = true;
}
AdManager.VideoInfo video_info = video_ad.video_info;
pending_entries.add(new PendingEntry("impression", video_ad, video_info, for_vc));
if (!submitting_entries) {
submit();
}
}
video_ad.track("ext_tracking_impression");
}
public static void logVideoInfoClick(AdColonyVideoAd video_ad) {
synchronized (pending_entries) {
AdManager.VideoInfo video_info = video_ad.video_info;
pending_entries.add(new PendingEntry("info_click", video_ad, video_info, video_ad.for_vc));
if (!submitting_entries) {
submit();
}
}
video_ad.track("ext_tracking_info");
}
public static void logVideoBuyClick(AdColonyVideoAd video_ad) {
synchronized (pending_entries) {
AdManager.VideoInfo video_info = video_ad.video_info;
pending_entries.add(new PendingEntry("buy_click", video_ad, video_info, video_ad.for_vc));
if (!submitting_entries) {
submit();
}
}
video_ad.track("ext_tracking_download");
}
public static void logVideoContinueClick(AdColonyVideoAd video_ad) {
synchronized (pending_entries) {
AdManager.VideoInfo video_info = video_ad.video_info;
pending_entries.add(new PendingEntry("continue_click", video_ad, video_info, video_ad.for_vc));
if (!submitting_entries) {
submit();
}
}
}
public static void submitTrackingURL(String url) {
synchronized (pending_entries) {
pending_entries.add(new PendingEntry("ext_tracking_url", url));
if (!submitting_entries) {
submit();
}
}
}
public static void flush() {
while (true) {
synchronized (pending_entries) {
if (pending_entries.size() != 0) {
if (!submitting_entries) {
submit();
return;
}
} else {
return;
}
}
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
}
}
}
public static void synchronizedSubmit() {
synchronized (pending_entries) {
if (!submitting_entries) {
submit();
}
}
}
public static void submit() {
if (NetworkStatus.isConnected()) {
submitting_entries = true;
new Thread(new Runnable() {
@Override
public void run() {
JSON.JSObject times;
try {
synchronized (ReportingManager.pending_entries) {
while (ReportingManager.pending_entries.size() > 0) {
PendingEntry entry = ReportingManager.pending_entries.remove(ReportingManager.pending_entries.size() - 1);
if (entry.type.equals("ext_tracking_url")) {
if (!ReportingManager.properties.contains(entry.type)) {
ReportingManager.properties.set(entry.type, new JSON.JSArray());
}
ReportingManager.properties.get(entry.type).add(entry.url);
}
if (!ReportingManager.properties.contains(entry.type)) {
ReportingManager.properties.set(entry.type, new JSON.JSObject());
}
JSON.JSObject props = ReportingManager.properties.get(entry.type);
if (!props.contains("zone_data")) {
props.set("zone_data", new JSON.JSObject());
}
JSON.JSObject zone_data = props.get("zone_data");
String zid = entry.zone_id;
String aid = entry.ad_id;
boolean is_request = entry.type.equals("request");
if (!zone_data.contains(entry.zone_id)) {
zone_data.set(zid, new JSON.JSObject());
if (is_request) {
zone_data.get(zid).set("count", new JSON.JSNumber(0L));
zone_data.get(zid).set("times", new JSON.JSArray());
} else {
if (entry.for_vc) {
zone_data.get(zid).set("is_vc_zone", "YES");
} else {
zone_data.get(zid).set("is_vc_zone", "NO");
}
if (entry.vc_client_side) {
zone_data.get(zid).set("vc_client_side", "YES");
} else {
zone_data.get(zid).set("vc_client_side", "NO");
}
zone_data.get(zid).set("adinfo", new JSON.JSObject());
}
}
if (is_request) {
times = zone_data.get(zid);
} else {
if (!zone_data.get(zid).get("adinfo").contains(aid)) {
zone_data.get(zid).get("adinfo").set(aid, new JSON.JSObject());
zone_data.get(zid).get("adinfo").get(aid).set("count", new JSON.JSNumber(0L));
zone_data.get(zid).get("adinfo").get(aid).set("times", new JSON.JSArray());
}
times = zone_data.get(zid).get("adinfo").get(aid);
}
times.set("count", times.getInt("count") + 1);
times.get("times").add(new JSON.JSString(entry.time));
}
}
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processVideoEvents("request", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidRequestTrack");
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processVideoEvents(IVastConstant.EVENT_START, "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidStartTrack");
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processVideoEvents("info_click", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidInfoTrack");
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processVideoEvents("buy_click", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidDownloadTrack");
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processVideoEvents("continue_click", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidContinueTrack");
ReportingManager.processVideoEvents("impression", "http://www.adtilt.com/clients/index.php?section=tracking_1_9_6&action=acVidImpressionTrack");
ReportingManager.processExtTracking();
ReportingManager.saveProperties();
} catch (Exception e) {
AdColony.logError("Reporting failed to submit");
}
ReportingManager.submitting_entries = false;
}
}).start();
}
}
static void processVideoEvents(String modified_type, String url) {
JSON.JSObject submission = properties.get(modified_type);
if (submission != null && !AdColony.activity().isFinishing()) {
submission.set("adc_version", "1.9.13");
submission.set("time_offset", PendingEntry.timeOffset());
submission.set("app_id", AdColony.adManager().app_id);
submission.set(Const.PREFS_DEVICE_ID, AdColony.getDeviceID());
submission.set("custom_id", AdColony.getCustomID());
submission.set("network_type", NetworkStatus.status());
submission.set("tracking_type", modified_type);
String json_data = submission.toJSON();
StringBuilder buffer = new StringBuilder();
buffer.append(url);
buffer.append("&os_name=android");
buffer.append("&device_brand=");
buffer.append(NetworkStatus.url_encoded(Build.MANUFACTURER));
buffer.append("&os_version=");
buffer.append(NetworkStatus.url_encoded(Build.VERSION.RELEASE));
buffer.append("&device_model=");
buffer.append(NetworkStatus.url_encoded(Build.MODEL));
buffer.append("&device_type=");
if (AdColony.isTablet()) {
buffer.append("tablet");
} else {
buffer.append("phone");
}
buffer.append("&adc_version=");
buffer.append(NetworkStatus.url_encoded("1.9.13"));
buffer.append("&app_version=");
buffer.append(NetworkStatus.url_encoded(AdColony.app_version));
buffer.append("&origin_store=");
buffer.append(NetworkStatus.url_encoded(AdColony.origin_store));
buffer.append("&available_stores=");
buffer.append(NetworkStatus.url_encoded(AdColony.available_stores));
buffer.append("&dev_id=");
buffer.append(NetworkStatus.url_encoded(AdColony.getDeviceID()));
buffer.append("&custom_id=");
buffer.append(NetworkStatus.url_encoded(AdColony.getCustomID()));
buffer.append("&imei=");
buffer.append(NetworkStatus.url_encoded(AdColony.imei));
buffer.append("&android_id=");
buffer.append(NetworkStatus.url_encoded(AdColony.android_id));
buffer.append("&hash=");
buffer.append(URLSigner.getHash(json_data, "dinosaur"));
String url2 = buffer.toString();
JSON.JSObject for_vc_zone = submission.find("is_vc_zone");
boolean for_vc = for_vc_zone != null && for_vc_zone.toString().equals("YES");
if (for_vc && modified_type.equals("impression")) {
urgent = true;
}
JSON.JSObject vc_client_side_obj = submission.find("vc_client_side");
boolean vc_client_side = vc_client_side_obj != null && vc_client_side_obj.toString().equals("YES");
int count = 0;
if (modified_type.equals("request")) {
count = 1;
} else {
try {
Iterator<JSON.JSObject> it = submission.get("zone_data").iterator();
while (it.hasNext()) {
JSON.JSObject zone_info = it.next();
Iterator i$ = zone_info.get("adinfo").iterator();
while (i$.hasNext()) {
JSON.JSObject ad_info = i$.next();
count += ad_info.getInt("count");
}
}
} catch (Exception e) {
count = 1;
}
}
if (!modified_type.equals("impression")) {
for_vc = false;
}
String result = HTTPRequest.post(url2, json_data, "text/json");
if (handleResult(result, count, for_vc, vc_client_side)) {
properties.remove(modified_type);
if (for_vc) {
urgent = false;
return;
}
return;
}
AdColony.logDebug("ADC event submission failed - will retry later.");
}
}
static boolean handleResult(String result, int playcount, boolean for_vc, boolean vc_client_side) {
if (result.equals("ERROR") || result.indexOf("Success") == -1) {
return false;
}
int i1 = result.indexOf("{|V4VC|}");
if (i1 != -1) {
int i2 = result.lastIndexOf("{|V4VC|}");
if (i2 != i1) {
String result2 = result.substring(i1 + 8, i2);
if (result2.startsWith("vc_failure")) {
AdColony.logError("VC failed.");
AdColony.on_vc_result_handler.obtainMessage(0).sendToTarget();
} else if (vc_client_side) {
AdColony.logInfo("Client-side VC success!");
AdColony.on_vc_result_handler.obtainMessage(playcount).sendToTarget();
} else {
byte[] vc_data = DataDownloader.download(result2);
if (vc_data == null) {
AdColony.logError("No response from bank server.");
AdColony.on_vc_result_handler.obtainMessage(0).sendToTarget();
} else if (new String(vc_data).indexOf("vc_success") == -1) {
AdColony.logError("VC failed.");
AdColony.on_vc_result_handler.obtainMessage(0).sendToTarget();
} else {
AdColony.logInfo("VC success!");
AdColony.on_vc_result_handler.obtainMessage(playcount).sendToTarget();
}
}
}
} else if (for_vc) {
AdColony.logError("Expected |V4VC| in result, got:");
AdColony.logError(result);
AdColony.on_vc_result_handler.obtainMessage(0).sendToTarget();
}
return true;
}
static void processExtTracking() {
JSON.JSObject urls = properties.get("ext_tracking_url");
if (urls != null && !AdColony.activity().isFinishing()) {
properties.remove("ext_tracking_url");
JSON.JSArray remaining_urls = new JSON.JSArray();
boolean error = false;
for (int i = 0; i < urls.count(); i++) {
String url = urls.get(i).toString();
byte[] result = null;
if (!error) {
result = DataDownloader.download(url, true);
}
if (result == null) {
remaining_urls.add(url);
error = true;
}
}
if (error) {
AdColony.logDebug("ADC track failed - will retry later.");
properties.set("ext_tracking_url", remaining_urls);
}
}
}
static void loadProperties() {
if (properties == null) {
try {
properties = JSON.load("reporting.properties");
if (properties.contains("impression")) {
urgent = true;
AdColony.logDebug("There are urgent V4VC impressions to deliver.");
}
} catch (Exception e) {
properties = new JSON.JSObject();
}
}
}
static void saveProperties() {
synchronized (properties) {
try {
properties.save("reporting.properties");
} catch (Exception e) {
AdColony.logError("Failed to save reporting.properties");
}
}
}
}