Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Siyuan Fu <siyuan.fu@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Siyuan Fu <siyuan.fu@intel.com>
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| Header file for HttpLib.
 | |
| 
 | |
|   Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
 | |
|   (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _DXE_HTTP_LIB_H_
 | |
| #define _DXE_HTTP_LIB_H_
 | |
| 
 | |
| #include <Uefi.h>
 | |
| #include <Library/NetLib.h>
 | |
| #include <Library/HttpLib.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <IndustryStandard/Http11.h>
 | |
| #include <Protocol/HttpUtilities.h>
 | |
| 
 | |
| #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
 | |
| 
 |