Commit 1f378dec authored by lanzhongwen's avatar lanzhongwen

add get nssai

parent 427aa67f
...@@ -31,7 +31,43 @@ void SliceSelectionSubscriptionDataRetrievalApiImpl::get_nssai( ...@@ -31,7 +31,43 @@ void SliceSelectionSubscriptionDataRetrievalApiImpl::get_nssai(
const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch, const Pistache::Optional<Pistache::Http::Header::Raw> &ifNoneMatch,
const Pistache::Optional<Pistache::Http::Header::Raw> &ifModifiedSince, const Pistache::Optional<Pistache::Http::Header::Raw> &ifModifiedSince,
Pistache::Http::ResponseWriter &response) { 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/sm-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 = {};
nlohmann::json return_response_data_json = {};
try {
Logger::udm_sdm().debug("subscription-data: GET Response: "+response_get);
response_data_json = nlohmann::json::parse(response_get.c_str());
// TODO: 1. shall check if "singleNassai" is existing or not, if not, raise exception
// TODO: 2. return_response_data_json: need to check if here is required to allocate memory first. Or check json code to confirm, otherwise codedump might happen
return_response_data_json["singleNssai"] = response_data_json["singleNssai"]
} 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), return_response_data_json.dump());
} }
} // namespace api } // 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