package org.wiztools.restclient;
import org.wiztools.restclient.bean.ReqEntityByteArray;
import org.wiztools.restclient.bean.ReqEntitySimple;
import org.wiztools.restclient.bean.ReqEntityFile;
import org.wiztools.restclient.bean.ReqEntityStream;
import org.wiztools.restclient.bean.ReqEntityString;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.logging.Logger;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.entity.*;
/**
*
* @author subwiz
*/
class HTTPClientUtil {
private static final Logger LOG = Logger.getLogger(HTTPClientUtil.class.getName());
private static void appendHttpEntity(StringBuilder sb, HttpEntity e) {
try {
InputStream is = e.getContent();
String encoding = e.getContentEncoding().getValue();
System.out.println(encoding);
BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName(encoding)));
String str = null;
while ((str = br.readLine()) != null) {
sb.append(str);
}
br.close();
} catch (IOException ex) {
LOG.severe(ex.getMessage());
}
}
static String getHTTPRequestTrace(HttpRequest request) {
StringBuilder sb = new StringBuilder();
sb.append(request.getRequestLine());
sb.append('\n');
for (Header h : request.getAllHeaders()) {
sb.append(h.getName()).append(": ").append(h.getValue()).append('\n');
}
sb.append('\n');
// Check if the request is POST or PUT
if (request instanceof HttpEntityEnclosingRequest) {
HttpEntityEnclosingRequest r = (HttpEntityEnclosingRequest) request;
HttpEntity e = r.getEntity();
if (e != null) {
appendHttpEntity(sb, e);
}
}
return sb.toString();
}
static String getHTTPResponseTrace(HttpResponse response) {
StringBuilder sb = new StringBuilder();
sb.append(response.getStatusLine()).append('\n');
for (Header h : response.getAllHeaders()) {
sb.append(h.getName()).append(": ").append(h.getValue()).append('\n');
}
sb.append('\n');
HttpEntity e = response.getEntity();
if (e != null) {
appendHttpEntity(sb, e);
}
return sb.toString();
}
static AbstractHttpEntity getEntity(ReqEntitySimple bean)
throws UnsupportedEncodingException, IOException {
AbstractHttpEntity entity = null;
ContentType contentType = null;
if (bean.getContentType() != null) {
org.wiztools.restclient.bean.ContentType ct = bean.getContentType();
contentType = ContentType.create(ct.getContentType(), ct.getCharset());
}
if (bean instanceof ReqEntityString) {
entity = new StringEntity(((ReqEntityString) bean).getBody(), contentType);
}
else if (bean instanceof ReqEntityByteArray) {
entity = new ByteArrayEntity(((ReqEntityByteArray) bean).getBody(), contentType);
}
else if (bean instanceof ReqEntityStream) {
entity = new InputStreamEntity(((ReqEntityStream) bean).getBody(),
((ReqEntityStream) bean).getLength(), contentType);
}
else if (bean instanceof ReqEntityFile) {
entity = new FileEntity(((ReqEntityFile) bean).getBody(), contentType);
}
return entity;
}
public static org.apache.http.entity.ContentType getContentType(
org.wiztools.restclient.bean.ContentType ct) {
return ContentType.create(ct.getContentType(), ct.getCharset());
}
}