summaryrefslogtreecommitdiffstats
path: root/RedfishPkg/Include
diff options
context:
space:
mode:
Diffstat (limited to 'RedfishPkg/Include')
-rw-r--r--RedfishPkg/Include/Library/RedfishContentCodingLib.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/RedfishPkg/Include/Library/RedfishContentCodingLib.h b/RedfishPkg/Include/Library/RedfishContentCodingLib.h
new file mode 100644
index 0000000000..71a8adcb26
--- /dev/null
+++ b/RedfishPkg/Include/Library/RedfishContentCodingLib.h
@@ -0,0 +1,78 @@
+/** @file
+ Definitinos of RedfishContentCodingLib.
+
+ (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#ifndef REDFISH_CONTENT_CODING_LIB_H_
+#define REDFISH_CONTENT_CODING_LIB_H_
+
+/**
+ This is the function to encode the content use the
+ algorithm indicated in ContentEncodedValue. The naming of
+ ContentEncodedValue is follow HTTP spec or could be a
+ platform-specific value.
+
+ @param[in] ContentEncodedValue HTTP conent encoded value.
+ The value could be one of below
+ or any which is platform-specific.
+ - HTTP_CONTENT_ENCODING_IDENTITY "identity"
+ - HTTP_CONTENT_ENCODING_GZIP "gzip"
+ - HTTP_CONTENT_ENCODING_COMPRESS "compress"
+ - HTTP_CONTENT_ENCODING_DEFLATE "deflate"
+ - HTTP_CONTENT_ENCODING_BROTLI "br"
+ @param[in] OriginalContent Original content.
+ @param[in] OriginalContentLength The length of original content.
+ @param[out] EncodedContentPointer Pointer to receive the encoded content pointer.
+ @param[out] EncodedContentLength Length of encoded content.
+
+ @retval EFI_SUCCESS Content is encoded successfully.
+ @retval EFI_UNSUPPORTED No supported encoding funciton,
+ @retval EFI_INVALID_PARAMETER One of the given parameter is invalid.
+
+**/
+
+EFI_STATUS
+RedfishContentEncode (
+ IN CHAR8 *ContentEncodedValue,
+ IN CHAR8 *OriginalContent,
+ IN UINTN OriginalContentLength,
+ OUT VOID **EncodedContentPointer,
+ OUT UINTN *EncodedLength
+ );
+
+/**
+ This is the function to decode the content use the
+ algorithm indicated in ContentEncodedValue. The naming of
+ ContentEncodedValue is follow HTTP spec or could be a
+ platform-specific value.
+
+ @param[in] ContentDecodedValue HTTP conent decoded value.
+ The value could be one of below
+ or any which is platform-specific.
+ - HTTP_CONTENT_ENCODING_IDENTITY "identity"
+ - HTTP_CONTENT_ENCODING_GZIP "gzip"
+ - HTTP_CONTENT_ENCODING_COMPRESS "compress"
+ - HTTP_CONTENT_ENCODING_DEFLATE "deflate"
+ - HTTP_CONTENT_ENCODING_BROTLI "br"
+ @param[in] ContentPointer Original content.
+ @param[in] ContentLength The length of original content.
+ @param[out] DecodedContentPointer Pointer to receive decoded content pointer.
+ @param[out] DecodedContentLength Length of decoded content.
+
+ @retval EFI_SUCCESS Content is decoded successfully.
+ @retval EFI_UNSUPPORTED No supported decoding funciton,
+ @retval EFI_INVALID_PARAMETER One of the given parameter is invalid.
+
+**/
+EFI_STATUS
+RedfishContentDecode (
+ IN CHAR8 *ContentEncodedValue,
+ IN VOID *ContentPointer,
+ IN UINTN ContentLength,
+ OUT VOID **DecodedContentPointer,
+ OUT UINTN *DecodedLength
+ );
+#endif