package com.fear1ess.reyunaditool.adsfinder;

import android.util.Log;

import com.fear1ess.reyunaditool.HttpParser;
import com.fear1ess.reyunaditool.IDoCommandService;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;

public class VungleFinder extends Finder{
    public VungleFinder(String adsName, String adsClassName, ClassLoader cl, IDoCommandService service) {
        super(adsName, adsClassName, cl, service);
    }

    @Override
    public void hookAdsApi() {
        registerSSLHook(new SSLOutputStreamHookedCallback() {
            @Override
            public void onSSLOutputStreamHooked(HttpParser hp) {
                if(!hp.getMethod().equals("POST") || !hp.getPath().contains("api/v5/ads")) return;
                JSONObject jo = hp.getJsonBody();
                try {
                    JSONObject app = jo.getJSONObject("app");
                    String id = app.getString("id");
                    JSONObject request = jo.getJSONObject("request");
                    JSONArray pArr = request.getJSONArray("placements");
                    String placement = null;
                    for(int i = 0;i < pArr.length(); ++i){
                        placement = pArr.getString(i);
                    }
                    Map<String, String> map = new HashMap<>();
                    map.put("id", id);
                    map.put("placement", placement);
                    uploadAdsData(map);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
        /*
        try {
            XposedBridge.hookAllMethods(mAppClassLoader.loadClass("com.vungle.warren.network.VungleApiImpl"), "createNewPostCall",
                    new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);
                            Log.d(TAG, "vungle ads ua: " + param.args[0]);
                            Log.d(TAG, "vungle ads path: " + param.args[1]);
                            Log.d(TAG, "vungle ads body: " + XposedHelpers.callMethod(param.args[2],"toString"));
                        }
                    });


        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }*/
    }
}