All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.simpleframework.http.message.Header Maven / Gradle / Ivy

/*
 * Header.java February 2001
 *
 * Copyright (C) 2001, Niall Gallagher 
 *
 * Licensed 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 org.simpleframework.http.message;

import java.util.List;
import java.util.Locale;

import org.simpleframework.http.Address;
import org.simpleframework.http.Cookie;
import org.simpleframework.http.Path;
import org.simpleframework.http.Query;

/**
 * This is a Header object that is used to represent a
 * basic form for the HTTP request message. This is used to extract
 * values such as the request line and header values from the request
 * message. Access to header values is done case insensitively.
 * 

* As well as providing the header values and request line values * this will also provide convenience methods which enable the user * to determine the length of the body this message header prefixes. * * @author Niall Gallagher */ public interface Header extends Segment { /** * This can be used to get the target specified for this HTTP * request. This corresponds to the URI sent in the request * line. Typically this will be the path part of the URI, but * can be the full URI if the request is a proxy request. * * @return the target URI that this HTTP request specifies */ String getTarget(); /** * This method returns a CharSequence holding the data * consumed for the request. A character sequence is returned as it * can provide a much more efficient means of representing the header * data by just wrapping the consumed byte array. * * @return this returns the characters consumed for the header */ CharSequence getHeader(); /** * This is used to acquire the address from the request line. * An address is the full URI including the scheme, domain, * port and the query parts. This allows various parameters * to be acquired without having to parse the target. * * @return this returns the address of the request line */ Address getAddress(); /** * This is used to acquire the path as extracted from the * the HTTP request URI. The Path object that is * provided by this method is immutable, it represents the * normalized path only part from the request URI. * * @return this returns the normalized path for the request */ Path getPath(); /** * This method is used to acquire the query part from the * HTTP request URI target. This will return only the values * that have been extracted from the request URI target. * * @return the query associated with the HTTP target URI */ Query getQuery(); /** * This can be used to get the HTTP method for this request. The * HTTP specification RFC 2616 specifies the HTTP request methods * in section 9, Method Definitions. Typically this will be a * GET or POST method, but can be any valid alphabetic token. * * @return the HTTP method that this request has specified */ String getMethod(); /** * This can be used to get the major number from a HTTP version. * The major version corresponds to the major protocol type, that * is the 1 of a HTTP/1.1 version string. Typically the major * type is 1, by can be 0 for HTTP/0.9 clients. * * @return the major version number for the HTTP message */ int getMajor(); /** * This can be used to get the minor number from a HTTP version. * The minor version corresponds to the minor protocol type, that * is the 0 of a HTTP/1.0 version string. This number is typically * used to determine whether persistent connections are supported. * * @return the minor version number for the HTTP message */ int getMinor(); /** * This method is used to get a List of the names * for the headers. This will provide the original names for the * HTTP headers for the message. Modifications to the provided * list will not affect the header, the list is a simple copy. * * @return this returns a list of the names within the header */ List getNames(); /** * This can be used to get the integer of the first message header * that has the specified name. This is a convenience method that * avoids having to deal with parsing the value of the requested * HTTP message header. This returns -1 if theres no HTTP header * value for the specified name. * * @param name the HTTP message header to get the value from * * @return this returns the date as a long from the header value */ int getInteger(String name); /** * This can be used to get the date of the first message header * that has the specified name. This is a convenience method that * avoids having to deal with parsing the value of the requested * HTTP message header. This returns -1 if theres no HTTP header * value for the specified name. * * @param name the HTTP message header to get the value from * * @return this returns the date as a long from the header value */ long getDate(String name); /** * This is used to acquire a cookie usiing the name of that cookie. * If the cookie exists within the HTTP header then it is returned * as a Cookie object. Otherwise this method will * return null. Each cookie object will contain the name, value * and path of the cookie as well as the optional domain part. * * @param name this is the name of the cookie object to acquire * * @return this returns a cookie object from the header or null */ Cookie getCookie(String name); /** * This is used to acquire all cookies that were sent in the header. * If any cookies exists within the HTTP header they are returned * as Cookie objects. Otherwise this method will an * empty list. Each cookie object will contain the name, value and * path of the cookie as well as the optional domain part. * * @return this returns all cookie objects from the HTTP header */ List getCookies(); /** * This is used to acquire the locales from the request header. The * locales are provided in the Accept-Language header. * This provides an indication as to the languages that the client * accepts. It provides the locales in preference order. * * @return this returns the locales preferred by the client */ List getLocales(); /** * This is used to determine if the header represents one that * requires the HTTP/1.1 continue expectation. If the request * does require this expectation then it should be send the * 100 status code which prompts delivery of the message body. * * @return this returns true if a continue expectation exists */ boolean isExpectContinue(); /** * This is used to see if there is a HTTP message header with the * given name in this container. If there is a HTTP message header * with the specified name then this returns true otherwise false. * * @param name the HTTP message header to get the value from * * @return this returns true if the HTTP message header exists */ boolean contains(String name); /** * This method returns a string representing the header that was * consumed by this consumer. For performance reasons it is better * to acquire the character sequence representing the header as it * does not require the allocation on new memory. * * @return this returns a string representation of this request */ String toString(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy