2 Header file for HttpLib.
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef _DXE_HTTP_LIB_H_
18 #define _DXE_HTTP_LIB_H_
21 #include <Library/NetLib.h>
22 #include <Library/HttpLib.h>
23 #include <Library/BaseLib.h>
24 #include <Library/DebugLib.h>
25 #include <Library/MemoryAllocationLib.h>
26 #include <Library/UefiBootServicesTableLib.h>
27 #include <IndustryStandard/Http11.h>
28 #include <Protocol/HttpUtilities.h>
30 #define BIT(x) (1 << x)
32 #define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n"
33 #define EMPTY_SPACE " "
35 #define NET_IS_HEX_CHAR(Ch) \
36 ((('0' <= (Ch)) && ((Ch) <= '9')) || \
37 (('A' <= (Ch)) && ((Ch) <= 'F')) || \
38 (('a' <= (Ch)) && ((Ch) <= 'f')))
41 // Field index of the HTTP URL parse result.
43 #define HTTP_URI_FIELD_SCHEME 0
44 #define HTTP_URI_FIELD_AUTHORITY 1
45 #define HTTP_URI_FIELD_PATH 2
46 #define HTTP_URI_FIELD_QUERY 3
47 #define HTTP_URI_FIELD_FRAGMENT 4
48 #define HTTP_URI_FIELD_USERINFO 5
49 #define HTTP_URI_FIELD_HOST 6
50 #define HTTP_URI_FIELD_PORT 7
51 #define HTTP_URI_FIELD_MAX 8
54 // Structure to store the parse result of a HTTP URL.
59 } HTTP_URL_FILED_DATA
;
63 HTTP_URL_FILED_DATA FieldData
[HTTP_URI_FIELD_MAX
];
69 UrlParserSchemeColon
, // ":"
70 UrlParserSchemeColonSlash
, // ":/"
71 UrlParserSchemeColonSlashSlash
, // "://"
73 UrlParserAtInAuthority
,
75 UrlParserQueryStart
, // "?"
77 UrlParserFragmentStart
, // "#"
80 UrlParserHostStart
, // "@"
82 UrlParserHostIpv6
, // "["(Ipv6 address) "]"
83 UrlParserPortStart
, // ":"
86 } HTTP_URL_PARSE_STATE
;