X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frest%2Fmodel%2FSubscriptionParams.h;fp=src%2Frest%2Fmodel%2FSubscriptionParams.h;h=cc19750004ec57256f67376c006bab6c8087269f;hb=a0bada6bf7af92d281c381092e7d6881c67d905f;hp=0000000000000000000000000000000000000000;hpb=488447aed60cc52b06d71d50bee4ecf10025f7e1;p=ric-plt%2Fxapp-frame-cpp.git diff --git a/src/rest/model/SubscriptionParams.h b/src/rest/model/SubscriptionParams.h new file mode 100644 index 0000000..cc19750 --- /dev/null +++ b/src/rest/model/SubscriptionParams.h @@ -0,0 +1,86 @@ +#ifndef XAPP_MODEL_SubscriptionParams_H +#define XAPP_MODEL_SubscriptionParams_H +#include "ModelBase.h" +#include "SubscriptionDetail.h" +#include "SubscriptionParams_ClientEndpoint.h" +#include "SubscriptionParams_E2SubscriptionDirectives.h" + +namespace xapp { +namespace model { + +struct SubscriptionParams: public ModelBase { + + SubscriptionParams_ClientEndpoint ClientEndpoint; + SubscriptionParams_E2SubscriptionDirectives E2SubscriptionDirectives; + std::string Meid; + int RANFunctionID; + std::string SubscriptionID; + SubscriptionDetailsList m_SubscriptionDetailsList; + + json validator_schema = R"( + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "SubscriptionParams", + "properties": { + "SubscriptionId": { + "description": "Optional subscription ID '(Submgr allocates if not given)'", + "type": "string" + }, + "Meid": { + "type": "string" + }, + "RANFunctionId": { + "type": "integer", + "minimum": 0, + "maximum": 4095 + } + }, + "required": [ + "ClientEndpoint", + "Meid", + "RANFunctionId", + "SubscriptionDetails" + ], + "type": "object" + })"_json; + + virtual json get_validator_schema() const { return validator_schema; } + +}; + +void from_json(const json& j, SubscriptionParams& ref) { + + std::cout << __PRETTY_FUNCTION__ << std::endl; + ref.validate_json(j); + j.at("ClientEndpoint").get_to(ref.ClientEndpoint); + + if (j.contains("E2SubscriptionDirectives")) + { + j.at("E2SubscriptionDirectives").get_to(ref.E2SubscriptionDirectives); + } + + if (j.contains("SubscriptionId")) + { + j.at("SubscriptionId").get_to(ref.SubscriptionID); + } + + j.at("Meid").get_to(ref.Meid); + j.at("RANFunctionId").get_to(ref.RANFunctionID); + j.at("SubscriptionDetails").get_to(ref.m_SubscriptionDetailsList); +} + +void to_json(json& j, const SubscriptionParams& ref) { + + j = json { + {"ClientEndpoint", ref.ClientEndpoint}, + {"E2SubscriptionDirectives", ref.E2SubscriptionDirectives}, + {"Meid", ref.Meid}, + {"RANFunctionId", ref.RANFunctionID}, + {"SubscriptionId", ref.SubscriptionID}, + {"SubscriptionDetails", ref.m_SubscriptionDetailsList}, + }; +} + +} /*namespace model*/ +} /*namespace xapp*/ +#endif /*XAPP_MODEL_SubscriptionParams_H*/