Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi.cpp @ 237:16a4ac70bd8a
last change and export
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 30 Nov 2012 15:45:15 +0100 |
parents | c11273198cef |
children | e4148b0ab1d0 |
comparison
equal
deleted
inserted
replaced
236:6d9be2b470b4 | 237:16a4ac70bd8a |
---|---|
348 | 348 |
349 // Changes API -------------------------------------------------------------- | 349 // Changes API -------------------------------------------------------------- |
350 | 350 |
351 static void GetSinceAndLimit(int64_t& since, | 351 static void GetSinceAndLimit(int64_t& since, |
352 unsigned int& limit, | 352 unsigned int& limit, |
353 bool& last, | |
353 const RestApi::GetCall& call) | 354 const RestApi::GetCall& call) |
354 { | 355 { |
355 static const unsigned int MAX_RESULTS = 100; | 356 static const unsigned int MAX_RESULTS = 100; |
356 | 357 |
358 if (call.HasArgument("last")) | |
359 { | |
360 last = true; | |
361 return; | |
362 } | |
363 | |
364 last = false; | |
365 | |
357 try | 366 try |
358 { | 367 { |
359 since = boost::lexical_cast<int64_t>(call.GetArgument("since", "0")); | 368 since = boost::lexical_cast<int64_t>(call.GetArgument("since", "0")); |
360 limit = boost::lexical_cast<unsigned int>(call.GetArgument("limit", "0")); | 369 limit = boost::lexical_cast<unsigned int>(call.GetArgument("limit", "0")); |
361 } | 370 } |
375 RETRIEVE_CONTEXT(call); | 384 RETRIEVE_CONTEXT(call); |
376 | 385 |
377 //std::string filter = GetArgument(getArguments, "filter", ""); | 386 //std::string filter = GetArgument(getArguments, "filter", ""); |
378 int64_t since; | 387 int64_t since; |
379 unsigned int limit; | 388 unsigned int limit; |
380 GetSinceAndLimit(since, limit, call); | 389 bool last; |
381 | 390 GetSinceAndLimit(since, limit, last, call); |
382 Json::Value result; | 391 |
383 if (context.GetIndex().GetChanges(result, since, limit)) | 392 Json::Value result; |
393 if ((!last && context.GetIndex().GetChanges(result, since, limit)) || | |
394 ( last && context.GetIndex().GetLastChange(result))) | |
384 { | 395 { |
385 call.GetOutput().AnswerJson(result); | 396 call.GetOutput().AnswerJson(result); |
386 } | 397 } |
387 } | 398 } |
388 | 399 |
391 { | 402 { |
392 RETRIEVE_CONTEXT(call); | 403 RETRIEVE_CONTEXT(call); |
393 | 404 |
394 int64_t since; | 405 int64_t since; |
395 unsigned int limit; | 406 unsigned int limit; |
396 GetSinceAndLimit(since, limit, call); | 407 bool last; |
397 | 408 GetSinceAndLimit(since, limit, last, call); |
398 Json::Value result; | 409 |
399 if (context.GetIndex().GetExportedResources(result, since, limit)) | 410 Json::Value result; |
411 if ((!last && context.GetIndex().GetExportedResources(result, since, limit)) || | |
412 ( last && context.GetIndex().GetLastExportedResource(result))) | |
400 { | 413 { |
401 call.GetOutput().AnswerJson(result); | 414 call.GetOutput().AnswerJson(result); |
402 } | 415 } |
403 } | 416 } |
404 | 417 |
617 GetListOfDicomModalities(modalities_); | 630 GetListOfDicomModalities(modalities_); |
618 | 631 |
619 Register("/", ServeRoot); | 632 Register("/", ServeRoot); |
620 Register("/system", GetSystemInformation); | 633 Register("/system", GetSystemInformation); |
621 Register("/changes", GetChanges); | 634 Register("/changes", GetChanges); |
622 Register("/exported", GetExports); | 635 Register("/exports", GetExports); |
623 | 636 |
624 Register("/instances", UploadDicomFile); | 637 Register("/instances", UploadDicomFile); |
625 Register("/instances", ListResources<ResourceType_Instance>); | 638 Register("/instances", ListResources<ResourceType_Instance>); |
626 Register("/patients", ListResources<ResourceType_Patient>); | 639 Register("/patients", ListResources<ResourceType_Patient>); |
627 Register("/series", ListResources<ResourceType_Series>); | 640 Register("/series", ListResources<ResourceType_Series>); |