package com.webileapps.excalibur;

import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;

import org.json.JSONObject;

import java.io.BufferedOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class ExcaliburLogoutService extends IntentService {
    private static final String USER_ID = "com.webileapps.excalibur.extra.USER_ID";
    private static final String FCM_TOKEN = "com.webileapps.excalibur.extra.FCM_TOKEN";
    private static final String CLIENT_ID = "com.webileapps.excalibur.extra.CLIENT_ID";
    private static final String IS_STAGING = "com.webileapps.excalibur.extra.IS_STAGING";
    private static final String TAG = "ExcaliburLogoutService";

    public ExcaliburLogoutService() {
        super("ExcaliburLogoutService");
    }

    public static void logout(Context context, String clientId, String userId, String fcmToken, boolean isStaging) {
        Intent intent = new Intent(context, ExcaliburLogoutService.class);
        intent.putExtra("com.webileapps.excalibur.extra.CLIENT_ID", clientId);
        intent.putExtra("com.webileapps.excalibur.extra.USER_ID", userId);
        intent.putExtra("com.webileapps.excalibur.extra.FCM_TOKEN", fcmToken);
        intent.putExtra("com.webileapps.excalibur.extra.IS_STAGING", isStaging);
        context.startService(intent);
    }

    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            String clientId = intent.getStringExtra("com.webileapps.excalibur.extra.CLIENT_ID");
            String userId = intent.getStringExtra("com.webileapps.excalibur.extra.USER_ID");
            String fcmToken = intent.getStringExtra("com.webileapps.excalibur.extra.FCM_TOKEN");
            boolean isStaging = intent.getBooleanExtra("com.webileapps.excalibur.extra.IS_STAGING", false);

            try {
                Uri.Builder uriBuilder = new Uri.Builder();
                uriBuilder.scheme("http");
//                if (isStaging) {
//                    uriBuilder.authority(clientId + ".stage.verloop.io");
//                } else {
//                    uriBuilder.authority(clientId + ".verloop.io");
//                }
                uriBuilder.authority("chat.webileapps.com");

                uriBuilder.path("api/public/sdk/unregisterDevice");
                URL url = new URL(uriBuilder.toString());
                HttpsURLConnection httpsURLConnection = (HttpsURLConnection)url.openConnection();
                httpsURLConnection.setRequestMethod("POST");
                httpsURLConnection.setRequestProperty("Content-Type", "application/json");
                httpsURLConnection.setRequestProperty("x-excalibur-client-id", clientId);

                try {
                    httpsURLConnection.setDoOutput(true);
                    httpsURLConnection.setChunkedStreamingMode(0);
                    JSONObject obj = new JSONObject();
                    obj.put("userId", userId);
                    obj.put("deviceType", "android");
                    obj.put("deviceToken", fcmToken);
                    String json = obj.toString();
                    Log.d("ExcaliburLogoutService", "Json: " + json);
                    OutputStream outputStream = new BufferedOutputStream(httpsURLConnection.getOutputStream());
                    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
                    outputStreamWriter.write(json);
                    outputStreamWriter.flush();
                    outputStreamWriter.close();
                    Log.d("ExcaliburLogoutService", "Response code: " + httpsURLConnection.getResponseCode());
                    Log.d("ExcaliburLogoutService", "Response Stri: " + httpsURLConnection.getResponseMessage());
                } catch (Exception var17) {
                    var17.printStackTrace();
                } finally {
                    httpsURLConnection.disconnect();
                }
            } catch (Exception var19) {
                var19.printStackTrace();
            }
        }

    }
}
