package pluginbase.util.webpaste;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Pastes to {@code hastebin.com}.
*/
public class HastebinPasteService implements PasteService {
/**
* {@inheritDoc}
*/
@Override
public URL getPostURL() {
try {
return new URL("http://hastebin.com/documents");
} catch (MalformedURLException e) {
return null; // should never hit here
}
}
/**
* {@inheritDoc}
*/
@Override
public String encodeData(String data) {
return data;
}
/**
* {@inheritDoc}
*/
@Override
public String postData(String encodedData, URL url) throws PasteFailedException {
try {
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "PostRequester2000");
con.setDoOutput(true);
DataOutputStream out = new DataOutputStream(con.getOutputStream());
out.writeBytes(encodedData);
out.close();
int code = con.getResponseCode(); // Maybe use later...
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuffer buffer = new StringBuffer();
String input;
while ((input = in.readLine()) != null) {
buffer.append(input);
}
in.close();
con.disconnect();
String pasteUrl;
if (code >= 200 && code < 300) {
pasteUrl = buffer.toString().split(":")[1];
pasteUrl = pasteUrl.split("\"")[1];
pasteUrl = "http://hastebin.com/" + pasteUrl;
} else {
throw new RuntimeException("Could not retrieve paste URL. Error code: " + code);
}
return pasteUrl;
} catch (Exception e) {
throw new PasteFailedException(e);
}
}
}