package net.sf.openrocket.communication;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import net.sf.openrocket.util.BuildProperties;
public class BugReporter extends Communicator {
// Inhibit instantiation
private BugReporter() {
}
/**
* Send the provided report to the OpenRocket bug report URL. If the connection
* fails or the server does not respond with the correct response code, an
* exception is thrown.
*
* @param report the report to send.
* @throws IOException if an error occurs while connecting to the server or
* the server responds with a wrong response code.
*/
public static void sendBugReport(String report) throws IOException {
HttpURLConnection connection = connectionSource.getConnection(BUG_REPORT_URL);
connection.setConnectTimeout(CONNECTION_TIMEOUT);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setRequestProperty("X-OpenRocket-Version", encode(BuildProperties.getVersion()));
String post;
post = (VERSION_PARAM + "=" + encode(BuildProperties.getVersion())
+ "&" + BUG_REPORT_PARAM + "=" + encode(report));
OutputStreamWriter wr = null;
try {
// Send post information
connection.setDoOutput(true);
wr = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
wr.write(post);
wr.flush();
if (connection.getResponseCode() != BUG_REPORT_RESPONSE_CODE) {
throw new IOException("Server responded with code " +
connection.getResponseCode() + ", expecting " + BUG_REPORT_RESPONSE_CODE);
}
} finally {
if (wr != null)
wr.close();
connection.disconnect();
}
}
}