diff --git a/Modules/CppRestSdk/files.cmake b/Modules/CppRestSdk/files.cmake index f68b17949c..3e7afe2fa4 100644 --- a/Modules/CppRestSdk/files.cmake +++ b/Modules/CppRestSdk/files.cmake @@ -1,14 +1,15 @@ 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 mitkIRESTManager.cpp mitkRESTManager.cpp mitkRESTTest.cpp + mitkRESTTest2.cpp mitkIRESTObserver.cpp ) diff --git a/Modules/CppRestSdk/include/mitkRESTTest2.h b/Modules/CppRestSdk/include/mitkRESTTest2.h new file mode 100644 index 0000000000..b3b66ffaa1 --- /dev/null +++ b/Modules/CppRestSdk/include/mitkRESTTest2.h @@ -0,0 +1,23 @@ +#ifndef MITKRESTTEST2_H_ +#define MITKRESTTEST2_H_ +#include "cpprest/json.h" +#include "mitkIRESTManager.h" +#include "mitkIRESTObserver.h" +#include +#include +#include + +namespace mitk +{ + class RestTest2 : public IRESTObserver + { + public: + RestTest2(); + ~RestTest2(); + void TestRESTServer(); + web::json::value notify(web::json::value data) override; + + private: + }; +} // namespace mitk +#endif // !mitkRESTTest_h \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp index 26c4370805..0b403132fe 100644 --- a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp +++ b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp @@ -1,33 +1,34 @@ #include "mitkCppRestSdkActivator.h" #include #include #include #include #include #include #include #include #include #include void MitkCppRestSdkActivator::Load(us::ModuleContext *context) { //Registration of the RESTManagerMicroservice m_RESTManager.reset(new mitk::RESTManager); context->RegisterService(m_RESTManager.get()); //Test use of the RESTManagerMicroservice, later done in Module m_Test.TestRESTServer(); + m_Test2.TestRESTServer(); } void MitkCppRestSdkActivator::Unload(us::ModuleContext *) { } US_EXPORT_MODULE_ACTIVATOR(MitkCppRestSdkActivator) diff --git a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.h b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.h index c2521ebb76..6bc6e3d093 100644 --- a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.h +++ b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.h @@ -1,23 +1,25 @@ #ifndef MITKCPPRESTSDKACTIVATOR_H_ #define MITKCPPRESTSDKACTIVATOR_H_ #include #include #include #include #include #include +#include class MitkCppRestSdkActivator : public us::ModuleActivator { public: void Load(us::ModuleContext *context) override; void Unload(us::ModuleContext *) override; private: std::unique_ptr m_RESTManager; mitk::RestTest m_Test; + mitk::RestTest2 m_Test2; }; #endif diff --git a/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp b/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp index 14ad7a7576..cff4ef4308 100644 --- a/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp +++ b/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp @@ -1,72 +1,67 @@ #include "mitkRESTServerMicroService.h" #include #include #include mitk::RESTServerMicroService::RESTServerMicroService(web::uri uri) : m_Listener(uri) { m_Uri = uri; m_Listener.support(MitkRESTMethods::GET, std::bind(&RESTServerMicroService::HandleGet, this, std::placeholders::_1)); openListener(); } mitk::RESTServerMicroService::~RESTServerMicroService() { closeListener(); } pplx::task mitk::RESTServerMicroService::openListener() { return m_Listener.open(); } pplx::task mitk::RESTServerMicroService::closeListener() { return m_Listener.close(); } web::uri mitk::RESTServerMicroService::GetUri() { return m_Uri; } void mitk::RESTServerMicroService::HandleGet(MitkRequest request) { int port = m_Listener.uri().port(); //getting exact request uri has to be a parameter in handle function web::uri_builder build(m_Listener.uri()); build.append(request.absolute_uri()); utility::string_t uri = build.to_uri().to_string(); std::string uriString(uri.begin(), uri.end()); - web::json::value content; - //example content, has to be replace by getting actual modified data by handle - content[L"key 1"] = web::json::value::string(U("this is a first test")); - request.set_body(content); - auto answer = request.extract_json().get(); MITK_INFO << "Test for Server at port " << port << " Exact request uri: " << uriString; - web::json::value worked; + web::json::value content; us::ModuleContext *context = us::GetModuleContext(); auto managerRef = context->GetServiceReference(); if (managerRef) { auto managerService = context->GetService(managerRef); if (managerService) { //TODO extract actual json from request body web::json::value v; MITK_INFO << "Server: Data send to manager"; - worked = managerService->handle(build.to_uri(), v); + content = managerService->handle(build.to_uri(), v); MITK_INFO << "server: Data received from manager"; } } - if (worked!=NULL) + if (content!=NULL) { - request.reply(MitkRestStatusCodes::OK, worked); + request.reply(MitkRestStatusCodes::OK, content); } else { request.reply(MitkRestStatusCodes::NotFound); } } \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkRESTTest.cpp b/Modules/CppRestSdk/src/mitkRESTTest.cpp index 9237756534..ae207a96ba 100644 --- a/Modules/CppRestSdk/src/mitkRESTTest.cpp +++ b/Modules/CppRestSdk/src/mitkRESTTest.cpp @@ -1,32 +1,30 @@ #include "mitkRESTTest.h" #include #include #include mitk::RestTest::RestTest() {} mitk::RestTest::~RestTest() {} void mitk::RestTest::TestRESTServer() { us::ModuleContext *context = us::GetModuleContext(); auto managerRef = context->GetServiceReference(); if (managerRef) { auto managerService = context->GetService(managerRef); if (managerService) { managerService->receiveRequest(L"http://localhost:8080/test", this); - managerService->receiveRequest(L"http://localhost:8080/example", this); - managerService->receiveRequest(L"http://localhost:8090", this); } } } //TODO get Data, return modified Data web::json::value mitk::RestTest::notify(web::json::value data) { MITK_INFO << "Observer: Data in observer"; - data[L"key 1"] = web::json::value::string(U("Data modified")); + data[L"key 1"] = web::json::value::string(U("Data modified by /test Observer")); return data; } diff --git a/Modules/CppRestSdk/src/mitkRESTTest.cpp b/Modules/CppRestSdk/src/mitkRESTTest2.cpp similarity index 59% copy from Modules/CppRestSdk/src/mitkRESTTest.cpp copy to Modules/CppRestSdk/src/mitkRESTTest2.cpp index 9237756534..988887a359 100644 --- a/Modules/CppRestSdk/src/mitkRESTTest.cpp +++ b/Modules/CppRestSdk/src/mitkRESTTest2.cpp @@ -1,32 +1,31 @@ -#include "mitkRESTTest.h" +#include "mitkRESTTest2.h" +#include #include #include -#include -mitk::RestTest::RestTest() {} +mitk::RestTest2::RestTest2() {} -mitk::RestTest::~RestTest() {} +mitk::RestTest2::~RestTest2() {} -void mitk::RestTest::TestRESTServer() +void mitk::RestTest2::TestRESTServer() { us::ModuleContext *context = us::GetModuleContext(); auto managerRef = context->GetServiceReference(); if (managerRef) { auto managerService = context->GetService(managerRef); if (managerService) { - managerService->receiveRequest(L"http://localhost:8080/test", this); managerService->receiveRequest(L"http://localhost:8080/example", this); managerService->receiveRequest(L"http://localhost:8090", this); } } } -//TODO get Data, return modified Data -web::json::value mitk::RestTest::notify(web::json::value data) +// TODO get Data, return modified Data +web::json::value mitk::RestTest2::notify(web::json::value data) { MITK_INFO << "Observer: Data in observer"; - data[L"key 1"] = web::json::value::string(U("Data modified")); + data[L"key 1"] = web::json::value::string(U("Data modified by /example and port 8090 observer")); return data; -} +} \ No newline at end of file