content: /*
   * Copyright (C) 2015 Actor LLC. <https://actor.im>
   */
  
  package im.actor.runtime.android;
  
  import android.content.Context;
  import android.content.SharedPreferences;
  import android.os.Environment;
  import android.util.Log;
  
  import com.squareup.okhttp.Callback;
  import com.squareup.okhttp.MediaType;
  import com.squareup.okhttp.OkHttpClient;
  import com.squareup.okhttp.Request;
  import com.squareup.okhttp.RequestBody;
  import com.squareup.okhttp.Response;
  
  import java.io.IOException;
  import java.util.logging.FileHandler;
  import java.util.logging.Level;
  import java.util.logging.LogRecord;
  import java.util.logging.SimpleFormatter;
  
  import im.actor.runtime.LogRuntime;
  import im.actor.runtime.json.JSONException;
  import im.actor.runtime.json.JSONObject;
  
  public class AndroidLogProvider implements LogRuntime {
  
  //    public static final int SEND_LOGS_EXPIRES = 1000 * 60 * 60 * 3;
  //    private static FileHandler fileHandler;
  //    private static boolean writeLogs;
  //    private static boolean sendLogs;
  //    private static long sendLogsTime;
  //    private static String sendLogsUrl = null;
  //    private static SharedPreferences shp;
  //    private static final OkHttpClient client;
  
  //    static {
  //        String name;
  //        shp = AndroidContext.getContext().getSharedPreferences("log_props.ini", Context.MODE_PRIVATE);
  //        sendLogs = shp.getBoolean("sendLogs", false);
  //        sendLogsTime = shp.getLong("sendLogsTime", 0);
  //        sendLogsUrl = shp.getString("sendLogsUrl", null);
  //        writeLogs = shp.getBoolean("writeLogs", false);
  //        if (0 == Environment.getExternalStorageState().compareTo(Environment.MEDIA_MOUNTED)) {
  //            name = Environment.getExternalStorageDirectory().getAbsolutePath();
  //        } else {
  //            name = Environment.getDataDirectory().getAbsolutePath();
  //        }
  //
  //        name += "/actorlogs%g_%u.log";
  //
  //        try {
  //            fileHandler = new FileHandler(name, 256 * 1024, 10, true);
  //        } catch (IOException e) {
  //            e.printStackTrace();
  //        }
  //
  //        client = new OkHttpClient();
  //    }
  
  
      @Override
      public void w(String tag, String message) {
          Log.w(tag, message);
  //        writeToFile(Level.WARNING, tag, message);
  //        sendLogs("w", tag, message);
      }
  
      @Override
      public void e(String tag, Throwable throwable) {
          Log.e(tag, "", throwable);
  //        writeToFile(Level.WARNING, tag, throwable.getMessage());
  //        sendLogs("e", tag, throwable.getMessage());
      }
  
      @Override
      public void d(String tag, String message) {
          Log.d(tag, message);
  //        writeToFile(Level.INFO, tag, message);
  //        sendLogs("d", tag, message);
  
      }
  
      @Override
      public void v(String tag, String message) {
          Log.v(tag, message);
  //        writeToFile(Level.ALL, tag, message);
  //        sendLogs("v", tag, message);
      }
  
  //    private static int i = 0;
  //    private static String s = "";
  //
  //    private static void sendLogs(String level, String tag, String msg) {
  //        if (sendLogs && sendLogsUrl != null) {
  //            if (i == 0) {
  //                s = s.concat("```");
  //            }
  //
  //            s = s.concat("\n").concat(level).concat(" ").concat(tag).concat(":").concat(msg);
  //
  //            if (i == 19) {
  //                if (System.currentTimeMillis() - sendLogsTime > SEND_LOGS_EXPIRES) {
  //                    setSendLogs(null);
  //                    return;
  //                }
  //                s = s.concat("```");
  //                JSONObject json = new JSONObject();
  //                try {
  //                    json.put("text", s);
  //                    final Request request = new Request.Builder()
  //                            .url(sendLogsUrl)
  //                            .post(RequestBody.create(null, json.toString()))
  //                            .build();
  //                    client.newCall(request).enqueue(new Callback() {
  //                        @Override
  //                        public void onFailure(Request request, IOException e) {
  //
  //                        }
  //
  //                        @Override
  //                        public void onResponse(Response response) throws IOException {
  //
  //                        }
  //                    });
  //                } catch (JSONException e) {
  //                }
  //
  //                s = "";
  //                i = 0;
  //            } else {
  //                i++;
  //            }
  //
  //        }
  //    }
  //
  //    private static void writeToFile(java.util.logging.Level level, String tag, String msg) {
  //        if (writeLogs) {
  //            try {
  //                fileHandler.setFormatter(new SimpleFormatter());
  //                fileHandler.publish(new LogRecord(level, tag + ": " + msg));
  //            } catch (Exception e) {
  //            }
  //        }
  //
  //    }
  //
  //    public static boolean toggleWriteLogs() {
  //        AndroidLogProvider.writeLogs = !writeLogs;
  //        shp.edit().putBoolean("writeLogs", writeLogs).apply();
  //        return writeLogs;
  //    }
  //
  //    public static void setSendLogs(String sendLogsUrl) {
  //        AndroidLogProvider.sendLogs = sendLogsUrl != null;
  //        AndroidLogProvider.sendLogsUrl = sendLogsUrl;
  //        AndroidLogProvider.sendLogsTime = sendLogsUrl == null ? 0 : System.currentTimeMillis();
  //        shp.edit().putString("sendLogsUrl", sendLogsUrl).apply();
  //        shp.edit().putLong("sendLogsTime", sendLogsTime).apply();
  //        shp.edit().putBoolean("sendLogs", sendLogs).apply();
  //    }
  //
  //    public static boolean isSendLogsEnabled() {
  //        return sendLogs;
  //    }
  }
  