summaryrefslogtreecommitdiffstats
path: root/RedfishPkg/RedfishHttpDxe/RedfishHttpOperation.h
blob: 79954744adc0d62e26e2b7f56682411598b854a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/** @file
  Definitions of RedfishHttpOperation

  Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef EDKII_REDFISH_HTTP_OPERATION_H_
#define EDKII_REDFISH_HTTP_OPERATION_H_

#include "RedfishHttpDxe.h"

#define REDFISH_CONTENT_LENGTH_SIZE              80
#define REDFISH_COMMON_HEADER_SIZE               5
#define REDFISH_HTTP_HEADER_ODATA_VERSION_STR    "OData-Version"
#define REDFISH_HTTP_HEADER_ODATA_VERSION_VALUE  "4.0"
#define REDFISH_HTTP_HEADER_USER_AGENT_VALUE     "edk2redfish"
#define REDFISH_HTTP_HEADER_CONNECTION_STR       "Connection"
#define REDFISH_HTTP_HEADER_CONNECTION_VALUE     "Keep-Alive"
#define REDFISH_HTTP_CONTENT_ENCODING_NONE       "None"
#define ASCII_STR_DUPLICATE(a)  (AllocateCopyPool (AsciiStrSize ((a)), (a)))

/**
  This function free resources in Request. Request is no longer available
  after this function returns successfully.

  @param[in]  Request      HTTP request to be released.

  @retval     EFI_SUCCESS     Resource is released successfully.
  @retval     Others          Errors occur.

**/
EFI_STATUS
ReleaseRedfishRequest (
  IN  REDFISH_REQUEST  *Request
  );

/**
  This function free resources in given Response.

  @param[in]  Response     HTTP response to be released.

  @retval     EFI_SUCCESS     Resource is released successfully.
  @retval     Others          Errors occur.

**/
EFI_STATUS
ReleaseRedfishResponse (
  IN  REDFISH_RESPONSE  *Response
  );

/**
  This function send Redfish request to Redfish service by calling
  Rest Ex protocol.

  @param[in]   Service       Pointer to Redfish service.
  @param[in]   Uri           Uri of Redfish service.
  @param[in]   Method        HTTP method.
  @param[in]   Request     Request data. This is optional.
  @param[out]  Response    Redfish response data.

  @retval     EFI_SUCCESS     Request is sent and received successfully.
  @retval     Others          Errors occur.

**/
EFI_STATUS
HttpSendReceive (
  IN  REDFISH_SERVICE   Service,
  IN  EFI_STRING        Uri,
  IN  EFI_HTTP_METHOD   Method,
  IN  REDFISH_REQUEST   *Request  OPTIONAL,
  OUT REDFISH_RESPONSE  *Response
  );

#endif