]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.h
0d0ad3d8ffc34b5d5d1196552402d92b73ed6f18
[mirror_edk2.git] / MdeModulePkg / Library / DxeHttpLib / DxeHttpLib.h
1 /** @file
2 Header file for HttpLib.
3
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
6
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
11
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.
14
15 **/
16
17 #ifndef _DXE_HTTP_LIB_H_
18 #define _DXE_HTTP_LIB_H_
19
20 #include <Uefi.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>
29
30 #define BIT(x) (1 << x)
31
32 #define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n"
33 #define EMPTY_SPACE " "
34
35 #define NET_IS_HEX_CHAR(Ch) \
36 ((('0' <= (Ch)) && ((Ch) <= '9')) || \
37 (('A' <= (Ch)) && ((Ch) <= 'F')) || \
38 (('a' <= (Ch)) && ((Ch) <= 'f')))
39
40 //
41 // Field index of the HTTP URL parse result.
42 //
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
52
53 //
54 // Structure to store the parse result of a HTTP URL.
55 //
56 typedef struct {
57 UINT32 Offset;
58 UINT32 Length;
59 } HTTP_URL_FILED_DATA;
60
61 typedef struct {
62 UINT16 FieldBitMap;
63 HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX];
64 } HTTP_URL_PARSER;
65
66 typedef enum {
67 UrlParserUrlStart,
68 UrlParserScheme,
69 UrlParserSchemeColon, // ":"
70 UrlParserSchemeColonSlash, // ":/"
71 UrlParserSchemeColonSlashSlash, // "://"
72 UrlParserAuthority,
73 UrlParserAtInAuthority,
74 UrlParserPath,
75 UrlParserQueryStart, // "?"
76 UrlParserQuery,
77 UrlParserFragmentStart, // "#"
78 UrlParserFragment,
79 UrlParserUserInfo,
80 UrlParserHostStart, // "@"
81 UrlParserHost,
82 UrlParserHostIpv6, // "["(Ipv6 address) "]"
83 UrlParserPortStart, // ":"
84 UrlParserPort,
85 UrlParserStateMax
86 } HTTP_URL_PARSE_STATE;
87
88 #endif
89