From: Abner Chang <abner.ch...@amd.com> Update RedfishCsCommon.c to add a function to remove Redfish unchangeable properties.
Signed-off-by: Abner Chang <abner.ch...@amd.com> Cc: Nickle Wang <nick...@nvidia.com> Cc: Igor Kulchytskyy <ig...@ami.com> --- .../ConverterLib/include/RedfishCsCommon.h | 20 +++++++ .../ConverterLib/src/RedfishCsCommon.c | 55 +++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/RedfishClientPkg/ConverterLib/include/RedfishCsCommon.h b/RedfishClientPkg/ConverterLib/include/RedfishCsCommon.h index e454ab0b73..f5278015aa 100644 --- a/RedfishClientPkg/ConverterLib/include/RedfishCsCommon.h +++ b/RedfishClientPkg/ConverterLib/include/RedfishCsCommon.h @@ -104,6 +104,26 @@ DestoryCsMemory ( RedfishCS_void *rootCs ); +/** + This function removes the unchangeable Redfish properties from JSON raw text + The content in JsonString is left unmodified, the caller has to give enoungh + memory pointed by NewJsonBuffer in the size of BufferSize. + + JsonString Input JSON raw string + NewJsonBuffer Pointer to memory for the updated JSON raw string in + size of BuufferSize. + BuufferSize The buffer size of NewJsonBuffer + + Return RedfishCS_status. + +**/ +RedfishCS_status +RemoveUnchangeableProperties ( + RedfishCS_char *JsonString, + RedfishCS_char *NewJsonBuffer, + RedfishCS_uint32 BuufferSize + ); + typedef struct _RedfishCS_char_Array RedfishCS_char_Array; typedef struct _RedfishCS_int64_Array RedfishCS_int64_Array; typedef struct _RedfishCS_bool_Array RedfishCS_bool_Array; diff --git a/RedfishClientPkg/ConverterLib/src/RedfishCsCommon.c b/RedfishClientPkg/ConverterLib/src/RedfishCsCommon.c index fd31e5296b..c6996d7d5d 100644 --- a/RedfishClientPkg/ConverterLib/src/RedfishCsCommon.c +++ b/RedfishClientPkg/ConverterLib/src/RedfishCsCommon.c @@ -1461,3 +1461,58 @@ CsEmptyPropLinkToJson ( return RedfishCS_status_success; } + +/** + This function removes the unchangeable Redfish properties from JSON raw text + The content in JsonString is left unmodified, the caller has to give enoungh + memory pointed by NewJsonBuffer in the size of BufferSize. + + JsonString Input JSON raw string + NewJsonBuffer Pointer to memory for the updated JSON raw string in + size of BuufferSize. + BuufferSize The buffer size of NewJsonBuffer + + Return RedfishCS_status. + +**/ +RedfishCS_status +RemoveUnchangeableProperties ( + RedfishCS_char *JsonString, + RedfishCS_char *NewJsonBuffer, + RedfishCS_uint32 BuufferSize + ) +{ + json_t *JsonObj; + RedfishCS_char *TempChar; + RedfishCS_status Status; + + if ((JsonString == NULL) || (NewJsonBuffer == NULL)) { + return RedfishCS_status_invalid_parameter; + } + + JsonObj = json_loads (JsonString, 0, NULL); + if (JsonObj == NULL) { + return RedfishCS_status_unknown_error; + } + + json_object_del (JsonObj, "@odata.type"); + json_object_del (JsonObj, "@odata.id"); + json_object_del (JsonObj, "Id"); + json_object_del (JsonObj, "Name"); + + TempChar = json_dumps ((json_t *)JsonObj, JSON_INDENT (2)); + if (TempChar != NULL) { + if ((strlen (TempChar) + 1) > BuufferSize) { + Status = RedfishCS_status_insufficient_memory; + } else { + memcpy (NewJsonBuffer, TempChar, strlen (TempChar) + 1); + free (TempChar); + Status = RedfishCS_status_success; + } + } else { + Status = RedfishCS_status_unknown_error; + } + json_decref(JsonObj); + return Status; +} + -- 2.37.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113649): https://edk2.groups.io/g/devel/message/113649 Mute This Topic: https://groups.io/mt/103676920/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-