package qa.qcri.aidr.trainer.api.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
/**
* Created with IntelliJ IDEA.
* User: jlucas
* Date: 4/2/14
* Time: 10:46 PM
* To change this template use File | Settings | File Templates.
*/
public class Communicator {
// will be placed on config.
protected static Logger logger = Logger.getLogger(Communicator.class);
public Communicator(){
}
public int sendPut(String data, String url) {
int responseCode = -1;
HttpClient httpClient = new DefaultHttpClient();
try {
HttpPut request = new HttpPut(url);
StringEntity params =new StringEntity(data,"UTF-8");
params.setContentType("application/json");
request.addHeader("content-type", "application/json");
request.addHeader("Accept", "*/*");
request.addHeader("Accept-Encoding", "gzip,deflate,sdch");
request.addHeader("Accept-Language", "en-US,en;q=0.8");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
responseCode = response.getStatusLine().getStatusCode();
if (response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 204) {
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
// System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n");
while ((output = br.readLine()) != null) {
// System.out.println(output);
}
}
else{
logger.error("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}catch (Exception ex) {
logger.warn("Error in processing request for data : " + data + " and url : " + url,ex);
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseCode;
}
public String deleteGet(String url){
int responseCode = -1;
HttpClient httpClient = new DefaultHttpClient();
StringBuffer responseOutput = new StringBuffer();
try {
HttpDelete request = new HttpDelete(url);
request.addHeader("content-type", "application/json");
HttpResponse response = httpClient.execute(request);
responseCode = response.getStatusLine().getStatusCode();
if ( responseCode == 200 || responseCode == 204) {
if(response.getEntity()!=null){
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
while ((output = br.readLine()) != null) {
responseOutput.append(output);
}
}
}
else{
logger.error("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}catch (Exception ex) {
logger.error("Exception in deleteGet2: " + url,ex);
} finally {
httpClient.getConnectionManager().shutdown();
}
if(responseCode == -1){
return "Exception";
}
return responseOutput.toString();
}
public int sendPost(String data, String url) {
// dataoutput="{\"info\": {\"username\": \" drippingmind\", \"userid\": \"449077875\", \"n_answers\": 2, \"date\": \" Wed Dec 05 11:13:18 CET 2012\", \"text\": \" Google provides support in the #Philippines w/ crisis response map 4 typhoon #Pablo #Bopha http://t.co/mJCNBHAJ #DRM #ICT #EmergencyResponse\", \"question\": \"Please tag the following tweet or SMS based on the category or categories that best describes the link(s) included in the tweet/Sms\", \"tweetid\": \"2.76E17\"}, \"state\": 0, \"n_answers\": 30, \"quorum\": 0, \"calibration\": 0, \"app_id\": 4, \"priority_0\": 0}";
int responseCode = -1;
HttpClient httpClient = new DefaultHttpClient();
try {
HttpPost request = new HttpPost(url);
StringEntity params =new StringEntity(data, "UTF-8");
params.setContentType("application/json");
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
responseCode = response.getStatusLine().getStatusCode();
if ( responseCode == 200 || responseCode == 204) {
if(response.getEntity()!=null){
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
//System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n");
while ((output = br.readLine()) != null) {
logger.debug(output);
}
}
}
else{
logger.error("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}catch (Exception ex) {
logger.error("Exception in sendPost2: " + data,ex);
logger.error("Exception in sendPost3: " + url,ex);
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseCode;
}
public String sendPostGet(String data, String url) {
// dataoutput="{\"info\": {\"username\": \" drippingmind\", \"userid\": \"449077875\", \"n_answers\": 2, \"date\": \" Wed Dec 05 11:13:18 CET 2012\", \"text\": \" Google provides support in the #Philippines w/ crisis response map 4 typhoon #Pablo #Bopha http://t.co/mJCNBHAJ #DRM #ICT #EmergencyResponse\", \"question\": \"Please tag the following tweet or SMS based on the category or categories that best describes the link(s) included in the tweet/Sms\", \"tweetid\": \"2.76E17\"}, \"state\": 0, \"n_answers\": 30, \"quorum\": 0, \"calibration\": 0, \"app_id\": 4, \"priority_0\": 0}";
HttpClient httpClient = new DefaultHttpClient();
StringBuffer responseOutput = new StringBuffer();
try {
HttpPost request = new HttpPost(url);
StringEntity params =new StringEntity(data, "UTF-8");
params.setContentType("application/json");
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 200 || responseCode == 204) {
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
// System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n");
while ((output = br.readLine()) != null) {
responseOutput.append(output);
}
}
else{
logger.error("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}catch (Exception ex) {
logger.error("Error in processing request for data : " + data + " and url :" + url,ex);
responseOutput.append("Exception Code : " + ex);
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseOutput.toString();
}
public String sendGet(String url) {
HttpURLConnection con = null;
StringBuffer response = new StringBuffer();
// System.out.println("sendGet url : " + url);
// logger.debug("[sendGet url for debugger: ]" + url);
try {
URL connectionURL = new URL(url);
con = (HttpURLConnection) connectionURL.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream(),"UTF-8"));
String inputLine;
// logger.debug("[response code ]" + responseCode);
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
}catch (Exception ex) {
logger.error("sendGet url = " + url,ex);
}
return response.toString();
}
/**
public String requestGet(String url, String contentType) {
HttpClient httpClient = new DefaultHttpClient();
StringBuffer responseOutput = new StringBuffer();
try {
HttpGet request = new HttpGet(url);
request.addHeader("content-type", contentType);
HttpResponse response = httpClient.execute(request);
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 200 || responseCode == 204) {
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
// System.out.println("Output from Server ...." + response.getStatusLine().getStatusCode() + "\n");
while ((output = br.readLine()) != null) {
responseOutput.append(output);
}
}
else{
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
}catch (Exception ex) {
// System.out.println("Exception Code : " + ex);
responseOutput.append("Exception Code : " + ex);
} finally {
httpClient.getConnectionManager().shutdown();
}
return responseOutput.toString();
} **/
}