package com.grendelscan.commons.http.factories;
import java.net.URISyntaxException;
import org.apache.http.Header;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpRequest;
import org.apache.http.ProtocolVersion;
import org.apache.http.client.methods.HttpDelete;
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.HttpRequestBase;
import org.apache.http.client.methods.HttpTrace;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.params.HttpProtocolParams;
import com.grendelscan.commons.http.wrappers.HttpRequestWrapper;
public class HttpRequestFactory
{
/**
*
* @param method
* @param uri
* @param headers
* @param body
* @param version
* @return
* @throws URISyntaxException
*/
public static HttpRequest makeNonScanRequest(final String method, final String uri, final Header headers[], final byte[] body, final ProtocolVersion version)
{
HttpRequestBase request = null;
boolean entity = false;
if (method.equalsIgnoreCase(HttpGet.METHOD_NAME))
{
request = new HttpGet(uri);
}
else if (method.equalsIgnoreCase(HttpPut.METHOD_NAME))
{
entity = true;
request = new HttpPut(uri);
}
else if (method.equalsIgnoreCase(HttpPost.METHOD_NAME))
{
request = new HttpPost(uri);
entity = true;
}
else if (method.equalsIgnoreCase(HttpTrace.METHOD_NAME))
{
request = new HttpTrace(uri);
}
else if (method.equalsIgnoreCase(HttpOptions.METHOD_NAME))
{
request = new HttpOptions(uri);
}
else if (method.equalsIgnoreCase(HttpDelete.METHOD_NAME))
{
request = new HttpDelete(uri);
}
else if (method.equalsIgnoreCase(HttpHead.METHOD_NAME))
{
request = new HttpHead(uri);
}
if (entity && body != null)
{
((HttpEntityEnclosingRequest) request).setEntity(new ByteArrayEntity(body));
}
ProtocolVersion versionToUse = version;
if (versionToUse == null)
{
versionToUse = HttpRequestWrapper.DEFAULT_PROTOCL_VERSION;
}
HttpProtocolParams.setVersion(request.getParams(), versionToUse);
if (headers != null)
{
request.setHeaders(headers);
}
return request;
}
}