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");
            }
        }
    }
}