/** @file Header file for HttpLib. Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
(C) Copyright 2016 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _DXE_HTTP_LIB_H_ #define _DXE_HTTP_LIB_H_ #include #include #include #include #include #include #include #include #include #define BIT(x) (1 << x) #define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n" #define EMPTY_SPACE " " #define NET_IS_HEX_CHAR(Ch) \ ((('0' <= (Ch)) && ((Ch) <= '9')) || \ (('A' <= (Ch)) && ((Ch) <= 'F')) || \ (('a' <= (Ch)) && ((Ch) <= 'f'))) // // Field index of the HTTP URL parse result. // #define HTTP_URI_FIELD_SCHEME 0 #define HTTP_URI_FIELD_AUTHORITY 1 #define HTTP_URI_FIELD_PATH 2 #define HTTP_URI_FIELD_QUERY 3 #define HTTP_URI_FIELD_FRAGMENT 4 #define HTTP_URI_FIELD_USERINFO 5 #define HTTP_URI_FIELD_HOST 6 #define HTTP_URI_FIELD_PORT 7 #define HTTP_URI_FIELD_MAX 8 #define HTTP_URI_PORT_MAX_NUM 65535 // // Structure to store the parse result of a HTTP URL. // typedef struct { UINT32 Offset; UINT32 Length; } HTTP_URL_FILED_DATA; typedef struct { UINT16 FieldBitMap; HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX]; } HTTP_URL_PARSER; typedef enum { UrlParserUrlStart, UrlParserScheme, UrlParserSchemeColon, // ":" UrlParserSchemeColonSlash, // ":/" UrlParserSchemeColonSlashSlash, // "://" UrlParserAuthority, UrlParserAtInAuthority, UrlParserPath, UrlParserQueryStart, // "?" UrlParserQuery, UrlParserFragmentStart, // "#" UrlParserFragment, UrlParserUserInfo, UrlParserHostStart, // "@" UrlParserHost, UrlParserHostIpv6, // "["(Ipv6 address) "]" UrlParserPortStart, // ":" UrlParserPort, UrlParserStateMax } HTTP_URL_PARSE_STATE; #endif