/** * 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 "SMPoliciesCollectionApi.h" #include "api_defs.h" #include "pcf_config.hpp" namespace oai { namespace pcf { namespace api { using namespace oai::model::common::helpers; using namespace oai::model::pcf; SMPoliciesCollectionApi::SMPoliciesCollectionApi( const std::shared_ptr<Pistache::Rest::Router>& rtr) : router(rtr) {} void SMPoliciesCollectionApi::init() { setupRoutes(); } void SMPoliciesCollectionApi::setupRoutes() { using namespace Pistache::Rest; Routes::Post( *router, sm_policies::get_route(), Routes::bind(&SMPoliciesCollectionApi::create_sm_policy_handler, this)); // Default handler, called when a route is not found router->addCustomHandler(Routes::bind( &SMPoliciesCollectionApi::sm_policies_collection_api_default_handler, this)); } std::pair<Pistache::Http::Code, std::string> SMPoliciesCollectionApi::handleParsingException( const std::exception& /* ex */) const noexcept { try { throw; } catch (nlohmann::detail::exception& e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); // } catch (org::openapitools::server::helpers::ValidationException &e) { // return std::make_pair(Pistache::Http::Code::Bad_Request, // e.what()); } catch (std::exception& e) { return std::make_pair( Pistache::Http::Code::Internal_Server_Error, e.what()); } } std::pair<Pistache::Http::Code, std::string> SMPoliciesCollectionApi::handleOperationException( const std::exception& ex) const noexcept { return std::make_pair(Pistache::Http::Code::Internal_Server_Error, ex.what()); } void SMPoliciesCollectionApi::create_sm_policy_handler( const Pistache::Rest::Request& request, Pistache::Http::ResponseWriter response) { try { // Getting the body param SmPolicyContextData smPolicyContextData; try { nlohmann::json::parse(request.body()).get_to(smPolicyContextData); smPolicyContextData.validate(); } catch (std::exception& e) { const std::pair<Pistache::Http::Code, std::string> errorInfo = this->handleParsingException(e); response.send(errorInfo.first, errorInfo.second); return; } try { this->create_sm_policy(smPolicyContextData, response); } catch (Pistache::Http::HttpError& e) { response.send(static_cast<Pistache::Http::Code>(e.code()), e.what()); return; } catch (std::exception& e) { const std::pair<Pistache::Http::Code, std::string> errorInfo = this->handleOperationException(e); response.send(errorInfo.first, errorInfo.second); return; } } catch (std::exception& e) { response.send(Pistache::Http::Code::Internal_Server_Error, e.what()); } } void SMPoliciesCollectionApi::sm_policies_collection_api_default_handler( const Pistache::Rest::Request&, Pistache::Http::ResponseWriter response) { response.send( Pistache::Http::Code::Not_Found, "The requested method does not exist"); } } // namespace api } // namespace pcf } // namespace oai