package com.grendelscan.proxy;
/*
* ==================================================================== Licensed
* to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional
* information regarding copyright ownership. The ASF licenses this file to you
* under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many individuals on
* behalf of the Apache Software Foundation. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*
*/
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestFactory;
import org.apache.http.MethodNotSupportedException;
import org.apache.http.RequestLine;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.apache.http.message.BasicHttpRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Based on the DefaultHttpRequestFactory in Apache HttpComponents
* @author David Byrne
*
*/
public class CustomHttpRequestFactory implements HttpRequestFactory
{
private static final Logger LOGGER = LoggerFactory.getLogger(CustomHttpRequestFactory.class);
public CustomHttpRequestFactory()
{
super();
}
@Override
public HttpRequest newHttpRequest(final RequestLine requestline) throws MethodNotSupportedException
{
if (requestline == null)
{
IllegalArgumentException e = new IllegalArgumentException("Request line may not be null");
LOGGER.error("Null request line in CustomHttpRequestFactory.newHttpRequest", e);
throw e;
}
return newHttpRequest(requestline.getMethod(), requestline.getUri());
}
@Override
public HttpRequest newHttpRequest(final String method, final String uri) throws MethodNotSupportedException
{
LOGGER.trace("Creating new HTTP request object for \"" + method + " " + uri + "\"");
if (method.equals("GET") || method.equals("HEAD") || method.equals("CONNECT") || method.equals("DELETE"))
{
return new BasicHttpRequest(method, uri);
}
else if (method.equals("POST") || method.equals("PUT"))
{
return new BasicHttpEntityEnclosingRequest(method, uri);
}
else
{
MethodNotSupportedException e = new MethodNotSupportedException(method + " method not supported");
LOGGER.error("Method \"" + method + "\" isn't supported", e);
throw e;
}
}
}