package tv.emby.embyatv.util;
import android.os.Build;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import mediabrowser.apiinteraction.EmptyResponse;
import mediabrowser.apiinteraction.http.HttpHeaders;
import mediabrowser.apiinteraction.http.HttpRequest;
import tv.emby.embyatv.TvApp;
/**
* Created by Eric on 2/28/2016.
*/
public class LogReporter {
public void sendReport(String cause, final EmptyResponse callback) {
TvApp.getApplication().getLogger().Info("Sending log...");
LogReport report = new LogReport();
report.setOsVersionInt(Build.VERSION.SDK_INT);
report.setOsVersionString(Build.VERSION.RELEASE);
report.setCause(cause);
report.setDeviceInfo(Build.MODEL);
if (TvApp.getApplication().getCurrentSystemInfo() != null) report.setServerName(TvApp.getApplication().getCurrentSystemInfo().getServerName());
if (TvApp.getApplication().getCurrentUser() != null) report.setUserName(TvApp.getApplication().getCurrentUser().getName());
//get log
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
int numLines = 0;
while ((line = bufferedReader.readLine()) != null) {
log.append(line).append("\r\n");
numLines++;
}
TvApp.getApplication().getLogger().Info("Log lines retrieved: "+numLines);
report.setLogLines(log.toString());
}
catch (IOException e) {
report.setLogLines("Unable to retrieve Log: "+e.getMessage());
}
String json = TvApp.getApplication().getSerializer().SerializeToString(report);
HttpRequest request = new HttpRequest();
HttpHeaders headers = new HttpHeaders();
headers.put("Accept", "application/json");
request.setUrl("http://mb3admin.com/admin/service/logReport/send");
request.setMethod("POST");
request.setRequestHeaders(headers);
request.setRequestContent(json);
request.setRequestContentType("application/json");
TvApp.getApplication().getHttpClient().Send(request, new mediabrowser.apiinteraction.Response<String>() {
@Override
public void onResponse(String response) {
TvApp.getApplication().getLogger().Info("Response from log report send: "+response);
if (callback != null) callback.onResponse();
}
@Override
public void onError(Exception exception) {
TvApp.getApplication().getLogger().ErrorException("Error sending log", exception);
if (callback != null) callback.onResponse();
}
});
}
}