Mercurial > hg > orthanc
diff OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp @ 4853:b3d0a3a4d890
Added links to download attachments from the Orthanc Explorer
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 16 Dec 2021 14:48:46 +0100 |
parents | ec1e9571b645 |
children | 8b51d65584f0 |
line wrap: on
line diff
--- a/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Tue Dec 14 22:52:59 2021 +0100 +++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Thu Dec 16 14:48:46 2021 +0100 @@ -1928,6 +1928,8 @@ .SetSummary("List attachments") .SetDescription("Get the list of attachments that are associated with the given " + r) .SetUriArgument("id", "Orthanc identifier of the " + r + " of interest") + .SetHttpGetArgument("full", RestApiCallDocumentation::Type_String, + "If present, retrieve the attachments list and their numerical ids", false) .AddAnswerType(MimeType_Json, "JSON array containing the names of the attachments") .SetHttpGetSample(GetDocumentationSampleResource(t) + "/attachments", true); return; @@ -1938,12 +1940,28 @@ std::set<FileContentType> attachments; OrthancRestApi::GetIndex(call).ListAvailableAttachments(attachments, publicId, StringToResourceType(resourceType.c_str())); - Json::Value result = Json::arrayValue; - - for (std::set<FileContentType>::const_iterator - it = attachments.begin(); it != attachments.end(); ++it) + Json::Value result; + + if (call.HasArgument("full")) { - result.append(EnumerationToString(*it)); + result = Json::objectValue; + + for (std::set<FileContentType>::const_iterator + it = attachments.begin(); it != attachments.end(); ++it) + { + std::string key = EnumerationToString(*it); + result[key] = static_cast<uint16_t>(*it); + } + } + else + { + result = Json::arrayValue; + + for (std::set<FileContentType>::const_iterator + it = attachments.begin(); it != attachments.end(); ++it) + { + result.append(EnumerationToString(*it)); + } } call.GetOutput().AnswerJson(result);