• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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