package com.nvarghese.beowulf.common.http.txn; import java.net.URI; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpRequest; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpOptions; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpTrace; import org.apache.http.message.BasicHttpEntityEnclosingRequest; import org.apache.http.message.BasicHttpRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HttpTransactionFactory { /* logger */ static Logger logger = LoggerFactory.getLogger(HttpTransactionFactory.class); /** * * @param request * @return */ public static HttpGet convertToHttpGet(HttpRequest request) { HttpGet get = null; get = new HttpGet(request.getRequestLine().getUri()); get.setHeaders(request.getAllHeaders()); get.setParams(request.getParams()); return get; } /** * * @param request * @return */ public static HttpPost convertToHttpPost(BasicHttpEntityEnclosingRequest request) { HttpPost post = null; post = new HttpPost(request.getRequestLine().getUri()); post.setHeaders(request.getAllHeaders()); post.setEntity(request.getEntity()); post.setParams(request.getParams()); return post; } /** * Creates http transaction object * * @param request * @param referer * @return */ public static AbstractHttpTransaction createTransaction(HttpRequest request, String referer, TransactionSource source) { AbstractHttpTransaction transaction = null; if (request.getRequestLine().getMethod().equals(HttpMethodType.GET.getValue())) { HttpGet get = null; if (request instanceof BasicHttpRequest) { get = convertToHttpGet(request); } else if (request instanceof HttpGet) { get = (HttpGet) request; } transaction = new HttpGetTransaction(get, referer, source); } else if (request.getRequestLine().getMethod().equals(HttpMethodType.POST.getValue())) { HttpPost post = null; if (request instanceof BasicHttpEntityEnclosingRequest) { post = convertToHttpPost((BasicHttpEntityEnclosingRequest) request); } else if (request instanceof HttpPost) { post = (HttpPost) request; } transaction = new HttpPostTransaction(post, referer, source); } return transaction; } /** * * @param method * @param uri * @param entity * @param referer * @return */ public static AbstractHttpTransaction createTransaction(HttpMethodType method, URI uri, HttpEntity entity, String referer, TransactionSource source) { return createTransaction(createHttpRequest(method, uri, null, entity), referer, source); } /** * Create http request object * * @param method * @param uri * @param headers * @param entity * @return */ public static HttpRequest createHttpRequest(HttpMethodType method, URI uri, Header[] headers, HttpEntity entity) { HttpRequest request = null; if (method == HttpMethodType.GET) { HttpGet get = new HttpGet(); get.setURI(uri); request = get; } else if (method == HttpMethodType.TRACE) { HttpTrace trace = new HttpTrace(); trace.setURI(uri); request = trace; } else if (method == HttpMethodType.OPTIONS) { HttpOptions options = new HttpOptions(); options.setURI(uri); request = options; } else if (method == HttpMethodType.HEAD) { HttpHead head = new HttpHead(); head.setURI(uri); request = head; } else if (method == HttpMethodType.POST) { HttpPost post = new HttpPost(); post.setURI(uri); post.setEntity(entity); request = post; } else if (method == HttpMethodType.PUT) { HttpPut put = new HttpPut(); put.setURI(uri); put.setEntity(entity); request = put; } if (request != null) { if (headers != null) { request.setHeaders(headers); } } return request; } }