diff --git a/Modules/CppRestSdk/files.cmake b/Modules/CppRestSdk/files.cmake index 13ffec1fc6..f68b17949c 100644 --- a/Modules/CppRestSdk/files.cmake +++ b/Modules/CppRestSdk/files.cmake @@ -1,12 +1,14 @@ 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 + mitkIRESTObserver.cpp ) diff --git a/Modules/CppRestSdk/include/mitkIRESTObserver.h b/Modules/CppRestSdk/include/mitkIRESTObserver.h new file mode 100644 index 0000000000..34dd7facdb --- /dev/null +++ b/Modules/CppRestSdk/include/mitkIRESTObserver.h @@ -0,0 +1,16 @@ +#ifndef mitkIRESTObserver_h +#define mitkIRESTObserver_h + +namespace mitk +{ + class IRESTObserver + { + public: + virtual bool notify() = 0; + + + private: + }; +} + +#endif // !mitkIRESTObserver diff --git a/Modules/CppRestSdk/include/mitkRESTTest.h b/Modules/CppRestSdk/include/mitkRESTTest.h new file mode 100644 index 0000000000..58d0d27efa --- /dev/null +++ b/Modules/CppRestSdk/include/mitkRESTTest.h @@ -0,0 +1,22 @@ +#ifndef MITKRESTTEST_H_ +#define MITKRESTTEST_H_ +#include "mitkIRESTManager.h" +#include +#include +#include +#include "mitkIRESTObserver.h" + +namespace mitk +{ + class RestTest: public IRESTObserver + { + public: + RestTest(); + ~RestTest(); + void TestRESTServer(); + bool notify() override; + + private: + }; +} // namespace mitk +#endif // !mitkRESTTest_h diff --git a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp index 2ae820cac5..fa6c5a3a27 100644 --- a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp +++ b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp @@ -1,40 +1,33 @@ #include "mitkCppRestSdkActivator.h" #include #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 - us::ServiceReference refManager = context->GetServiceReference(); - if (refManager) - { - auto serviceClient = context->GetService(refManager); - if (serviceClient) - { - serviceClient->receiveRequest(L"http://localhost:8080/test"); - serviceClient->receiveRequest(L"http://localhost:8080/example"); - serviceClient->receiveRequest(L"http://localhost:8090"); - } - } + mitk::RestTest test; + test.TestRESTServer(); } void MitkCppRestSdkActivator::Unload(us::ModuleContext *) { } US_EXPORT_MODULE_ACTIVATOR(MitkCppRestSdkActivator) diff --git a/Modules/CppRestSdk/src/mitkIRESTObserver.cpp b/Modules/CppRestSdk/src/mitkIRESTObserver.cpp new file mode 100644 index 0000000000..aa533dc40c --- /dev/null +++ b/Modules/CppRestSdk/src/mitkIRESTObserver.cpp @@ -0,0 +1 @@ +#include "mitkIRESTObserver.h" \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp b/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp index 35c8a9d58b..b8e844c6ee 100644 --- a/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp +++ b/Modules/CppRestSdk/src/mitkRESTServerMicroService.cpp @@ -1,43 +1,48 @@ #include "mitkRESTServerMicroService.h" #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(); - utility::string_t uri = request.absolute_uri().to_string(); + + 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; + 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; request.reply(MitkRestStatusCodes::OK, answer); } \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkRESTTest.cpp b/Modules/CppRestSdk/src/mitkRESTTest.cpp new file mode 100644 index 0000000000..b975b2fde2 --- /dev/null +++ b/Modules/CppRestSdk/src/mitkRESTTest.cpp @@ -0,0 +1,29 @@ +#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"); + managerService->receiveRequest(L"http://localhost:8080/example"); + managerService->receiveRequest(L"http://localhost:8090"); + } + } +} + +bool mitk::RestTest::notify() +{ + return true; +}