Skip to content

Instantly share code, notes, and snippets.

@joemccall86
Forked from ashtom/HockeySender.java
Last active March 14, 2016 17:54
Show Gist options
  • Select an option

  • Save joemccall86/9b25aeb3d7cf336bf9e9 to your computer and use it in GitHub Desktop.

Select an option

Save joemccall86/9b25aeb3d7cf336bf9e9 to your computer and use it in GitHub Desktop.

Revisions

  1. Joe McCall revised this gist Mar 14, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion HockeySender.java
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    public class HockeySender implements ReportSender {

    public static final String TAG = "HockeyAppReportSender";
    public static final String TAG = "HockeySender";
    private static String BASE_URL = "https://rink.hockeyapp.net/api/2/apps/";
    private static String CRASHES_PATH = "/crashes";

  2. Joe McCall revised this gist Mar 14, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion HockeySender.java
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    package net.hockeyapp.android.demo;

    public class HockeyAppReportSender implements ReportSender {
    public class HockeySender implements ReportSender {

    public static final String TAG = "HockeyAppReportSender";
    private static String BASE_URL = "https://rink.hockeyapp.net/api/2/apps/";
  3. Joe McCall revised this gist Mar 14, 2016. 1 changed file with 56 additions and 59 deletions.
    115 changes: 56 additions & 59 deletions HockeySender.java
    Original file line number Diff line number Diff line change
    @@ -1,62 +1,59 @@
    package net.hockeyapp.android.demo;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    import org.acra.ACRA;
    import org.acra.collector.CrashReportData;
    import org.acra.ReportField;
    import org.acra.sender.ReportSender;
    import org.acra.sender.ReportSenderException;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;

    public class HockeySender implements ReportSender {
    private static String BASE_URL = "https://rink.hockeyapp.net/api/2/apps/";
    private static String CRASHES_PATH = "/crashes";

    @Override
    public void send(CrashReportData report) throws ReportSenderException {
    String log = createCrashLog(report);
    String url = BASE_URL + ACRA.getConfig().formKey() + CRASHES_PATH;

    try {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);

    List<NameValuePair> parameters = new ArrayList<NameValuePair>();
    parameters.add(new BasicNameValuePair("raw", log));
    parameters.add(new BasicNameValuePair("userID", report.get(ReportField.INSTALLATION_ID)));
    parameters.add(new BasicNameValuePair("contact", report.get(ReportField.USER_EMAIL)));
    parameters.add(new BasicNameValuePair("description", report.get(ReportField.USER_COMMENT)));

    httpPost.setEntity(new UrlEncodedFormEntity(parameters, HTTP.UTF_8));

    httpClient.execute(httpPost);
    public class HockeyAppReportSender implements ReportSender {

    public static final String TAG = "HockeyAppReportSender";
    private static String BASE_URL = "https://rink.hockeyapp.net/api/2/apps/";
    private static String CRASHES_PATH = "/crashes";

    @Override
    public void send(Context context, CrashReportData errorContent) throws ReportSenderException {

    final String log = createCrashLog(errorContent);
    final String url = BASE_URL + context.getString(R.string.hockey_app_id) + CRASHES_PATH;


    try {
    URL urlObject = new URL(url);
    final HttpsURLConnection httpsURLConnection = (HttpsURLConnection) urlObject.openConnection();
    final String output = URLEncoder.encode("raw=" + log +
    "&userID=" + errorContent.get(ReportField.INSTALLATION_ID) +
    "&contact=" + errorContent.get(ReportField.USER_EMAIL) +
    "&description=" + errorContent.get(ReportField.USER_COMMENT),
    "utf-8");
    final byte[] outputBytes = output.getBytes();

    httpsURLConnection.setDoOutput(true);
    httpsURLConnection.setFixedLengthStreamingMode(outputBytes.length);

    try {
    OutputStream outputStream = new BufferedOutputStream(httpsURLConnection.getOutputStream());
    outputStream.write(outputBytes);


    InputStream in = new BufferedInputStream(httpsURLConnection.getInputStream());
    Log.v(TAG, in.toString());

    } finally {
    httpsURLConnection.disconnect();
    }

    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private String createCrashLog(CrashReportData report) {
    Date now = new Date();

    return "Package: " + report.get(ReportField.PACKAGE_NAME) + "\n" +
    "Version Name: " + report.get(ReportField.APP_VERSION_NAME) + "\n" +
    "Version Code: " + report.get(ReportField.APP_VERSION_CODE) + "\n" +
    "Android: " + report.get(ReportField.ANDROID_VERSION) + "\n" +
    "Manufacturer: " + android.os.Build.MANUFACTURER + "\n" +
    "Model: " + report.get(ReportField.PHONE_MODEL) + "\n" +
    "Date: " + now + "\n" +
    "\n" +
    report.get(ReportField.STACK_TRACE);
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }

    private String createCrashLog(CrashReportData report) {
    Date now = new Date();
    StringBuilder log = new StringBuilder();

    log.append("Package: " + report.get(ReportField.PACKAGE_NAME) + "\n");
    log.append("Version: " + report.get(ReportField.APP_VERSION_CODE) + "\n");
    log.append("Android: " + report.get(ReportField.ANDROID_VERSION) + "\n");
    log.append("Manufacturer: " + android.os.Build.MANUFACTURER + "\n");
    log.append("Model: " + report.get(ReportField.PHONE_MODEL) + "\n");
    log.append("Date: " + now + "\n");
    log.append("\n");
    log.append(report.get(ReportField.STACK_TRACE));

    return log.toString();
    }
    }
    }
  4. @ashtom ashtom revised this gist Nov 8, 2012. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions HockeySender.java
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@
    import java.util.List;

    import org.acra.ACRA;
    import org.acra.CrashReportData;
    import org.acra.collector.CrashReportData;
    import org.acra.ReportField;
    import org.acra.sender.ReportSender;
    import org.acra.sender.ReportSenderException;
    @@ -59,4 +59,4 @@ private String createCrashLog(CrashReportData report) {

    return log.toString();
    }
    }
    }
  5. @ashtom ashtom created this gist Mar 1, 2012.
    62 changes: 62 additions & 0 deletions HockeySender.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    package net.hockeyapp.android.demo;

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    import org.acra.ACRA;
    import org.acra.CrashReportData;
    import org.acra.ReportField;
    import org.acra.sender.ReportSender;
    import org.acra.sender.ReportSenderException;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.protocol.HTTP;

    public class HockeySender implements ReportSender {
    private static String BASE_URL = "https://rink.hockeyapp.net/api/2/apps/";
    private static String CRASHES_PATH = "/crashes";

    @Override
    public void send(CrashReportData report) throws ReportSenderException {
    String log = createCrashLog(report);
    String url = BASE_URL + ACRA.getConfig().formKey() + CRASHES_PATH;

    try {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);

    List<NameValuePair> parameters = new ArrayList<NameValuePair>();
    parameters.add(new BasicNameValuePair("raw", log));
    parameters.add(new BasicNameValuePair("userID", report.get(ReportField.INSTALLATION_ID)));
    parameters.add(new BasicNameValuePair("contact", report.get(ReportField.USER_EMAIL)));
    parameters.add(new BasicNameValuePair("description", report.get(ReportField.USER_COMMENT)));

    httpPost.setEntity(new UrlEncodedFormEntity(parameters, HTTP.UTF_8));

    httpClient.execute(httpPost);
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }

    private String createCrashLog(CrashReportData report) {
    Date now = new Date();
    StringBuilder log = new StringBuilder();

    log.append("Package: " + report.get(ReportField.PACKAGE_NAME) + "\n");
    log.append("Version: " + report.get(ReportField.APP_VERSION_CODE) + "\n");
    log.append("Android: " + report.get(ReportField.ANDROID_VERSION) + "\n");
    log.append("Manufacturer: " + android.os.Build.MANUFACTURER + "\n");
    log.append("Model: " + report.get(ReportField.PHONE_MODEL) + "\n");
    log.append("Date: " + now + "\n");
    log.append("\n");
    log.append(report.get(ReportField.STACK_TRACE));

    return log.toString();
    }
    }