RIC-641 Fixing client/server model definitions and adding client and server API
[ric-plt/xapp-frame-cpp.git] / src / rest-client / RestClient.h
diff --git a/src/rest-client/RestClient.h b/src/rest-client/RestClient.h
new file mode 100644 (file)
index 0000000..8368547
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+# ==================================================================================
+# Copyright (c) 2020 HCL Technologies Limited.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==================================================================================
+*/
+#ifndef _CPPREST_SDK_WRAPPER_H
+#define _CPPREST_SDK_WRAPPER_H
+
+#include<string>
+#include<cpprest/http_client.h>
+#include<cpprest/filestream.h>
+#include<cpprest/uri.h>
+#include<cpprest/json.h>
+#include<sstream>
+#include <cpprest/http_listener.h>
+#include"nlohmann/json.hpp"
+#include<functional>
+#include"RestModel.h"
+#include<thread>
+#include <chrono>
+#include <pthread.h>
+
+
+namespace xapp
+{
+       typedef struct resp
+       {
+               long status_code;
+               nlohmann::json body;
+               //utility::string_t body;
+       }response_t;
+
+       typedef struct oran_resp
+       {
+               long status_code;
+               std::string SubscriptionId;
+       }oresponse_t;
+
+       class cpprestclient
+       {
+       protected:
+               utility::string_t baseUrl;
+               std::string Baseurl;
+               //utility::string_t resp_url=U("http://0.0.0.0:8080/ric/v1/subscriptions/response");
+               std::string resp_url = "http://0.0.0.0:8080/ric/v1/subscriptions/response";//default response url
+               web::http::experimental::listener::http_listener listener;
+               std::thread** t;
+               void response_listener();
+               bool ok_2_run;
+       public:
+               void SetbaseUrl(std::string);
+               std::string getBaseUrl();
+               //O-RAN specific api calls
+               oresponse_t post_subscriptions(const nlohmann::json & json, std::string path);
+               int delete_subscriptions(std::string Id, std::string path);
+               response_t get_subscriptions(std::string path);
+               response_t get_config(std::string path);
+
+               //general api calls
+               virtual response_t do_get(std::string path);
+               virtual response_t do_post(const nlohmann::json & json, std::string path);
+               virtual response_t do_del(std::string Id, std::string path);
+               //virtual response_t do_post(const web::json::value & json, std::string path);
+               cpprestclient(std::string base_url, std::function<void(web::http::http_request)>callback);
+               cpprestclient(std::string base_url,std::string response_url, std::function<void(web::http::http_request)>callback);
+               cpprestclient(std::string base_url);
+               virtual ~cpprestclient(){}
+               //void start_response_listener();
+               void stop_response_listener();
+       };
+
+}
+
+
+
+
+
+#endif