package net.minecraft.launcher.hopper;
import com.google.gson.Gson;
import java.io.IOException;
import java.net.URL;
import net.minecraft.launcher.Http;
import net.minecraft.launcher.Launcher;
import net.minecraft.launcher.LauncherConstants;
import org.apache.commons.lang3.StringUtils;
public class HopperService
{
private static final String BASE_URL = "http://hopper.minecraft.net/crashes/";
private static final URL ROUTE_SUBMIT = LauncherConstants.constantURL("http://hopper.minecraft.net/crashes/submit_report/");
private static final URL ROUTE_PUBLISH = LauncherConstants.constantURL("http://hopper.minecraft.net/crashes/publish_report/");
private final Gson gson = new Gson();
public SubmitResponse submitReport(String report, String version) throws IOException {
SubmitRequest request = new SubmitRequest(report, version);
return (SubmitResponse)makeRequest(ROUTE_SUBMIT, request, SubmitResponse.class);
}
public PublishResponse publishReport(Report report) throws IOException {
PublishRequest request = new PublishRequest(report);
return (PublishResponse)makeRequest(ROUTE_PUBLISH, request, PublishResponse.class);
}
protected <T extends Response> T makeRequest(URL url, Object input, Class<T> classOfT) throws IOException {
String jsonResult = Http.performPost(url, this.gson.toJson(input), Launcher.getInstance().getProxy(), "application/json", true);
Response result = (Response)this.gson.fromJson(jsonResult, classOfT);
if (result == null) return null;
if (StringUtils.isNotBlank(result.getError())) {
throw new IOException(result.getError());
}
return result;
}
}