diff --git a/Modules/CppRestSdk/files.cmake b/Modules/CppRestSdk/files.cmake index b6b047eaa9..13ffec1fc6 100644 --- a/Modules/CppRestSdk/files.cmake +++ b/Modules/CppRestSdk/files.cmake @@ -1,14 +1,12 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES mitkRESTServer.cpp mitkRESTClient.cpp mitkDICOMWeb.cpp mitkRESTClientMicroService.cpp mitkRESTServerMicroService.cpp mitkCppRestSdkActivator.cpp - mitkIRESTClient.cpp - mitkIRESTServer.cpp mitkIRESTManager.cpp mitkRESTManager.cpp ) diff --git a/Modules/CppRestSdk/include/mitkIRESTClient.h b/Modules/CppRestSdk/include/mitkIRESTClient.h deleted file mode 100644 index fa6488715f..0000000000 --- a/Modules/CppRestSdk/include/mitkIRESTClient.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef mitkIRESTClient_h -#define mitkIRESTClient_h - -#include -#include - -namespace mitk -{ - class IRESTClient - { - public: - virtual ~IRESTClient(); - - virtual void TestFunctionClient() = 0; - }; -} - -#endif - - diff --git a/Modules/CppRestSdk/include/mitkIRESTManager.h b/Modules/CppRestSdk/include/mitkIRESTManager.h index 013f74a8c0..de0d9cad30 100644 --- a/Modules/CppRestSdk/include/mitkIRESTManager.h +++ b/Modules/CppRestSdk/include/mitkIRESTManager.h @@ -1,18 +1,34 @@ #ifndef mitkIRESTManager_h #define mitkIRESTManager_h #include #include +#include "cpprest/uri.h" namespace mitk { class IRESTManager { public: virtual ~IRESTManager(); virtual void TestFunctionManager() = 0; + //Functions for sendData() and receiveData() (sendRequest(), receiveRequest()?) + + enum RequestType + { + get, + post, + put + }; + virtual void sendRequest(RequestType type) = 0; + virtual void receiveRequest(web::uri uri) = 0; + + + }; } // namespace mitk +MITK_DECLARE_SERVICE_INTERFACE(mitk::IRESTManager, "org.mitk.IRESTManager") + #endif diff --git a/Modules/CppRestSdk/include/mitkIRESTServer.h b/Modules/CppRestSdk/include/mitkIRESTServer.h deleted file mode 100644 index 2f11428083..0000000000 --- a/Modules/CppRestSdk/include/mitkIRESTServer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef mitkIRESTServer_h -#define mitkIRESTServer_h - -#include -#include - -namespace mitk -{ - class IRESTServer - { - public: - virtual ~IRESTServer(); - - virtual void TestFunctionServer() = 0; - }; -} // namespace mitk - -MITK_DECLARE_SERVICE_INTERFACE(mitk::IRESTServer, "org.mitk.IRESTServer") -#endif diff --git a/Modules/CppRestSdk/include/mitkRESTClientMicroService.h b/Modules/CppRestSdk/include/mitkRESTClientMicroService.h index 93f4cfc6ea..26e8fc9d08 100644 --- a/Modules/CppRestSdk/include/mitkRESTClientMicroService.h +++ b/Modules/CppRestSdk/include/mitkRESTClientMicroService.h @@ -1,17 +1,21 @@ #ifndef mitkRESTClientMicroService_h #define mitkRESTClientMicroService_h -#include +#include "cpprest/http_client.h" + + +typedef web::http::client::http_client MitkClient; namespace mitk { - class RESTClientMicroService : public IRESTClient + class RESTClientMicroService { public: - RESTClientMicroService(); - ~RESTClientMicroService() override; + RESTClientMicroService(utility::string_t url); + ~RESTClientMicroService(); + + void TestFunctionClient(); - void TestFunctionClient() override; }; } // namespace mitk #endif // !mitkRESTClientMicroService_h diff --git a/Modules/CppRestSdk/include/mitkRESTManager.h b/Modules/CppRestSdk/include/mitkRESTManager.h index ccc281d48b..01ad525501 100644 --- a/Modules/CppRestSdk/include/mitkRESTManager.h +++ b/Modules/CppRestSdk/include/mitkRESTManager.h @@ -1,23 +1,27 @@ #ifndef mitkRESTManager_h #define mitkRESTManager_h #include #include #include namespace mitk { class RESTManager : public IRESTManager { public: RESTManager(); ~RESTManager() override; void TestFunctionManager() override; + //calls RESTClient + void sendRequest(RequestType type) override; + //calls RESTServer + void receiveRequest(web::uri uri) override; private: - std::map clientMap; //Map with port client pairs - std::map serverMap; //Map with port server pairs + std::map m_ClientMap; // Map with port client pairs + std::map m_ServerMap; // Map with port server pairs }; } // namespace mitk #endif // !mitkRESTManager_h diff --git a/Modules/CppRestSdk/include/mitkRESTServerMicroService.h b/Modules/CppRestSdk/include/mitkRESTServerMicroService.h index 9768c9f911..d8f34cd255 100644 --- a/Modules/CppRestSdk/include/mitkRESTServerMicroService.h +++ b/Modules/CppRestSdk/include/mitkRESTServerMicroService.h @@ -1,17 +1,36 @@ #ifndef mitkRESTServerMicroService_h #define mitkRESTServerMicroService_h -#include +#include "cpprest/asyncrt_utils.h" +#include "cpprest/containerstream.h" +#include "cpprest/filestream.h" +#include "cpprest/http_listener.h" +#include "cpprest/json.h" +#include "cpprest/producerconsumerstream.h" +#include "cpprest/uri.h" + +#include "MitkCppRestSdkExports.h" + +typedef web::http::experimental::listener::http_listener MitkListener; +typedef web::http::http_request MitkRequest; +typedef web::http::http_response MitkResponse; +typedef web::http::methods MitkRESTMethods; +typedef web::http::status_codes MitkRestStatusCodes; +typedef web::json::json_exception MitkJsonException; + namespace mitk { - class RESTServerMicroService : public IRESTServer + class RESTServerMicroService { public: - RESTServerMicroService(); - ~RESTServerMicroService() override; + RESTServerMicroService(web::uri uri); + ~RESTServerMicroService(); + pplx::task mitk::RESTServerMicroService::openListener(); + void HandleGet(MitkRequest request); - void TestFunctionServer() override; + private: + MitkListener m_Listener; }; } // namespace mitk #endif \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp index 998b216070..05d2ec4d21 100644 --- a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp +++ b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp @@ -1,36 +1,36 @@ #include "mitkCppRestSdkActivator.h" #include #include #include #include #include #include #include #include #include #include void MitkCppRestSdkActivator::Load(us::ModuleContext *context) { m_RESTManager.reset(new mitk::RESTManager); context->RegisterService(m_RESTManager.get()); us::ServiceReference refManager = context->GetServiceReference(); if (refManager) { auto serviceClient = context->GetService(refManager); if (serviceClient) { - serviceClient->TestFunctionManager(); + serviceClient->receiveRequest(L"http://localhost:8080"); } } } void MitkCppRestSdkActivator::Unload(us::ModuleContext *) { } US_EXPORT_MODULE_ACTIVATOR(MitkCppRestSdkActivator) diff --git a/Modules/CppRestSdk/src/mitkIRESTClient.cpp b/Modules/CppRestSdk/src/mitkIRESTClient.cpp deleted file mode 100644 index 90e290c728..0000000000 --- a/Modules/CppRestSdk/src/mitkIRESTClient.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "mitkIRESTClient.h" - -mitk::IRESTClient::~IRESTClient() -{ -} \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkIRESTServer.cpp b/Modules/CppRestSdk/src/mitkIRESTServer.cpp deleted file mode 100644 index 1811a782ef..0000000000 --- a/Modules/CppRestSdk/src/mitkIRESTServer.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "mitkIRESTServer.h" - -mitk::IRESTServer::~IRESTServer() -{ -} \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkRESTClientMicroService.cpp b/Modules/CppRestSdk/src/mitkRESTClientMicroService.cpp index da0d66c74f..fdddfb318d 100644 --- a/Modules/CppRestSdk/src/mitkRESTClientMicroService.cpp +++ b/Modules/CppRestSdk/src/mitkRESTClientMicroService.cpp @@ -1,14 +1,16 @@ #include "mitkRESTClientMicroService.h" #include -mitk::RESTClientMicroService::RESTClientMicroService() + +mitk::RESTClientMicroService::RESTClientMicroService(utility::string_t url) { + } mitk::RESTClientMicroService::~RESTClientMicroService() { } void mitk::RESTClientMicroService::TestFunctionClient() { MITK_INFO << "Test for Client"; } \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkRESTManager.cpp b/Modules/CppRestSdk/src/mitkRESTManager.cpp index 2e9755d6ad..64b3bcaa7e 100644 --- a/Modules/CppRestSdk/src/mitkRESTManager.cpp +++ b/Modules/CppRestSdk/src/mitkRESTManager.cpp @@ -1,11 +1,38 @@ #include "mitkRESTManager.h" #include mitk::RESTManager::RESTManager() {} mitk::RESTManager::~RESTManager() {} void mitk::RESTManager::TestFunctionManager() { MITK_INFO << "Test for Manager"; + + MITK_INFO << "Here"; +} + +void mitk::RESTManager::sendRequest(RequestType type) +{ + switch (type) + { + case get: + //Call get in mitkRESTClientMicroService + break; + case post: + //Call post in mitkRESTClientMicroService + break; + case put: + //Call put in mitkRESTClientMicroService + break; + } +} + +void mitk::RESTManager::receiveRequest(web::uri uri) +{ + int port = uri.port(); + RESTServerMicroService* server = new RESTServerMicroService(uri); + m_ServerMap[port] = server; + + MITK_INFO < -mitk::RESTServerMicroService::RESTServerMicroService() +mitk::RESTServerMicroService::RESTServerMicroService(web::uri uri) : m_Listener(uri) { + m_Listener.support(MitkRESTMethods::GET, std::bind(&RESTServerMicroService::HandleGet, this, std::placeholders::_1)); + openListener(); +} + +pplx::task mitk::RESTServerMicroService::openListener() +{ + return m_Listener.open(); } mitk::RESTServerMicroService::~RESTServerMicroService() { } -void mitk::RESTServerMicroService::TestFunctionServer() +void mitk::RESTServerMicroService::HandleGet(MitkRequest request) { MITK_INFO << "Test for Server"; + request.reply(MitkRestStatusCodes::OK); } \ No newline at end of file