OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_HTTP_HTTP_UTIL_H_ | 5 #ifndef NET_HTTP_HTTP_UTIL_H_ |
6 #define NET_HTTP_HTTP_UTIL_H_ | 6 #define NET_HTTP_HTTP_UTIL_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
| 11 #include <set> |
11 #include <string> | 12 #include <string> |
12 #include <vector> | 13 #include <vector> |
13 | 14 |
14 #include "base/macros.h" | 15 #include "base/macros.h" |
15 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
16 #include "base/strings/string_piece.h" | 17 #include "base/strings/string_piece.h" |
17 #include "base/strings/string_tokenizer.h" | 18 #include "base/strings/string_tokenizer.h" |
18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
19 #include "net/base/net_export.h" | 20 #include "net/base/net_export.h" |
20 #include "net/http/http_byte_range.h" | 21 #include "net/http/http_byte_range.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 224 |
224 // Gets a vector of common HTTP status codes for histograms of status | 225 // Gets a vector of common HTTP status codes for histograms of status |
225 // codes. Currently returns everything in the range [100, 600), plus 0 | 226 // codes. Currently returns everything in the range [100, 600), plus 0 |
226 // (for invalid responses/status codes). | 227 // (for invalid responses/status codes). |
227 static std::vector<int> GetStatusCodesForHistogram(); | 228 static std::vector<int> GetStatusCodesForHistogram(); |
228 | 229 |
229 // Maps an HTTP status code to one of the status codes in the vector | 230 // Maps an HTTP status code to one of the status codes in the vector |
230 // returned by GetStatusCodesForHistogram. | 231 // returned by GetStatusCodesForHistogram. |
231 static int MapStatusCodeForHistogram(int code); | 232 static int MapStatusCodeForHistogram(int code); |
232 | 233 |
| 234 // Returns true if |accept_encoding| is well-formed. Parsed encodings turned |
| 235 // to lower case, are placed to provided string-set. Resulting set is |
| 236 // augmented to fulfill the RFC 2616 and RFC 7231 recommendations, e.g. if |
| 237 // there is no encodings specified, then {"*"} is returned to denote that |
| 238 // client has to encoding preferences (but it does not imply that the |
| 239 // user agent will be able to correctly process all encodings). |
| 240 static bool ParseAcceptEncoding(const std::string& accept_encoding, |
| 241 std::set<std::string>* allowed_encodings); |
| 242 |
| 243 // Returns true if |content_encoding| is well-formed. Parsed encodings turned |
| 244 // to lower case, are placed to provided string-set. See sections 14.11 and |
| 245 // 3.5 of RFC 2616. |
| 246 static bool ParseContentEncoding(const std::string& content_encoding, |
| 247 std::set<std::string>* used_encodings); |
| 248 |
233 // Used to iterate over the name/value pairs of HTTP headers. To iterate | 249 // Used to iterate over the name/value pairs of HTTP headers. To iterate |
234 // over the values in a multi-value header, use ValuesIterator. | 250 // over the values in a multi-value header, use ValuesIterator. |
235 // See AssembleRawHeaders for joining line continuations (this iterator | 251 // See AssembleRawHeaders for joining line continuations (this iterator |
236 // does not expect any). | 252 // does not expect any). |
237 class NET_EXPORT HeadersIterator { | 253 class NET_EXPORT HeadersIterator { |
238 public: | 254 public: |
239 HeadersIterator(std::string::const_iterator headers_begin, | 255 HeadersIterator(std::string::const_iterator headers_begin, |
240 std::string::const_iterator headers_end, | 256 std::string::const_iterator headers_end, |
241 const std::string& line_delimiter); | 257 const std::string& line_delimiter); |
242 ~HeadersIterator(); | 258 ~HeadersIterator(); |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 // True if quotes values are required to be properly quoted; false if | 441 // True if quotes values are required to be properly quoted; false if |
426 // mismatched quotes and other problems with quoted values should be more | 442 // mismatched quotes and other problems with quoted values should be more |
427 // or less gracefully treated as valid. | 443 // or less gracefully treated as valid. |
428 bool strict_quotes_; | 444 bool strict_quotes_; |
429 }; | 445 }; |
430 }; | 446 }; |
431 | 447 |
432 } // namespace net | 448 } // namespace net |
433 | 449 |
434 #endif // NET_HTTP_HTTP_UTIL_H_ | 450 #endif // NET_HTTP_HTTP_UTIL_H_ |
OLD | NEW |