2 Header file for HttpLib.
\r
4 Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
\r
5 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
\r
7 SPDX-License-Identifier: BSD-2-Clause-Patent
\r
11 #ifndef _DXE_HTTP_LIB_H_
\r
12 #define _DXE_HTTP_LIB_H_
\r
15 #include <Library/NetLib.h>
\r
16 #include <Library/HttpLib.h>
\r
17 #include <Library/BaseLib.h>
\r
18 #include <Library/DebugLib.h>
\r
19 #include <Library/MemoryAllocationLib.h>
\r
20 #include <Library/UefiBootServicesTableLib.h>
\r
21 #include <IndustryStandard/Http11.h>
\r
22 #include <Protocol/HttpUtilities.h>
\r
24 #define BIT(x) (1 << x)
\r
26 #define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n"
\r
27 #define EMPTY_SPACE " "
\r
29 #define NET_IS_HEX_CHAR(Ch) \
\r
30 ((('0' <= (Ch)) && ((Ch) <= '9')) || \
\r
31 (('A' <= (Ch)) && ((Ch) <= 'F')) || \
\r
32 (('a' <= (Ch)) && ((Ch) <= 'f')))
\r
35 // Field index of the HTTP URL parse result.
\r
37 #define HTTP_URI_FIELD_SCHEME 0
\r
38 #define HTTP_URI_FIELD_AUTHORITY 1
\r
39 #define HTTP_URI_FIELD_PATH 2
\r
40 #define HTTP_URI_FIELD_QUERY 3
\r
41 #define HTTP_URI_FIELD_FRAGMENT 4
\r
42 #define HTTP_URI_FIELD_USERINFO 5
\r
43 #define HTTP_URI_FIELD_HOST 6
\r
44 #define HTTP_URI_FIELD_PORT 7
\r
45 #define HTTP_URI_FIELD_MAX 8
\r
47 #define HTTP_URI_PORT_MAX_NUM 65535
\r
50 // Structure to store the parse result of a HTTP URL.
\r
55 } HTTP_URL_FILED_DATA;
\r
59 HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX];
\r
65 UrlParserSchemeColon, // ":"
\r
66 UrlParserSchemeColonSlash, // ":/"
\r
67 UrlParserSchemeColonSlashSlash, // "://"
\r
69 UrlParserAtInAuthority,
\r
71 UrlParserQueryStart, // "?"
\r
73 UrlParserFragmentStart, // "#"
\r
76 UrlParserHostStart, // "@"
\r
78 UrlParserHostIpv6, // "["(Ipv6 address) "]"
\r
79 UrlParserPortStart, // ":"
\r
82 } HTTP_URL_PARSE_STATE;
\r