View Javadoc

1   /*
2    * $Id: HttpConstants.java 22686 2011-08-16 19:39:20Z pablo.lagreca $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.http;
12  
13  import org.mule.api.config.MuleProperties;
14  import org.mule.util.MapUtils;
15  
16  import java.util.Collections;
17  import java.util.Map;
18  
19  import org.apache.commons.collections.map.CaseInsensitiveMap;
20  
21  /**
22   * <code>HttpConstants</code> for request and response headers
23   */
24  // @ThreadSafe
25  public class HttpConstants
26  {
27      // HTTP prefix
28      public static final String HTTP10 = "HTTP/1.0";
29      public static final String HTTP1X = "HTTP/1.x";
30      public static final String HTTP11 = "HTTP/1.1";
31      public static final String DEFAULT_HTTP_VERSION = HttpConstants.HTTP11;
32  
33      // Default HTTP port
34      public static final int DEFAULT_HTTP_PORT = 80;
35  
36      // HTTP Methods
37      public static final String METHOD_OPTIONS = "OPTIONS";
38      public static final String METHOD_GET = "GET";
39      public static final String METHOD_HEAD = "HEAD";
40      public static final String METHOD_POST = "POST";
41      public static final String METHOD_PUT = "PUT";
42      public static final String METHOD_DELETE = "DELETE";
43      public static final String METHOD_TRACE = "TRACE";
44      public static final String METHOD_CONNECT = "CONNECT";
45  
46      // Date header format
47      public static final String DATE_FORMAT = "EEE, dd MMM yyyy hh:mm:ss zzz";
48  
49      // Newline
50      public static final String CRLF = "\r\n";
51      // Mime/Content separator
52      public static final String HEADER_CONTENT_SEPARATOR = CRLF + CRLF;
53  
54      // The default content type
55      public static final String DEFAULT_CONTENT_TYPE = "text/plain";
56  
57      // Headers
58      public static final String HEADER_ACCEPT = "Accept"; // [Request]
59      public static final String HEADER_ACCEPT_CHARSET = "Accept-Charset"; // [Request]
60      public static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding"; // [Request]
61      public static final String HEADER_ACCEPT_LANGUAGE = "Accept-Language"; // [Request]
62      public static final String HEADER_ACCEPT_RANGES = "Accept-Ranges"; // [Response]
63      public static final String HEADER_AGE = "Age"; // [Response]
64      public static final String HEADER_ALLOW = "Allow"; // [Entity]
65      public static final String HEADER_AUTHORIZATION = "Authorization"; // [Request]
66      public static final String HEADER_CACHE_CONTROL = "Cache-Control"; // [General]
67      public static final String HEADER_CONNECTION = "Connection"; // [General]
68      public static final String HEADER_CONTENT_ENCODING = "Content-Encoding"; // [Entity]
69      public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition"; // [Entity]
70      public static final String HEADER_CONTENT_LANGUAGE = "Content-Language"; // [Entity]
71      public static final String HEADER_CONTENT_LENGTH = "Content-Length"; // [Entity]
72      public static final String HEADER_CONTENT_LOCATION = "Content-Location"; // [Entity]
73      public static final String HEADER_CONTENT_MD5 = "Content-MD5"; // [Entity]
74      public static final String HEADER_CONTENT_RANGE = "Content-Range"; // [Entity]
75      public static final String HEADER_CONTENT_TYPE = "Content-Type"; // [Entity]
76      public static final String HEADER_COOKIE = "Cookie"; // [Request]
77      public static final String HEADER_COOKIE_SET = "Set-Cookie"; // [Response]
78      public static final String HEADER_DATE = "Date"; // [General]
79      public static final String HEADER_ETAG = "ETag"; // [Response]
80      public static final String HEADER_EXPECT = "Expect"; // [Request]
81      public static final String HEADER_EXPIRES = "Expires"; // [Entity]
82      public static final String HEADER_FROM = "From"; // [Request]
83      public static final String HEADER_HOST = "Host"; // [Request]
84      public static final String HEADER_IF_MATCH = "If-Match"; // [Request]
85      public static final String HEADER_IF_MODIFIED_SINCE = "If-Modified-Since"; // [Request]
86      public static final String HEADER_IF_NONE_MATCH = "If-None-Match"; // [Request]
87      public static final String HEADER_IF_RANGE = "If-Range"; // [Request]
88      public static final String HEADER_IF_UNMODIFIED_SINCE = "If-Unmodified-Since"; // [Request]
89      public static final String HEADER_KEEP_ALIVE = "Keep-Alive"; // [Entity]
90      public static final String HEADER_LAST_MODIFIED = "Last-Modified"; // [Entity]
91      public static final String HEADER_LOCATION = "Location"; // [Response]
92      public static final String HEADER_MAX_FORWARDS = "Max-Forwards"; // [Request]
93      public static final String HEADER_PRAGMA = "Pragma"; // [General]
94      public static final String HEADER_PROXY_AUTHENTICATE = "Proxy-Authenticate"; // [Response]
95      public static final String HEADER_PROXY_AUTHORIZATION = "Proxy-Authorization"; // [Request]
96      public static final String HEADER_RANGE = "Range"; // [Request]
97      public static final String HEADER_REFERER = "Referer"; // [Request]
98      public static final String HEADER_RETRY_AFTER = "Retry-After"; // [Response]
99      public static final String HEADER_SERVER = "Server"; // [Response]
100     public static final String HEADER_SLUG = "Slug"; // [Response]
101     public static final String HEADER_TE = "TE"; // [Request]
102     public static final String HEADER_TRAILER = "Trailer"; // [General]
103     public static final String HEADER_TRANSFER_ENCODING = "Transfer-Encoding"; // [General]
104     public static final String HEADER_UPGRADE = "Upgrade"; // [General]
105     public static final String HEADER_USER_AGENT = "User-Agent"; // [Request]
106     public static final String HEADER_VARY = "Vary"; // [Response]
107     public static final String HEADER_VIA = "Via"; // [General]
108     public static final String HEADER_WARNING = "Warning"; // [General]
109     public static final String HEADER_WWW_AUTHENTICATE = "WWW-Authenticate"; // [Response]
110 
111     // This is a POST-related request header value
112     public static final String HEADER_EXPECT_CONTINUE_REQUEST_VALUE = "100-continue"; // [Request]
113 
114     // Chunked transfer encoding indicator
115     public static final String TRANSFER_ENCODING_CHUNKED = "chunked";
116 
117     // Custom http header prefix
118     public static final String CUSTOM_HEADER_PREFIX = "X-";
119 
120     // Key for X-MULE headers
121     public static final String X_PROPERTY_PREFIX = CUSTOM_HEADER_PREFIX + MuleProperties.PROPERTY_PREFIX;
122 
123     // Custom mule http header
124     public static final String HEADER_MULE_SESSION = CUSTOM_HEADER_PREFIX + MuleProperties.MULE_SESSION_PROPERTY;
125 
126     // case-insenitive Maps of header names to their normalized representations
127     public static final Map<String, String> REQUEST_HEADER_NAMES;
128     public static final Map<String, String> RESPONSE_HEADER_NAMES;
129     public static final Map<String, String> ALL_HEADER_NAMES;
130 
131     // Status codes
132     public static final int SC_CONTINUE = 100;
133     public static final int SC_SWITCHING_PROTOCOLS = 101;
134     public static final int SC_PROCESSING = 102;
135     public static final int SC_OK = 200;
136     public static final int SC_CREATED = 201;
137     public static final int SC_ACCEPTED = 202;
138     public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
139     public static final int SC_NO_CONTENT = 204;
140     public static final int SC_RESET_CONTENT = 205;
141     public static final int SC_PARTIAL_CONTENT = 206;
142     public static final int SC_MULTI_STATUS = 207;
143     public static final int SC_MULTIPLE_CHOICES = 300;
144     public static final int SC_MOVED_PERMANENTLY = 301;
145     public static final int SC_MOVED_TEMPORARILY = 302;
146     public static final int SC_SEE_OTHER = 303;
147     public static final int SC_NOT_MODIFIED = 304;
148     public static final int SC_USE_PROXY = 305;
149     public static final int SC_TEMPORARY_REDIRECT = 307;
150     public static final int SC_BAD_REQUEST = 400;
151     public static final int SC_UNAUTHORIZED = 401;
152     public static final int SC_PAYMENT_REQUIRED = 402;
153     public static final int SC_FORBIDDEN = 403;
154     public static final int SC_NOT_FOUND = 404;
155     public static final int SC_METHOD_NOT_ALLOWED = 405;
156     public static final int SC_NOT_ACCEPTABLE = 406;
157     public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
158     public static final int SC_REQUEST_TIMEOUT = 408;
159     public static final int SC_CONFLICT = 409;
160     public static final int SC_GONE = 410;
161     public static final int SC_LENGTH_REQUIRED = 411;
162     public static final int SC_PRECONDITION_FAILED = 412;
163     public static final int SC_REQUEST_TOO_LONG = 413;
164     public static final int SC_REQUEST_URI_TOO_LONG = 414;
165     public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415;
166     public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
167     public static final int SC_EXPECTATION_FAILED = 417;
168     public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
169     public static final int SC_METHOD_FAILURE = 420;
170     public static final int SC_UNPROCESSABLE_ENTITY = 422;
171     public static final int SC_LOCKED = 423;
172     public static final int SC_FAILED_DEPENDENCY = 424;
173     public static final int SC_INTERNAL_SERVER_ERROR = 500;
174     public static final int SC_NOT_IMPLEMENTED = 501;
175     public static final int SC_BAD_GATEWAY = 502;
176     public static final int SC_SERVICE_UNAVAILABLE = 503;
177     public static final int SC_GATEWAY_TIMEOUT = 504;
178     public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
179     public static final int SC_INSUFFICIENT_STORAGE = 507;
180 
181     static
182     {
183         String[] strings = new String[]{HEADER_ACCEPT, HEADER_ACCEPT_CHARSET, HEADER_ACCEPT_ENCODING,
184             HEADER_ACCEPT_LANGUAGE, HEADER_AUTHORIZATION, HEADER_CACHE_CONTROL, HEADER_CONNECTION,
185             HEADER_COOKIE, HEADER_DATE, HEADER_EXPECT, HEADER_FROM, HEADER_HOST, HEADER_IF_MATCH,
186             HEADER_IF_MODIFIED_SINCE, HEADER_IF_NONE_MATCH, HEADER_IF_RANGE, HEADER_IF_UNMODIFIED_SINCE,
187             HEADER_MAX_FORWARDS, HEADER_PRAGMA, HEADER_PROXY_AUTHORIZATION, HEADER_RANGE, HEADER_REFERER,
188             HEADER_TE, HEADER_TRAILER, HEADER_TRANSFER_ENCODING, HEADER_UPGRADE, HEADER_USER_AGENT,
189             HEADER_VIA, HEADER_WARNING, HEADER_CONTENT_LENGTH, HEADER_SLUG};
190 
191         REQUEST_HEADER_NAMES = Collections.unmodifiableMap(MapUtils.mapWithKeysAndValues(
192             CaseInsensitiveMap.class, strings, strings));
193 
194         strings = new String[]{HEADER_ACCEPT_RANGES, HEADER_AGE, HEADER_ALLOW, HEADER_CACHE_CONTROL,
195             HEADER_CONNECTION, HEADER_CONTENT_ENCODING, HEADER_CONTENT_DISPOSITION, 
196             HEADER_CONTENT_LANGUAGE, HEADER_COOKIE_SET, HEADER_CONTENT_LOCATION, HEADER_CONTENT_MD5, 
197             HEADER_CONTENT_RANGE, HEADER_DATE, HEADER_ETAG, HEADER_EXPIRES, HEADER_LAST_MODIFIED, 
198             HEADER_LOCATION, HEADER_PRAGMA, HEADER_PROXY_AUTHENTICATE, HEADER_RETRY_AFTER, 
199             HEADER_SERVER, HEADER_TRAILER, HEADER_TRANSFER_ENCODING, HEADER_UPGRADE, HEADER_VARY, 
200             HEADER_VIA, HEADER_WARNING, HEADER_WWW_AUTHENTICATE};
201 
202         RESPONSE_HEADER_NAMES = Collections.unmodifiableMap(MapUtils.mapWithKeysAndValues(
203             CaseInsensitiveMap.class, strings, strings));
204 
205         strings = new String[]{HEADER_ALLOW, HEADER_CACHE_CONTROL, HEADER_CONNECTION, 
206             HEADER_CONTENT_DISPOSITION, HEADER_CONTENT_ENCODING, HEADER_CONTENT_LANGUAGE, 
207             HEADER_CONTENT_LENGTH, HEADER_CONTENT_LOCATION, HEADER_CONTENT_MD5, HEADER_CONTENT_RANGE,
208             HEADER_CONTENT_TYPE, HEADER_DATE, HEADER_EXPIRES, HEADER_KEEP_ALIVE, HEADER_LAST_MODIFIED, 
209             HEADER_PRAGMA, HEADER_TRAILER, HEADER_TRANSFER_ENCODING, HEADER_UPGRADE, HEADER_VIA, 
210             HEADER_WARNING};
211 
212         Map<String, String> allHeaders = MapUtils.mapWithKeysAndValues(CaseInsensitiveMap.class, strings,
213             strings);
214         allHeaders.putAll(REQUEST_HEADER_NAMES);
215         allHeaders.putAll(RESPONSE_HEADER_NAMES);
216         ALL_HEADER_NAMES = Collections.unmodifiableMap(allHeaders);
217     }
218 
219 }