# HG changeset patch # User Alain Mazy # Date 1678961335 -3600 # Node ID 0ffad746a16b97b56cebeb62073fdd1dc4c41326 # Parent 94c5388ed30b802eaf372dedc7085f26c4a64694 fix DicomWEB routes diff -r 94c5388ed30b -r 0ffad746a16b Plugin/DefaultAuthorizationParser.cpp --- a/Plugin/DefaultAuthorizationParser.cpp Thu Mar 16 10:39:27 2023 +0100 +++ b/Plugin/DefaultAuthorizationParser.cpp Thu Mar 16 11:08:55 2023 +0100 @@ -44,13 +44,13 @@ "^" + tmp + "/studies/([.0-9]+)(|/series)(|/)$"); dicomWebSeries_ = boost::regex( - "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)(|/instances)(|/)$"); + "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)(|/instances|/rendered|/metadata)(|/)$"); dicomWebInstances_ = boost::regex( - "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*)$"); + "^" + tmp + "/studies/([.0-9]+)/series/([.0-9]+)/instances/([.0-9]+)(|/|/frames/.*|/rendered|/metadata)(|/)$"); dicomWebQidoRsFind_ = boost::regex( - "^" + tmp + "/(studies|series|instances)$"); + "^" + tmp + "/(studies|series|instances)(|/)$"); } diff -r 94c5388ed30b -r 0ffad746a16b UnitTestsSources/UnitTestsMain.cpp --- a/UnitTestsSources/UnitTestsMain.cpp Thu Mar 16 10:39:27 2023 +0100 +++ b/UnitTestsSources/UnitTestsMain.cpp Thu Mar 16 11:08:55 2023 +0100 @@ -166,6 +166,18 @@ ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); accesses.clear(); + parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/rendered", noGetArguments.GetMap()); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); + + accesses.clear(); + parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/metadata", noGetArguments.GetMap()); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); + + accesses.clear(); parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4", noGetArguments.GetMap()); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); @@ -173,12 +185,26 @@ ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); accesses.clear(); + parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/metadata", noGetArguments.GetMap()); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); + + accesses.clear(); parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/frames/0", noGetArguments.GetMap()); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); + accesses.clear(); + parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/frames/0/rendered", noGetArguments.GetMap()); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); + ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); + { accesses.clear(); const char* getKeys[] = {"0020000D"};