comparison OrthancServer/OrthancRestApi2.cpp @ 224:4eb0c7ce86c9

refactoring for store
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 29 Nov 2012 22:22:00 +0100
parents 0200cd330582
children 03aa59ecf6d8
comparison
equal deleted inserted replaced
223:6f0e4a8ebb0f 224:4eb0c7ce86c9
43 #include <boost/lexical_cast.hpp> 43 #include <boost/lexical_cast.hpp>
44 #include <glog/logging.h> 44 #include <glog/logging.h>
45 45
46 46
47 #define RETRIEVE_CONTEXT(call) \ 47 #define RETRIEVE_CONTEXT(call) \
48 OrthancRestApi2& context = dynamic_cast<OrthancRestApi2&>(call.GetContext()) 48 ServerContext& context = dynamic_cast<OrthancRestApi2&>(call.GetContext()).GetContext()
49 49
50 50
51 namespace Orthanc 51 namespace Orthanc
52 { 52 {
53 // System information ------------------------------------------------------- 53 // System information -------------------------------------------------------
256 FromDcmtkBridge::ExtractPngImage(png, dicomContent, frame, mode); 256 FromDcmtkBridge::ExtractPngImage(png, dicomContent, frame, mode);
257 call.GetOutput().AnswerBuffer(png, "image/png"); 257 call.GetOutput().AnswerBuffer(png, "image/png");
258 } 258 }
259 catch (OrthancException& e) 259 catch (OrthancException& e)
260 { 260 {
261 if (e.GetErrorCode() == ErrorCode_NotImplemented) 261 //if (e.GetErrorCode() == ErrorCode_NotImplemented)
262 { 262 {
263 std::string root = ""; 263 std::string root = "";
264 for (size_t i = 1; i < call.GetFullUri().size(); i++) 264 for (size_t i = 1; i < call.GetFullUri().size(); i++)
265 { 265 {
266 root += "../"; 266 root += "../";
307 FromDcmtkBridge::ToJson(dicomJson, *dicomFile.getDataset()); 307 FromDcmtkBridge::ToJson(dicomJson, *dicomFile.getDataset());
308 308
309 StoreStatus status = StoreStatus_Failure; 309 StoreStatus status = StoreStatus_Failure;
310 if (postData.size() > 0) 310 if (postData.size() > 0)
311 { 311 {
312 status = context.GetIndex().Store 312 status = context.Store
313 (context.GetFileStorage(), reinterpret_cast<const char*>(&postData[0]), 313 (reinterpret_cast<const char*>(&postData[0]),
314 postData.size(), dicomSummary, dicomJson, ""); 314 postData.size(), dicomSummary, dicomJson, "");
315 } 315 }
316 316
317 Json::Value result = Json::objectValue; 317 Json::Value result = Json::objectValue;
318 318
329 329
330 // DICOM bridge ------------------------------------------------------------- 330 // DICOM bridge -------------------------------------------------------------
331 331
332 static void ListModalities(RestApi::GetCall& call) 332 static void ListModalities(RestApi::GetCall& call)
333 { 333 {
334 RETRIEVE_CONTEXT(call); 334 const OrthancRestApi2::Modalities& m =
335 dynamic_cast<OrthancRestApi2&>(call.GetContext()).GetModalities();
335 336
336 Json::Value result = Json::arrayValue; 337 Json::Value result = Json::arrayValue;
337 338
338 for (OrthancRestApi2::Modalities::const_iterator 339 for (OrthancRestApi2::Modalities::const_iterator
339 it = context.GetModalities().begin(); 340 it = m.begin(); it != m.end(); it++)
340 it != context.GetModalities().end(); it++)
341 { 341 {
342 result.append(*it); 342 result.append(*it);
343 } 343 }
344 344
345 call.GetOutput().AnswerJson(result); 345 call.GetOutput().AnswerJson(result);
347 347
348 348
349 349
350 // Registration of the various REST handlers -------------------------------- 350 // Registration of the various REST handlers --------------------------------
351 351
352 OrthancRestApi2::OrthancRestApi2(ServerIndex& index, 352 OrthancRestApi2::OrthancRestApi2(ServerContext& context) :
353 const std::string& path) : 353 context_(context)
354 index_(index),
355 storage_(path)
356 { 354 {
357 GetListOfDicomModalities(modalities_); 355 GetListOfDicomModalities(modalities_);
358 356
359 Register("/", ServeRoot); 357 Register("/", ServeRoot);
360 Register("/system", GetSystemInformation); 358 Register("/system", GetSystemInformation);