# HG changeset patch # User Sebastien Jodogne # Date 1541529392 -3600 # Node ID dd4c7e82b4be78a1aea44599f4aade5578e98985 # Parent 19bd222283aec579e682f97155d32c230fc1ff03 removed class OrthancApiClient::HttpErrorMessage, redundant with IWebService::HttpRequestErrorMessage diff -r 19bd222283ae -r dd4c7e82b4be Framework/Toolbox/OrthancApiClient.cpp --- a/Framework/Toolbox/OrthancApiClient.cpp Tue Nov 06 15:36:06 2018 +0100 +++ b/Framework/Toolbox/OrthancApiClient.cpp Tue Nov 06 19:36:32 2018 +0100 @@ -66,20 +66,8 @@ } - const Orthanc::IDynamicObject& OrthancApiClient::HttpErrorMessage::GetPayload() const - { - if (HasPayload()) - { - return *payload_; - } - else - { - throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); - } - } - - - OrthancApiClient::OrthancApiClient(MessageBroker &broker, IWebService &orthanc) : + OrthancApiClient::OrthancApiClient(MessageBroker& broker, + IWebService& orthanc) : IObservable(broker), orthanc_(orthanc) { @@ -91,12 +79,12 @@ { private: std::auto_ptr > orthancApiSuccessCallback_; - std::auto_ptr > orthancApiFailureCallback_; + std::auto_ptr > orthancApiFailureCallback_; public: HttpResponseToJsonConverter(MessageBroker& broker, MessageHandler* orthancApiSuccessCallback, - MessageHandler* orthancApiFailureCallback) + MessageHandler* orthancApiFailureCallback) : IObserver(broker), IObservable(broker), orthancApiSuccessCallback_(orthancApiSuccessCallback), @@ -117,7 +105,7 @@ } else if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage (message.GetUri(), message.GetPayloadPointer())); } @@ -128,7 +116,7 @@ { if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); } delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) @@ -141,12 +129,12 @@ { private: std::auto_ptr > orthancApiSuccessCallback_; - std::auto_ptr > orthancApiFailureCallback_; + std::auto_ptr > orthancApiFailureCallback_; public: HttpResponseToBinaryConverter(MessageBroker& broker, MessageHandler* orthancApiSuccessCallback, - MessageHandler* orthancApiFailureCallback) + MessageHandler* orthancApiFailureCallback) : IObserver(broker), IObservable(broker), orthancApiSuccessCallback_(orthancApiSuccessCallback), @@ -164,7 +152,7 @@ } else if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage (message.GetUri(), message.GetPayloadPointer())); } @@ -175,7 +163,7 @@ { if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); } delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) @@ -188,12 +176,12 @@ { private: std::auto_ptr > orthancApiSuccessCallback_; - std::auto_ptr > orthancApiFailureCallback_; + std::auto_ptr > orthancApiFailureCallback_; public: HttpResponseToEmptyConverter(MessageBroker& broker, MessageHandler* orthancApiSuccessCallback, - MessageHandler* orthancApiFailureCallback) + MessageHandler* orthancApiFailureCallback) : IObserver(broker), IObservable(broker), orthancApiSuccessCallback_(orthancApiSuccessCallback), @@ -210,7 +198,7 @@ } else if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage (message.GetUri(), message.GetPayloadPointer())); } @@ -221,7 +209,7 @@ { if (orthancApiFailureCallback_.get() != NULL) { - orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); + orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); } delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) @@ -231,7 +219,7 @@ void OrthancApiClient::GetJsonAsync(const std::string& uri, MessageHandler* successCallback, - MessageHandler* failureCallback, + MessageHandler* failureCallback, Orthanc::IDynamicObject* payload) { HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used @@ -241,10 +229,23 @@ } + + void OrthancApiClient::GetBinaryAsync(const std::string& uri, + const std::string& contentType, + MessageHandler* successCallback, + MessageHandler* failureCallback, + Orthanc::IDynamicObject* payload) + { + IWebService::Headers headers; + headers["Accept"] = contentType; + GetBinaryAsync(uri, headers, successCallback, failureCallback, payload); + } + + void OrthancApiClient::GetBinaryAsync(const std::string& uri, const IWebService::Headers& headers, MessageHandler* successCallback, - MessageHandler* failureCallback, + MessageHandler* failureCallback, Orthanc::IDynamicObject* payload) { HttpResponseToBinaryConverter* converter = new HttpResponseToBinaryConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used @@ -253,10 +254,11 @@ new Callable(*converter, &HttpResponseToBinaryConverter::ConvertError)); } + void OrthancApiClient::PostBinaryAsyncExpectJson(const std::string& uri, const std::string& body, MessageHandler* successCallback, - MessageHandler* failureCallback, + MessageHandler* failureCallback, Orthanc::IDynamicObject* payload) { HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used @@ -266,10 +268,11 @@ } + void OrthancApiClient::PostJsonAsyncExpectJson(const std::string& uri, const Json::Value& data, MessageHandler* successCallback, - MessageHandler* failureCallback, + MessageHandler* failureCallback, Orthanc::IDynamicObject* payload) { std::string body; @@ -277,9 +280,10 @@ return PostBinaryAsyncExpectJson(uri, body, successCallback, failureCallback, payload); } + void OrthancApiClient::DeleteAsync(const std::string& uri, MessageHandler* successCallback, - MessageHandler* failureCallback, + MessageHandler* failureCallback, Orthanc::IDynamicObject* payload) { HttpResponseToEmptyConverter* converter = new HttpResponseToEmptyConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used @@ -289,4 +293,12 @@ } + class OrthancApiClient::WebServicePayload : public boost::noncopyable + { + private: + std::auto_ptr< MessageHandler > emptyHandler_; + std::auto_ptr< MessageHandler > jsonHandler_; + std::auto_ptr< MessageHandler > binaryHandler_; + std::auto_ptr< Orthanc::IDynamicObject > userPayload; + }; } diff -r 19bd222283ae -r dd4c7e82b4be Framework/Toolbox/OrthancApiClient.h --- a/Framework/Toolbox/OrthancApiClient.h Tue Nov 06 15:36:06 2018 +0100 +++ b/Framework/Toolbox/OrthancApiClient.h Tue Nov 06 19:36:32 2018 +0100 @@ -141,33 +141,10 @@ }; - class HttpErrorMessage : public BaseMessage - { - private: - const std::string& uri_; - const Orthanc::IDynamicObject* payload_; - public: - HttpErrorMessage(const std::string& uri, - const Orthanc::IDynamicObject* payload) : - uri_(uri), - payload_(payload) - { - } - - const std::string& GetUri() const - { - return uri_; - } - - bool HasPayload() const - { - return payload_ != NULL; - } - - const Orthanc::IDynamicObject& GetPayload() const; - }; - + private: + class WebServicePayload; + protected: IWebService& orthanc_; @@ -183,48 +160,43 @@ // schedule a GET request expecting a JSON response. void GetJsonAsync(const std::string& uri, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, + MessageHandler* failureCallback = NULL, Orthanc::IDynamicObject* payload = NULL /* takes ownership */); // schedule a GET request expecting a binary response. void GetBinaryAsync(const std::string& uri, const std::string& contentType, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, - Orthanc::IDynamicObject* payload = NULL /* takes ownership */) - { - IWebService::Headers headers; - headers["Accept"] = contentType; - GetBinaryAsync(uri, headers, successCallback, failureCallback, payload); - } + MessageHandler* failureCallback = NULL, + Orthanc::IDynamicObject* payload = NULL /* takes ownership */); // schedule a GET request expecting a binary response. void GetBinaryAsync(const std::string& uri, const IWebService::Headers& headers, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, + MessageHandler* failureCallback = NULL, Orthanc::IDynamicObject* payload = NULL /* takes ownership */); // schedule a POST request expecting a JSON response. void PostBinaryAsyncExpectJson(const std::string& uri, const std::string& body, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, + MessageHandler* failureCallback = NULL, Orthanc::IDynamicObject* payload = NULL /* takes ownership */); // schedule a POST request expecting a JSON response. void PostJsonAsyncExpectJson(const std::string& uri, const Json::Value& data, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, + MessageHandler* failureCallback = NULL, Orthanc::IDynamicObject* payload = NULL /* takes ownership */); // schedule a DELETE request expecting an empty response. void DeleteAsync(const std::string& uri, MessageHandler* successCallback, - MessageHandler* failureCallback = NULL, + MessageHandler* failureCallback = NULL, Orthanc::IDynamicObject* payload = NULL /* takes ownership */); - + void NotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message); }; } diff -r 19bd222283ae -r dd4c7e82b4be Framework/Toolbox/OrthancSlicesLoader.cpp --- a/Framework/Toolbox/OrthancSlicesLoader.cpp Tue Nov 06 15:36:06 2018 +0100 +++ b/Framework/Toolbox/OrthancSlicesLoader.cpp Tue Nov 06 19:36:32 2018 +0100 @@ -217,13 +217,13 @@ } } - void OrthancSlicesLoader::OnGeometryError(const OrthancApiClient::HttpErrorMessage& message) + void OrthancSlicesLoader::OnGeometryError(const IWebService::HttpRequestErrorMessage& message) { EmitMessage(SliceGeometryErrorMessage(*this)); state_ = State_Error; } - void OrthancSlicesLoader::OnSliceImageError(const OrthancApiClient::HttpErrorMessage& message) + void OrthancSlicesLoader::OnSliceImageError(const IWebService::HttpRequestErrorMessage& message) { NotifySliceImageError(dynamic_cast(message.GetPayload())); state_ = State_Error; @@ -665,7 +665,7 @@ state_ = State_LoadingGeometry; orthanc_.GetJsonAsync("/series/" + seriesId + "/instances-tags", new Callable(*this, &OrthancSlicesLoader::ParseSeriesGeometry), - new Callable(*this, &OrthancSlicesLoader::OnGeometryError), + new Callable(*this, &OrthancSlicesLoader::OnGeometryError), NULL); } } @@ -684,7 +684,7 @@ // mandatory to read RT DOSE, but is too long to be returned by default orthanc_.GetJsonAsync("/instances/" + instanceId + "/tags?ignore-length=3004-000c", new Callable(*this, &OrthancSlicesLoader::ParseInstanceGeometry), - new Callable(*this, &OrthancSlicesLoader::OnGeometryError), + new Callable(*this, &OrthancSlicesLoader::OnGeometryError), Operation::DownloadInstanceGeometry(instanceId)); } } @@ -703,7 +703,7 @@ orthanc_.GetJsonAsync("/instances/" + instanceId + "/tags", new Callable(*this, &OrthancSlicesLoader::ParseFrameGeometry), - new Callable(*this, &OrthancSlicesLoader::OnGeometryError), + new Callable(*this, &OrthancSlicesLoader::OnGeometryError), Operation::DownloadFrameGeometry(instanceId, frame)); } } @@ -775,7 +775,7 @@ orthanc_.GetBinaryAsync(uri, "image/png", new Callable(*this, &OrthancSlicesLoader::ParseSliceImagePng), - new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), + new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), Operation::DownloadSliceImage(index, slice, SliceImageQuality_FullPng)); } @@ -805,7 +805,7 @@ orthanc_.GetBinaryAsync(uri, "image/x-portable-arbitrarymap", new Callable(*this, &OrthancSlicesLoader::ParseSliceImagePam), - new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), + new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), Operation::DownloadSliceImage(index, slice, SliceImageQuality_FullPam)); } @@ -843,7 +843,7 @@ orthanc_.GetJsonAsync(uri, new Callable(*this, &OrthancSlicesLoader::ParseSliceImageJpeg), - new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), + new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), Operation::DownloadSliceImage(index, slice, quality)); } @@ -879,7 +879,7 @@ boost::lexical_cast(slice.GetFrame()) + "/raw.gz"); orthanc_.GetBinaryAsync(uri, IWebService::Headers(), new Callable(*this, &OrthancSlicesLoader::ParseSliceRawImage), - new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), + new Callable(*this, &OrthancSlicesLoader::OnSliceImageError), Operation::DownloadSliceRawImage(index, slice)); } } diff -r 19bd222283ae -r dd4c7e82b4be Framework/Toolbox/OrthancSlicesLoader.h --- a/Framework/Toolbox/OrthancSlicesLoader.h Tue Nov 06 15:36:06 2018 +0100 +++ b/Framework/Toolbox/OrthancSlicesLoader.h Tue Nov 06 19:36:32 2018 +0100 @@ -143,8 +143,9 @@ void NotifySliceImageError(const Operation& operation); - void OnGeometryError(const OrthancApiClient::HttpErrorMessage& message); - void OnSliceImageError(const OrthancApiClient::HttpErrorMessage& message); + void OnGeometryError(const IWebService::HttpRequestErrorMessage& message); + + void OnSliceImageError(const IWebService::HttpRequestErrorMessage& message); void ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message); @@ -195,7 +196,5 @@ void ScheduleLoadSliceImage(size_t index, SliceImageQuality requestedQuality); - - }; }