/*
* Copyright 2010 Ning, Inc.
*
* Ning 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.
*
*/
package com.ning.http.client;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.util.Collection;
import java.util.List;
/**
* The Request class can be used to construct HTTP request:
* <blockquote><pre>
* Request r = new RequestBuilder().setUrl("url")
* .setRealm((new Realm.RealmBuilder()).setPrincipal(user)
* .setPassword(admin)
* .setRealmName("MyRealm")
* .setScheme(Realm.AuthScheme.DIGEST).build());
* r.execute();
* </pre></blockquote>
*/
public interface Request {
/**
* An entity that can be used to manipulate the Request's body output before it get sent.
*/
public static interface EntityWriter {
public void writeEntity(OutputStream out) throws IOException;
}
/**
* Return the request's type (GET, POST, etc.)
*
* @return the request's type (GET, POST, etc.)
* @deprecated - use getMethod
*/
public String getReqType();
/**
* Return the request's method name (GET, POST, etc.)
*
* @return the request's method name (GET, POST, etc.)
*/
public String getMethod();
/**
* Return the decoded url
*
* @return the decoded url
*/
public String getUrl();
/**
* Return the InetAddress to override
*
* @return the InetAddress
*/
public InetAddress getInetAddress();
/**
* Return the undecoded url
*
* @return the undecoded url
*/
public String getRawUrl();
/**
* Return the current set of Headers.
*
* @return a {@link FluentCaseInsensitiveStringsMap} contains headers.
*/
public FluentCaseInsensitiveStringsMap getHeaders();
/**
* Return Coookie.
*
* @return an unmodifiable Collection of Cookies
*/
public Collection<Cookie> getCookies();
/**
* Return the current request's body as a byte array
*
* @return a byte array of the current request's body.
*/
public byte[] getByteData();
/**
* Return the current request's body as a string
*
* @return an String representation of the current request's body.
*/
public String getStringData();
/**
* Return the current request's body as an InputStream
*
* @return an InputStream representation of the current request's body.
*/
public InputStream getStreamData();
/**
* Return the current request's body as an EntityWriter
*
* @return an EntityWriter representation of the current request's body.
*/
public EntityWriter getEntityWriter();
/**
* Return the current request's body generator.
*
* @return A generator for the request body.
*/
public BodyGenerator getBodyGenerator();
/**
* Return the current size of the content-lenght header based on the body's size.
*
* @return the current size of the content-lenght header based on the body's size.
* @deprecated
*/
public long getLength();
/**
* Return the current size of the content-lenght header based on the body's size.
*
* @return the current size of the content-lenght header based on the body's size.
*/
public long getContentLength();
/**
* Return the current parameters.
*
* @return a {@link FluentStringsMap} of parameters.
*/
public FluentStringsMap getParams();
/**
* Return the current {@link Part}
*
* @return the current {@link Part}
*/
public List<Part> getParts();
/**
* Return the virtual host value.
*
* @return the virtual host value.
*/
public String getVirtualHost();
/**
* Return the query params.
*
* @return {@link FluentStringsMap} of query string
*/
public FluentStringsMap getQueryParams();
/**
* Return the {@link ProxyServer}
*
* @return the {@link ProxyServer}
*/
public ProxyServer getProxyServer();
/**
* Return the {@link Realm}
*
* @return the {@link Realm}
*/
public Realm getRealm();
/**
* Return the {@link File} to upload.
*
* @return the {@link File} to upload.
*/
public File getFile();
/**
* Return the <tt>true></tt> to follow redirect
*
* @return the <tt>true></tt> to follow redirect
*/
public boolean isRedirectEnabled();
/**
*
* @return <tt>true></tt> if request's redirectEnabled setting
* should be used in place of client's
*/
public boolean isRedirectOverrideSet();
/**
* Return Per request configuration.
*
* @return Per request configuration.
*/
public PerRequestConfig getPerRequestConfig();
/**
* Return the HTTP Range header value, or
*
* @return the range header value, or 0 is not set.
*/
public long getRangeOffset();
/**
* Return the encoding value used when encoding the request's body.
*
* @return the encoding value used when encoding the request's body.
*/
public String getBodyEncoding();
public boolean isUseRawUrl();
}