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*<any char except "=", ",", ";", <"> and
47 * white space>
48 * quoted-string = <"> *( text | quoted-char ) <">
49 * text = any char except <">
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