package com.door43.tools.reporting; import android.content.Context; import java.io.File; /** * This task submits the latest crash report to github */ public class UploadCrashReportTask extends ManagedTask { private static final String STACKTRACE_DIR = "stacktrace"; private final String mMessage; private int mMaxProgress = 100; private Context context; public UploadCrashReportTask(Context context, String message) { mMessage = message; this.context = context; } @Override public void start() { File stacktraceDir = new File(context.getExternalCacheDir(), STACKTRACE_DIR); File logFile = new File(context.getExternalCacheDir(), "log.txt"); String githubToken = context.getString(R.string.github_oauth2); String githubUrl = context.getResources().getString(R.string.github_bug_report_repo); // TRICKY: make sure the github_oauth2 token has been set if(!githubToken.equalsIgnoreCase("STRING_REPLACED_BY_BUILD_SERVER")) { GithubReporter reporter = new GithubReporter(context, githubUrl, githubToken); String[] stacktraces = GlobalExceptionHandler.getStacktraces(stacktraceDir); if (stacktraces.length > 0) { // upload most recent stacktrace reporter.reportCrash(mMessage, new File(stacktraces[0]), logFile); // empty the log // try { logFile.delete(); // } catch (IOException e) { // e.printStackTrace(); // } // archive extra stacktraces File archiveDir = new File(stacktraceDir, "archive"); archiveDir.mkdirs(); for (String filePath:stacktraces) { File traceFile = new File(filePath); if (traceFile.exists()) { FileUtilities.moveOrCopy(traceFile, new File(archiveDir, traceFile.getName())); if(traceFile.exists()) { traceFile.delete(); } } } } } } @Override public int maxProgress() { return mMaxProgress; } }