Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/OrthancApiClient.cpp @ 382:dd4c7e82b4be
removed class OrthancApiClient::HttpErrorMessage, redundant with IWebService::HttpRequestErrorMessage
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 06 Nov 2018 19:36:32 +0100 |
parents | 8eb4fe74000f |
children | 939f626eb6d7 |
comparison
equal
deleted
inserted
replaced
381:19bd222283ae | 382:dd4c7e82b4be |
---|---|
64 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | 64 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); |
65 } | 65 } |
66 } | 66 } |
67 | 67 |
68 | 68 |
69 const Orthanc::IDynamicObject& OrthancApiClient::HttpErrorMessage::GetPayload() const | 69 OrthancApiClient::OrthancApiClient(MessageBroker& broker, |
70 { | 70 IWebService& orthanc) : |
71 if (HasPayload()) | |
72 { | |
73 return *payload_; | |
74 } | |
75 else | |
76 { | |
77 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
78 } | |
79 } | |
80 | |
81 | |
82 OrthancApiClient::OrthancApiClient(MessageBroker &broker, IWebService &orthanc) : | |
83 IObservable(broker), | 71 IObservable(broker), |
84 orthanc_(orthanc) | 72 orthanc_(orthanc) |
85 { | 73 { |
86 } | 74 } |
87 | 75 |
89 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) | 77 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) |
90 class HttpResponseToJsonConverter : public IObserver, IObservable | 78 class HttpResponseToJsonConverter : public IObserver, IObservable |
91 { | 79 { |
92 private: | 80 private: |
93 std::auto_ptr<MessageHandler<OrthancApiClient::JsonResponseReadyMessage> > orthancApiSuccessCallback_; | 81 std::auto_ptr<MessageHandler<OrthancApiClient::JsonResponseReadyMessage> > orthancApiSuccessCallback_; |
94 std::auto_ptr<MessageHandler<OrthancApiClient::HttpErrorMessage> > orthancApiFailureCallback_; | 82 std::auto_ptr<MessageHandler<IWebService::HttpRequestErrorMessage> > orthancApiFailureCallback_; |
95 | 83 |
96 public: | 84 public: |
97 HttpResponseToJsonConverter(MessageBroker& broker, | 85 HttpResponseToJsonConverter(MessageBroker& broker, |
98 MessageHandler<OrthancApiClient::JsonResponseReadyMessage>* orthancApiSuccessCallback, | 86 MessageHandler<OrthancApiClient::JsonResponseReadyMessage>* orthancApiSuccessCallback, |
99 MessageHandler<OrthancApiClient::HttpErrorMessage>* orthancApiFailureCallback) | 87 MessageHandler<IWebService::HttpRequestErrorMessage>* orthancApiFailureCallback) |
100 : IObserver(broker), | 88 : IObserver(broker), |
101 IObservable(broker), | 89 IObservable(broker), |
102 orthancApiSuccessCallback_(orthancApiSuccessCallback), | 90 orthancApiSuccessCallback_(orthancApiSuccessCallback), |
103 orthancApiFailureCallback_(orthancApiFailureCallback) | 91 orthancApiFailureCallback_(orthancApiFailureCallback) |
104 { | 92 { |
115 (message.GetUri(), response, message.GetPayloadPointer())); | 103 (message.GetUri(), response, message.GetPayloadPointer())); |
116 } | 104 } |
117 } | 105 } |
118 else if (orthancApiFailureCallback_.get() != NULL) | 106 else if (orthancApiFailureCallback_.get() != NULL) |
119 { | 107 { |
120 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage | 108 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage |
121 (message.GetUri(), message.GetPayloadPointer())); | 109 (message.GetUri(), message.GetPayloadPointer())); |
122 } | 110 } |
123 | 111 |
124 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 112 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
125 } | 113 } |
126 | 114 |
127 void ConvertError(const IWebService::HttpRequestErrorMessage& message) | 115 void ConvertError(const IWebService::HttpRequestErrorMessage& message) |
128 { | 116 { |
129 if (orthancApiFailureCallback_.get() != NULL) | 117 if (orthancApiFailureCallback_.get() != NULL) |
130 { | 118 { |
131 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); | 119 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); |
132 } | 120 } |
133 | 121 |
134 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 122 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
135 } | 123 } |
136 }; | 124 }; |
139 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) | 127 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) |
140 class HttpResponseToBinaryConverter : public IObserver, IObservable | 128 class HttpResponseToBinaryConverter : public IObserver, IObservable |
141 { | 129 { |
142 private: | 130 private: |
143 std::auto_ptr<MessageHandler<OrthancApiClient::BinaryResponseReadyMessage> > orthancApiSuccessCallback_; | 131 std::auto_ptr<MessageHandler<OrthancApiClient::BinaryResponseReadyMessage> > orthancApiSuccessCallback_; |
144 std::auto_ptr<MessageHandler<OrthancApiClient::HttpErrorMessage> > orthancApiFailureCallback_; | 132 std::auto_ptr<MessageHandler<IWebService::HttpRequestErrorMessage> > orthancApiFailureCallback_; |
145 | 133 |
146 public: | 134 public: |
147 HttpResponseToBinaryConverter(MessageBroker& broker, | 135 HttpResponseToBinaryConverter(MessageBroker& broker, |
148 MessageHandler<OrthancApiClient::BinaryResponseReadyMessage>* orthancApiSuccessCallback, | 136 MessageHandler<OrthancApiClient::BinaryResponseReadyMessage>* orthancApiSuccessCallback, |
149 MessageHandler<OrthancApiClient::HttpErrorMessage>* orthancApiFailureCallback) | 137 MessageHandler<IWebService::HttpRequestErrorMessage>* orthancApiFailureCallback) |
150 : IObserver(broker), | 138 : IObserver(broker), |
151 IObservable(broker), | 139 IObservable(broker), |
152 orthancApiSuccessCallback_(orthancApiSuccessCallback), | 140 orthancApiSuccessCallback_(orthancApiSuccessCallback), |
153 orthancApiFailureCallback_(orthancApiFailureCallback) | 141 orthancApiFailureCallback_(orthancApiFailureCallback) |
154 { | 142 { |
162 (message.GetUri(), message.GetAnswer(), | 150 (message.GetUri(), message.GetAnswer(), |
163 message.GetAnswerSize(), message.GetPayloadPointer())); | 151 message.GetAnswerSize(), message.GetPayloadPointer())); |
164 } | 152 } |
165 else if (orthancApiFailureCallback_.get() != NULL) | 153 else if (orthancApiFailureCallback_.get() != NULL) |
166 { | 154 { |
167 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage | 155 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage |
168 (message.GetUri(), message.GetPayloadPointer())); | 156 (message.GetUri(), message.GetPayloadPointer())); |
169 } | 157 } |
170 | 158 |
171 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 159 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
172 } | 160 } |
173 | 161 |
174 void ConvertError(const IWebService::HttpRequestErrorMessage& message) | 162 void ConvertError(const IWebService::HttpRequestErrorMessage& message) |
175 { | 163 { |
176 if (orthancApiFailureCallback_.get() != NULL) | 164 if (orthancApiFailureCallback_.get() != NULL) |
177 { | 165 { |
178 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); | 166 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); |
179 } | 167 } |
180 | 168 |
181 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 169 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
182 } | 170 } |
183 }; | 171 }; |
186 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) | 174 // TODO: handle destruction of this object (with shared_ptr ?::delete_later ???) |
187 class HttpResponseToEmptyConverter : public IObserver, IObservable | 175 class HttpResponseToEmptyConverter : public IObserver, IObservable |
188 { | 176 { |
189 private: | 177 private: |
190 std::auto_ptr<MessageHandler<OrthancApiClient::EmptyResponseReadyMessage> > orthancApiSuccessCallback_; | 178 std::auto_ptr<MessageHandler<OrthancApiClient::EmptyResponseReadyMessage> > orthancApiSuccessCallback_; |
191 std::auto_ptr<MessageHandler<OrthancApiClient::HttpErrorMessage> > orthancApiFailureCallback_; | 179 std::auto_ptr<MessageHandler<IWebService::HttpRequestErrorMessage> > orthancApiFailureCallback_; |
192 | 180 |
193 public: | 181 public: |
194 HttpResponseToEmptyConverter(MessageBroker& broker, | 182 HttpResponseToEmptyConverter(MessageBroker& broker, |
195 MessageHandler<OrthancApiClient::EmptyResponseReadyMessage>* orthancApiSuccessCallback, | 183 MessageHandler<OrthancApiClient::EmptyResponseReadyMessage>* orthancApiSuccessCallback, |
196 MessageHandler<OrthancApiClient::HttpErrorMessage>* orthancApiFailureCallback) | 184 MessageHandler<IWebService::HttpRequestErrorMessage>* orthancApiFailureCallback) |
197 : IObserver(broker), | 185 : IObserver(broker), |
198 IObservable(broker), | 186 IObservable(broker), |
199 orthancApiSuccessCallback_(orthancApiSuccessCallback), | 187 orthancApiSuccessCallback_(orthancApiSuccessCallback), |
200 orthancApiFailureCallback_(orthancApiFailureCallback) | 188 orthancApiFailureCallback_(orthancApiFailureCallback) |
201 { | 189 { |
208 orthancApiSuccessCallback_->Apply(OrthancApiClient::EmptyResponseReadyMessage | 196 orthancApiSuccessCallback_->Apply(OrthancApiClient::EmptyResponseReadyMessage |
209 (message.GetUri(), message.GetPayloadPointer())); | 197 (message.GetUri(), message.GetPayloadPointer())); |
210 } | 198 } |
211 else if (orthancApiFailureCallback_.get() != NULL) | 199 else if (orthancApiFailureCallback_.get() != NULL) |
212 { | 200 { |
213 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage | 201 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage |
214 (message.GetUri(), message.GetPayloadPointer())); | 202 (message.GetUri(), message.GetPayloadPointer())); |
215 } | 203 } |
216 | 204 |
217 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 205 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
218 } | 206 } |
219 | 207 |
220 void ConvertError(const IWebService::HttpRequestErrorMessage& message) | 208 void ConvertError(const IWebService::HttpRequestErrorMessage& message) |
221 { | 209 { |
222 if (orthancApiFailureCallback_.get() != NULL) | 210 if (orthancApiFailureCallback_.get() != NULL) |
223 { | 211 { |
224 orthancApiFailureCallback_->Apply(OrthancApiClient::HttpErrorMessage(message.GetUri(), message.GetPayloadPointer())); | 212 orthancApiFailureCallback_->Apply(IWebService::HttpRequestErrorMessage(message.GetUri(), message.GetPayloadPointer())); |
225 } | 213 } |
226 | 214 |
227 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) | 215 delete this; // hack untill we find someone to take ownership of this object (https://isocpp.org/wiki/faq/freestore-mgmt#delete-this) |
228 } | 216 } |
229 }; | 217 }; |
230 | 218 |
231 | 219 |
232 void OrthancApiClient::GetJsonAsync(const std::string& uri, | 220 void OrthancApiClient::GetJsonAsync(const std::string& uri, |
233 MessageHandler<JsonResponseReadyMessage>* successCallback, | 221 MessageHandler<JsonResponseReadyMessage>* successCallback, |
234 MessageHandler<HttpErrorMessage>* failureCallback, | 222 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, |
235 Orthanc::IDynamicObject* payload) | 223 Orthanc::IDynamicObject* payload) |
236 { | 224 { |
237 HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used | 225 HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used |
238 orthanc_.GetAsync(uri, IWebService::Headers(), payload, | 226 orthanc_.GetAsync(uri, IWebService::Headers(), payload, |
239 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToJsonConverter::ConvertResponseToJson), | 227 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToJsonConverter::ConvertResponseToJson), |
240 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToJsonConverter::ConvertError)); | 228 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToJsonConverter::ConvertError)); |
241 | 229 |
242 } | 230 } |
243 | 231 |
232 | |
233 void OrthancApiClient::GetBinaryAsync(const std::string& uri, | |
234 const std::string& contentType, | |
235 MessageHandler<BinaryResponseReadyMessage>* successCallback, | |
236 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, | |
237 Orthanc::IDynamicObject* payload) | |
238 { | |
239 IWebService::Headers headers; | |
240 headers["Accept"] = contentType; | |
241 GetBinaryAsync(uri, headers, successCallback, failureCallback, payload); | |
242 } | |
243 | |
244 | |
244 void OrthancApiClient::GetBinaryAsync(const std::string& uri, | 245 void OrthancApiClient::GetBinaryAsync(const std::string& uri, |
245 const IWebService::Headers& headers, | 246 const IWebService::Headers& headers, |
246 MessageHandler<BinaryResponseReadyMessage>* successCallback, | 247 MessageHandler<BinaryResponseReadyMessage>* successCallback, |
247 MessageHandler<HttpErrorMessage>* failureCallback, | 248 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, |
248 Orthanc::IDynamicObject* payload) | 249 Orthanc::IDynamicObject* payload) |
249 { | 250 { |
250 HttpResponseToBinaryConverter* converter = new HttpResponseToBinaryConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used | 251 HttpResponseToBinaryConverter* converter = new HttpResponseToBinaryConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used |
251 orthanc_.GetAsync(uri, headers, payload, | 252 orthanc_.GetAsync(uri, headers, payload, |
252 new Callable<HttpResponseToBinaryConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToBinaryConverter::ConvertResponseToBinary), | 253 new Callable<HttpResponseToBinaryConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToBinaryConverter::ConvertResponseToBinary), |
253 new Callable<HttpResponseToBinaryConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToBinaryConverter::ConvertError)); | 254 new Callable<HttpResponseToBinaryConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToBinaryConverter::ConvertError)); |
254 } | 255 } |
255 | 256 |
257 | |
256 void OrthancApiClient::PostBinaryAsyncExpectJson(const std::string& uri, | 258 void OrthancApiClient::PostBinaryAsyncExpectJson(const std::string& uri, |
257 const std::string& body, | 259 const std::string& body, |
258 MessageHandler<JsonResponseReadyMessage>* successCallback, | 260 MessageHandler<JsonResponseReadyMessage>* successCallback, |
259 MessageHandler<HttpErrorMessage>* failureCallback, | 261 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, |
260 Orthanc::IDynamicObject* payload) | 262 Orthanc::IDynamicObject* payload) |
261 { | 263 { |
262 HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used | 264 HttpResponseToJsonConverter* converter = new HttpResponseToJsonConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used |
263 orthanc_.PostAsync(uri, IWebService::Headers(), body, payload, | 265 orthanc_.PostAsync(uri, IWebService::Headers(), body, payload, |
264 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToJsonConverter::ConvertResponseToJson), | 266 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToJsonConverter::ConvertResponseToJson), |
265 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToJsonConverter::ConvertError)); | 267 new Callable<HttpResponseToJsonConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToJsonConverter::ConvertError)); |
266 | 268 |
267 } | 269 } |
268 | 270 |
271 | |
269 void OrthancApiClient::PostJsonAsyncExpectJson(const std::string& uri, | 272 void OrthancApiClient::PostJsonAsyncExpectJson(const std::string& uri, |
270 const Json::Value& data, | 273 const Json::Value& data, |
271 MessageHandler<JsonResponseReadyMessage>* successCallback, | 274 MessageHandler<JsonResponseReadyMessage>* successCallback, |
272 MessageHandler<HttpErrorMessage>* failureCallback, | 275 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, |
273 Orthanc::IDynamicObject* payload) | 276 Orthanc::IDynamicObject* payload) |
274 { | 277 { |
275 std::string body; | 278 std::string body; |
276 MessagingToolbox::JsonToString(body, data); | 279 MessagingToolbox::JsonToString(body, data); |
277 return PostBinaryAsyncExpectJson(uri, body, successCallback, failureCallback, payload); | 280 return PostBinaryAsyncExpectJson(uri, body, successCallback, failureCallback, payload); |
278 } | 281 } |
279 | 282 |
283 | |
280 void OrthancApiClient::DeleteAsync(const std::string& uri, | 284 void OrthancApiClient::DeleteAsync(const std::string& uri, |
281 MessageHandler<EmptyResponseReadyMessage>* successCallback, | 285 MessageHandler<EmptyResponseReadyMessage>* successCallback, |
282 MessageHandler<HttpErrorMessage>* failureCallback, | 286 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback, |
283 Orthanc::IDynamicObject* payload) | 287 Orthanc::IDynamicObject* payload) |
284 { | 288 { |
285 HttpResponseToEmptyConverter* converter = new HttpResponseToEmptyConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used | 289 HttpResponseToEmptyConverter* converter = new HttpResponseToEmptyConverter(broker_, successCallback, failureCallback); // it is currently deleting itself after being used |
286 orthanc_.DeleteAsync(uri, IWebService::Headers(), payload, | 290 orthanc_.DeleteAsync(uri, IWebService::Headers(), payload, |
287 new Callable<HttpResponseToEmptyConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToEmptyConverter::ConvertResponseToEmpty), | 291 new Callable<HttpResponseToEmptyConverter, IWebService::HttpRequestSuccessMessage>(*converter, &HttpResponseToEmptyConverter::ConvertResponseToEmpty), |
288 new Callable<HttpResponseToEmptyConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToEmptyConverter::ConvertError)); | 292 new Callable<HttpResponseToEmptyConverter, IWebService::HttpRequestErrorMessage>(*converter, &HttpResponseToEmptyConverter::ConvertError)); |
289 } | 293 } |
290 | 294 |
291 | 295 |
296 class OrthancApiClient::WebServicePayload : public boost::noncopyable | |
297 { | |
298 private: | |
299 std::auto_ptr< MessageHandler<EmptyResponseReadyMessage> > emptyHandler_; | |
300 std::auto_ptr< MessageHandler<JsonResponseReadyMessage> > jsonHandler_; | |
301 std::auto_ptr< MessageHandler<BinaryResponseReadyMessage> > binaryHandler_; | |
302 std::auto_ptr< Orthanc::IDynamicObject > userPayload; | |
303 }; | |
292 } | 304 } |