From 35f87da8a2debd443ac842db0a3794b17914a8f4 Mon Sep 17 00:00:00 2001 From: Abner Chang Date: Mon, 18 Jan 2021 10:58:25 +0800 Subject: RedfishPkg/RedfishContentCodingLib: EDKII Redfish En/Decode library BZ#:3174 Platform library to provide the encoding/decoding algorithms for the Redfish packets. The supported 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" Signed-off-by: Abner Chang Cc: Nickle Wang Cc: Ray Ni Cc: Michael D Kinney Reviewed-by: Nickle Wang --- .../Include/Library/RedfishContentCodingLib.h | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 RedfishPkg/Include/Library/RedfishContentCodingLib.h (limited to 'RedfishPkg/Include') 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
+ + 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 -- cgit v1.2.3