1 /*
2  * ====================================================================
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  * ====================================================================
20  *
21  * This software consists of voluntary contributions made by many
22  * individuals on behalf of the Apache Software Foundation.  For more
23  * information on the Apache Software Foundation, please see
24  * <http://www.apache.org/>.
25  *
26  */

27
28 package org.apache.http;
29
30 /**
31  * One element of an HTTP {@link Header header} value consisting of
32  * a name / value pair and a number of optional name / value parameters.
33  * <p>
34  * Some HTTP headers (such as the set-cookie header) have values that
35  * can be decomposed into multiple elements.  Such headers must be in the
36  * following form:
37  * </p>
38  * <pre>
39  * header  = [ element ] *( "," [ element ] )
40  * element = name [ "=" [ value ] ] *( ";" [ param ] )
41  * param   = name [ "=" [ value ] ]
42  *
43  * name    = token
44  * value   = ( token | quoted-string )
45  *
46  * token         = 1*&lt;any char except "="","";", &lt;"&gt; and
47  *                       white space&gt;
48  * quoted-string = &lt;"&gt; *( text | quoted-char ) &lt;"&gt;
49  * text          = any char except &lt;"&gt;
50  * quoted-char   = "\" char
51  * </pre>
52  * <p>
53  * Any amount of white space is allowed between any part of the
54  * header, element or param and is ignored. A missing value in any
55  * element or param will be stored as the empty {@link String};
56  * if the "=" is also missing <var>null</var> will be stored instead.
57  *
58  * @since 4.0
59  */

60 public interface HeaderElement {
61
62     /**
63      * Returns header element name.
64      *
65      * @return header element name
66      */

67     String getName();
68
69     /**
70      * Returns header element value.
71      *
72      * @return header element value
73      */

74     String getValue();
75
76     /**
77      * Returns an array of name / value pairs.
78      *
79      * @return array of name / value pairs
80      */

81     NameValuePair[] getParameters();
82
83     /**
84      * Returns the first parameter with the given name.
85      *
86      * @param name parameter name
87      *
88      * @return name / value pair
89      */

90     NameValuePair getParameterByName(String name);
91
92     /**
93      * Returns the total count of parameters.
94      *
95      * @return parameter count
96      */

97     int getParameterCount();
98
99     /**
100      * Returns parameter with the given index.
101      *
102      * @param index index
103      * @return name / value pair
104      */

105     NameValuePair getParameter(int index);
106
107 }
108
109