Commit 0d820700 authored by xiangwan's avatar xiangwan

add SMFSelectionSubscriptionDataRetrieval

parent e8f84afd
......@@ -13,6 +13,14 @@
#include "SMFSelectionSubscriptionDataRetrievalApiImpl.h"
#include "udm_config.hpp"
#include "logger.hpp"
#include "curl.hpp"
using namespace config;
extern config::udm_config udm_cfg;
namespace oai {
namespace udm {
namespace api {
......@@ -31,7 +39,40 @@ void SMFSelectionSubscriptionDataRetrievalApiImpl::get_smf_sel_data(
const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch,
const Pistache::Optional<Pistache::Http::Header::Raw> &ifModifiedSince,
Pistache::Http::ResponseWriter &response) {
response.send(Pistache::Http::Code::Ok, "Do some magic\n");
// 1. populate remote uri for udp request
std::string udr_ip = std::string(inet_ntoa(*((struct in_addr *)&udm_cfg.nudr.addr4)));
std::string udr_port = std::to_string(udm_cfg.nudr.port);
//std::string remote_uri = udr_ip + ":" + udr_port + "/nudr-dr/v2/subscription-data/"+supi+plmnId+"/provisioned-data/am-data";
std::string remote_uri = udr_ip + ":" + udr_port + "/nudr-dr/v2/subscription-data/"+supi+"/456789/provisioned-data/smf-selection-subscription-data";
std::string method("GET");
std::string body("");
std::string response_get;
Logger::udm_sdm().debug("UDR: GET Request: "+ remote_uri);
// 2. invoke curl to get response from udr
long http_code = Curl::curl_http_client(remote_uri, method, body, response_get);
// 3. process response
nlohmann::json response_data_json = {};
try {
Logger::udm_sdm().debug("subscription-data: GET Response: "+response_get);
response_data_json = nlohmann::json::parse(response_get.c_str());
} catch (nlohmann::json::exception &e) {
Logger::udm_sdm().info("Could not get json content from UDR response");
ProblemDetails problem_details;
nlohmann::json json_problem_details;
problem_details.setCause("USER_NOT_FOUND");
problem_details.setStatus(404);
problem_details.setDetail("User " + supi + " not found in Database");
to_json(json_problem_details, problem_details);
Logger::udm_sdm().error("User " + supi + " not found in Database");
Logger::udm_sdm().info("Send 404 Not_Found response to client");
response.send(Pistache::Http::Code::Not_Found, json_problem_details.dump());
return;
}
Logger::udm_sdm().debug("http reponse code %d.\n",http_code);
response.send(static_cast<Pistache::Http::Code>(http_code), response_data_json.dump());
}
} // namespace api
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment