Mercurial > hg > orthanc-authorization
changeset 46:914b8113fd46
upgrade to year 2021
line wrap: on
line diff
--- a/CMakeLists.txt Thu Dec 10 15:10:22 2020 +0100 +++ b/CMakeLists.txt Wed Jan 06 18:01:12 2021 +0100 @@ -1,5 +1,5 @@ # Advanced authorization plugin for Orthanc -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AccessedResource.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AccessedResource.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AccessedResource.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AccessedResource.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AssociativeArray.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AssociativeArray.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AssociativeArray.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AssociativeArray.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AuthorizationParserBase.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AuthorizationParserBase.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AuthorizationParserBase.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AuthorizationParserBase.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AuthorizationWebService.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AuthorizationWebService.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/AuthorizationWebService.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/AuthorizationWebService.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/CachedAuthorizationService.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/CachedAuthorizationService.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/CachedAuthorizationService.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/CachedAuthorizationService.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/DefaultAuthorizationParser.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/DefaultAuthorizationParser.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/DefaultAuthorizationParser.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/DefaultAuthorizationParser.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/Enumerations.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/Enumerations.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/Enumerations.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/Enumerations.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/IAuthorizationParser.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/IAuthorizationParser.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/IAuthorizationService.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/IAuthorizationService.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/ICache.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/ICache.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/ICacheFactory.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/ICacheFactory.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/MemoryCache.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/MemoryCache.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/MemoryCache.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/MemoryCache.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/OrthancResource.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/OrthancResource.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/OrthancResource.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/OrthancResource.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/Plugin.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/Plugin.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/ResourceHierarchyCache.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/ResourceHierarchyCache.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/ResourceHierarchyCache.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/ResourceHierarchyCache.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/Token.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/Token.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Plugin/Token.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Plugin/Token.h Wed Jan 06 18:01:12 2021 +0100 @@ -1,6 +1,6 @@ /** * Advanced authorization plugin for Orthanc - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License
--- a/Resources/Orthanc/CMake/AutoGeneratedCode.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/CMake/AutoGeneratedCode.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/CMake/Compiler.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/CMake/Compiler.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/CMake/DownloadOrthancFramework.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License @@ -120,6 +120,8 @@ set(ORTHANC_FRAMEWORK_MD5 "f8ec7554ef5d23ea4ce474b1e8214de9") elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.1") set(ORTHANC_FRAMEWORK_MD5 "db094f96399cbe8b9bbdbce34884c220") + elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "1.8.2") + set(ORTHANC_FRAMEWORK_MD5 "8bfa10e66c9931e74111be0bfb1f4548") # Below this point are development snapshots that were used to # release some plugin, before an official release of the Orthanc @@ -134,6 +136,12 @@ elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "82652c5fc04f") # Stone Web viewer 1.0 (framework pre-1.8.1) set(ORTHANC_FRAMEWORK_MD5 "d77331d68917e66a3f4f9b807bbdab7f") + elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "4a3ba4bf4ba7") + # PostgreSQL 3.3 (framework pre-1.8.2) + set(ORTHANC_FRAMEWORK_MD5 "2d82bddf06f9cfe82095495cb3b8abde") + elseif (ORTHANC_FRAMEWORK_VERSION STREQUAL "23ad1b9c7800") + # For "Toolbox::ReadJson()" and "Toolbox::Write{...}Json()" (pre-1.9.0) + set(ORTHANC_FRAMEWORK_MD5 "9af92080e57c60dd288eba46ce606c00") endif() endif() endif() @@ -529,6 +537,16 @@ include_directories(${DCMTK_INCLUDE_DIRS}) link_libraries(${DCMTK_LIBRARIES}) endif() + + # Optional component - OpenSSL + if (ENABLE_SSL) + include(FindOpenSSL) + if (NOT ${OPENSSL_FOUND}) + message(FATAL_ERROR "Unable to find OpenSSL") + endif() + include_directories(${OPENSSL_INCLUDE_DIR}) + link_libraries(${OPENSSL_LIBRARIES}) + endif() endif() # Look for Orthanc framework shared library
--- a/Resources/Orthanc/CMake/DownloadPackage.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/CMake/DownloadPackage.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/CMake/GoogleTestConfiguration.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/LinuxStandardBaseToolchain.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/LinuxStandardBaseToolchain.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/MinGW-W64-Toolchain32.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/MinGW-W64-Toolchain32.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/MinGW-W64-Toolchain64.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/MinGW-W64-Toolchain64.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/MinGWToolchain.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/MinGWToolchain.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License
--- a/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.cpp Wed Jan 06 18:01:12 2021 +0100 @@ -2,7 +2,7 @@ * Orthanc - A Lightweight, RESTful DICOM Store * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics * Department, University Hospital of Liege, Belgium - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -24,9 +24,33 @@ #include <boost/algorithm/string/predicate.hpp> #include <boost/move/unique_ptr.hpp> #include <boost/thread.hpp> + + #include <json/reader.h> +#include <json/version.h> #include <json/writer.h> +#if !defined(JSONCPP_VERSION_MAJOR) || !defined(JSONCPP_VERSION_MINOR) +# error Cannot access the version of JsonCpp +#endif + + +/** + * We use deprecated "Json::Reader", "Json::StyledWriter" and + * "Json::FastWriter" if JsonCpp < 1.7.0. This choice is rather + * arbitrary, but if Json >= 1.9.0, gcc generates explicit deprecation + * warnings (clang was warning in earlier versions). For reference, + * these classes seem to have been deprecated since JsonCpp 1.4.0 (on + * February 2015) by the following changeset: + * https://github.com/open-source-parsers/jsoncpp/commit/8df98f6112890d6272734975dd6d70cf8999bb22 + **/ +#if (JSONCPP_VERSION_MAJOR >= 2 || \ + (JSONCPP_VERSION_MAJOR == 1 && JSONCPP_VERSION_MINOR >= 8)) +# define JSONCPP_USE_DEPRECATED 0 +#else +# define JSONCPP_USE_DEPRECATED 1 +#endif + #if !ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 2, 0) static const OrthancPluginErrorCode OrthancPluginErrorCode_NullPointer = OrthancPluginErrorCode_Plugin; @@ -202,10 +226,7 @@ ORTHANC_PLUGINS_THROW_EXCEPTION(InternalError); } - const char* tmp = reinterpret_cast<const char*>(buffer_.data); - - Json::Reader reader; - if (!reader.parse(tmp, tmp + buffer_.size, target)) + if (!ReadJson(target, buffer_.data, buffer_.size)) { LogError("Cannot convert some memory buffer to JSON"); ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat); @@ -292,12 +313,75 @@ } + bool ReadJson(Json::Value& target, + const std::string& source) + { + return ReadJson(target, source.empty() ? NULL : source.c_str(), source.size()); + } + + + bool ReadJson(Json::Value& target, + const void* buffer, + size_t size) + { +#if JSONCPP_USE_DEPRECATED == 1 + Json::Reader reader; + return reader.parse(reinterpret_cast<const char*>(buffer), + reinterpret_cast<const char*>(buffer) + size, target); +#else + Json::CharReaderBuilder builder; + const std::unique_ptr<Json::CharReader> reader(builder.newCharReader()); + assert(reader.get() != NULL); + JSONCPP_STRING err; + if (reader->parse(reinterpret_cast<const char*>(buffer), + reinterpret_cast<const char*>(buffer) + size, &target, &err)) + { + return true; + } + else + { + LogError("Cannot parse JSON: " + err); + return false; + } +#endif + } + + + void WriteFastJson(std::string& target, + const Json::Value& source) + { +#if JSONCPP_USE_DEPRECATED == 1 + Json::FastWriter writer; + target = writer.write(source); +#else + Json::StreamWriterBuilder builder; + builder.settings_["indentation"] = ""; + target = Json::writeString(builder, source); +#endif + } + + + void WriteStyledJson(std::string& target, + const Json::Value& source) + { +#if JSONCPP_USE_DEPRECATED == 1 + Json::StyledWriter writer; + target = writer.write(source); +#else + Json::StreamWriterBuilder builder; + builder.settings_["indentation"] = " "; + target = Json::writeString(builder, source); +#endif + } + + bool MemoryBuffer::RestApiPost(const std::string& uri, const Json::Value& body, bool applyPlugins) { - Json::FastWriter writer; - return RestApiPost(uri, writer.write(body), applyPlugins); + std::string s; + WriteFastJson(s, body); + return RestApiPost(uri, s, applyPlugins); } @@ -305,8 +389,9 @@ const Json::Value& body, bool applyPlugins) { - Json::FastWriter writer; - return RestApiPut(uri, writer.write(body), applyPlugins); + std::string s; + WriteFastJson(s, body); + return RestApiPut(uri, s, applyPlugins); } @@ -315,8 +400,8 @@ { Clear(); - Json::FastWriter writer; - std::string s = writer.write(tags); + std::string s; + WriteFastJson(s, tags); Check(OrthancPluginCreateDicom(GetGlobalContext(), &buffer_, s.c_str(), NULL, flags)); } @@ -327,8 +412,8 @@ { Clear(); - Json::FastWriter writer; - std::string s = writer.write(tags); + std::string s; + WriteFastJson(s, tags); Check(OrthancPluginCreateDicom(GetGlobalContext(), &buffer_, s.c_str(), pixelData.GetObject(), flags)); } @@ -390,8 +475,7 @@ ORTHANC_PLUGINS_THROW_EXCEPTION(InternalError); } - Json::Reader reader; - if (!reader.parse(str_, target)) + if (!ReadJson(target, str_)) { LogError("Cannot convert some memory buffer to JSON"); ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat); @@ -1190,19 +1274,16 @@ #endif /* HAS_ORTHANC_PLUGIN_FIND_MATCHER == 1 */ void AnswerJson(const Json::Value& value, - OrthancPluginRestOutput* output - ) + OrthancPluginRestOutput* output) { - Json::StyledWriter writer; - std::string bodyString = writer.write(value); - + std::string bodyString; + WriteStyledJson(bodyString, value); OrthancPluginAnswerBuffer(GetGlobalContext(), output, bodyString.c_str(), bodyString.size(), "application/json"); } void AnswerString(const std::string& answer, const char* mimeType, - OrthancPluginRestOutput* output - ) + OrthancPluginRestOutput* output) { OrthancPluginAnswerBuffer(GetGlobalContext(), output, answer.c_str(), answer.size(), mimeType); } @@ -1324,8 +1405,9 @@ const Json::Value& body, bool applyPlugins) { - Json::FastWriter writer; - return RestApiPost(result, uri, writer.write(body), applyPlugins); + std::string s; + WriteFastJson(s, body); + return RestApiPost(result, uri, s, applyPlugins); } @@ -1357,8 +1439,9 @@ const Json::Value& body, bool applyPlugins) { - Json::FastWriter writer; - return RestApiPut(result, uri, writer.write(body), applyPlugins); + std::string s; + WriteFastJson(s, body); + return RestApiPut(result, uri, s, applyPlugins); } @@ -2020,8 +2103,7 @@ } else { - Json::FastWriter writer; - content_ = writer.write(content); + WriteFastJson(content_, content); } } @@ -2041,8 +2123,7 @@ } else { - Json::FastWriter writer; - serialized_ = writer.write(serialized); + WriteFastJson(serialized_, serialized); hasSerialized_ = true; } } @@ -2902,8 +2983,7 @@ std::string body; Execute(answerHeaders, body); - Json::Reader reader; - if (!reader.parse(body, answerBody)) + if (!ReadJson(answerBody, body)) { LogError("Cannot convert HTTP answer body to JSON"); ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat);
--- a/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/Plugins/OrthancPluginCppWrapper.h Wed Jan 06 18:01:12 2021 +0100 @@ -2,7 +2,7 @@ * Orthanc - A Lightweight, RESTful DICOM Store * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics * Department, University Hospital of Liege, Belgium - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -476,6 +476,19 @@ #endif + bool ReadJson(Json::Value& target, + const std::string& source); + + bool ReadJson(Json::Value& target, + const void* buffer, + size_t size); + + void WriteFastJson(std::string& target, + const Json::Value& source); + + void WriteStyledJson(std::string& target, + const Json::Value& source); + bool RestApiGet(Json::Value& result, const std::string& uri, bool applyPlugins);
--- a/Resources/Orthanc/Plugins/OrthancPluginException.h Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/Plugins/OrthancPluginException.h Wed Jan 06 18:01:12 2021 +0100 @@ -2,7 +2,7 @@ * Orthanc - A Lightweight, RESTful DICOM Store * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics * Department, University Hospital of Liege, Belgium - * Copyright (C) 2017-2020 Osimis S.A., Belgium + * Copyright (C) 2017-2021 Osimis S.A., Belgium * * This program is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as
--- a/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/Orthanc/Plugins/OrthancPluginsExports.cmake Wed Jan 06 18:01:12 2021 +0100 @@ -1,7 +1,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU General Public License as
--- a/Resources/WindowsResources.py Thu Dec 10 15:10:22 2020 +0100 +++ b/Resources/WindowsResources.py Wed Jan 06 18:01:12 2021 +0100 @@ -3,7 +3,7 @@ # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics # Department, University Hospital of Liege, Belgium -# Copyright (C) 2017-2020 Osimis S.A., Belgium +# Copyright (C) 2017-2021 Osimis S.A., Belgium # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU General Public License as