Newer
Older
* Npcf_SMPolicyControl API
* Session Management Policy Control Service © 2020, 3GPP Organizational
* Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
*
* The version of the OpenAPI document: 1.1.1.alpha-5
*
*
* NOTE: This class is auto generated by OpenAPI Generator
* (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
* the class manually.
*/
#include "sm_policy/pcf_sm_policy_control_errors.hpp"
#include "3gpp_29.500.h"
#include "logger.hpp"
namespace oai {
namespace pcf {
namespace api {
using namespace oai::pcf::helpers;
using namespace oai::pcf::model;
Stefan Spettel
committed
using namespace oai::pcf::app;
using namespace oai::pcf::app::sm_policy;
SMPoliciesCollectionApiImpl::SMPoliciesCollectionApiImpl(
Stefan Spettel
committed
const std::shared_ptr<Pistache::Rest::Router>& rtr,
const std::shared_ptr<pcf_smpc> smpc_service, std::string address)
: SMPoliciesCollectionApi(rtr) {
this->m_address = address;
this->smpc_service = smpc_service;
}
void SMPoliciesCollectionApiImpl::create_sm_policy(
const SmPolicyContextData& smPolicyContextData,
Pistache::Http::ResponseWriter& response) {
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
78
79
80
81
82
83
int http_code = 500;
std::string cause;
ProblemDetails problem_details;
SmPolicyDecision decision;
std::string details_string = "";
pcf_smpc_error_code res = smpc_service->create_sm_policy_handler(
smPolicyContextData, decision, details_string);
nlohmann::json json_data;
switch (res) {
case pcf_smpc_error_code::Created:
http_code = HTTP_STATUS_CODE_201_CREATED;
break;
case pcf_smpc_error_code::UserUnknown:
problem_details.setCause("USER_UNKOWN");
problem_details.setDetail(details_string);
http_code = HTTP_STATUS_CODE_400_BAD_REQUEST;
break;
case pcf_smpc_error_code::InvalidParameters:
problem_details.setCause("ERROR_INITIAL_PARAMETERS");
problem_details.setDetail(details_string);
http_code = HTTP_STATUS_CODE_400_BAD_REQUEST;
break;
case pcf_smpc_error_code::ContextDenied:
problem_details.setCause("POLICY_CONTEXT_DENIED");
problem_details.setDetail(details_string);
http_code = HTTP_STATUS_CODE_403_FORBIDDEN;
break;
default:
Logger::pcf_app().error("Unknown error code");
http_code = HTTP_STATUS_CODE_500_INTERNAL_SERVER_ERROR;
problem_details.setCause("INTERNAL_ERROR");
problem_details.setDetail("Internal Service Error: Unknown return code.");
}
if (http_code != HTTP_STATUS_CODE_201_CREATED) {
to_json(json_data, problem_details);
} else {
to_json(json_data, decision);
}
response.send(Pistache::Http::Code(http_code), json_data.dump().c_str());
} // namespace api
} // namespace pcf
} // namespace oai