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
 | 
						|
 |