Mercurial > hg > orthanc-authorization
diff Plugin/DefaultAuthorizationParser.cpp @ 56:c02f0646297d
added support for /dicom-web/studies?0020000D=1.2.3&...
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 08 Nov 2022 16:10:22 +0100 |
parents | 9ed19ec11f48 |
children | 55539d564f4f |
line wrap: on
line diff
--- a/Plugin/DefaultAuthorizationParser.cpp Mon Sep 26 15:20:39 2022 +0200 +++ b/Plugin/DefaultAuthorizationParser.cpp Tue Nov 08 16:10:22 2022 +0100 @@ -19,6 +19,7 @@ #include "DefaultAuthorizationParser.h" #include <OrthancException.h> +#include <HttpServer/HttpToolbox.h> namespace OrthancPlugins { @@ -47,11 +48,15 @@ dicomWebInstances_ = boost::regex( "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$"); + + dicomWebQidoRsFindStudies_ = boost::regex( + "^" + tmp + "/studies\?(.*)$"); } bool DefaultAuthorizationParser::Parse(AccessedResources& target, - const std::string& uri) + const std::string& uri, + const std::map<std::string, std::string>& getArguments) { // The mutex below should not be necessary, but we prefer to // ensure thread safety in boost::regex @@ -127,6 +132,18 @@ AddOrthancInstance(target, what[2]); return true; } + else if (boost::regex_match(uri, what, dicomWebQidoRsFindStudies_)) + { + std::string studyInstanceUid; + + studyInstanceUid = Orthanc::HttpToolbox::GetArgument(getArguments, "0020000D", ""); + + if (!studyInstanceUid.empty()) + { + AddDicomStudy(target, studyInstanceUid); + } + return true; + } else { // Unknown type of resource: Consider it as a system access