Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi.cpp @ 231:8098448bd827
export log
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 30 Nov 2012 12:18:44 +0100 |
parents | ae2367145b49 |
children | 5368bbe813cf |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi.cpp Fri Nov 30 11:01:29 2012 +0100 +++ b/OrthancServer/OrthancRestApi.cpp Fri Nov 30 12:18:44 2012 +0100 @@ -242,13 +242,18 @@ { RETRIEVE_CONTEXT(call); + std::string remote = call.GetUriComponent("id", ""); DicomUserConnection connection; - ConnectToModality(connection, call.GetUriComponent("id", "")); + ConnectToModality(connection, remote); + + const std::string& resourceId = call.GetPostBody(); Json::Value found; - if (context.GetIndex().LookupResource(found, call.GetPostBody(), ResourceType_Series)) + if (context.GetIndex().LookupResource(found, resourceId, ResourceType_Series)) { // The UUID corresponds to a series + context.GetIndex().LogExportedResource(resourceId, remote); + for (Json::Value::ArrayIndex i = 0; i < found["Instances"].size(); i++) { std::string instanceId = found["Instances"][i].asString(); @@ -259,12 +264,13 @@ call.GetOutput().AnswerBuffer("{}", "application/json"); } - else if (context.GetIndex().LookupResource(found, call.GetPostBody(), ResourceType_Instance)) + else if (context.GetIndex().LookupResource(found, resourceId, ResourceType_Instance)) { // The UUID corresponds to an instance - std::string instanceId = call.GetPostBody(); + context.GetIndex().LogExportedResource(resourceId, remote); + std::string dicom; - context.ReadFile(dicom, instanceId, AttachedFileType_Dicom); + context.ReadFile(dicom, resourceId, AttachedFileType_Dicom); connection.Store(dicom); call.GetOutput().AnswerBuffer("{}", "application/json"); @@ -273,7 +279,7 @@ { // The POST body is not a known resource, assume that it // contains a raw DICOM instance - connection.Store(call.GetPostBody()); + connection.Store(resourceId); call.GetOutput().AnswerBuffer("{}", "application/json"); } } @@ -342,16 +348,12 @@ // Changes API -------------------------------------------------------------- - static void GetChanges(RestApi::GetCall& call) + static void GetSinceAndLimit(int64_t& since, + unsigned int& limit, + const RestApi::GetCall& call) { - RETRIEVE_CONTEXT(call); - static const unsigned int MAX_RESULTS = 100; - ServerIndex& index = context.GetIndex(); - //std::string filter = GetArgument(getArguments, "filter", ""); - int64_t since; - unsigned int limit; try { since = boost::lexical_cast<int64_t>(call.GetArgument("since", "0")); @@ -366,15 +368,40 @@ { limit = MAX_RESULTS; } + } + + static void GetChanges(RestApi::GetCall& call) + { + RETRIEVE_CONTEXT(call); + + //std::string filter = GetArgument(getArguments, "filter", ""); + int64_t since; + unsigned int limit; + GetSinceAndLimit(since, limit, call); Json::Value result; - if (index.GetChanges(result, since, limit)) + if (context.GetIndex().GetChanges(result, since, limit)) { call.GetOutput().AnswerJson(result); } } + static void GetExports(RestApi::GetCall& call) + { + RETRIEVE_CONTEXT(call); + + int64_t since; + unsigned int limit; + GetSinceAndLimit(since, limit, call); + + Json::Value result; + if (context.GetIndex().GetExportedResources(result, since, limit)) + { + call.GetOutput().AnswerJson(result); + } + } + // Get information about a single instance ---------------------------------- @@ -592,6 +619,7 @@ Register("/", ServeRoot); Register("/system", GetSystemInformation); Register("/changes", GetChanges); + Register("/exported", GetExports); Register("/instances", UploadDicomFile); Register("/instances", ListResources<ResourceType_Instance>);