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 90