# HG changeset patch # User Sebastien Jodogne # Date 1624545982 -7200 # Node ID ca85b6d60bca986003d4e7fd838023bfcf1f7dda # Parent 58049bdebdc3d2deae856d6c621935925e70f314 removed duplicate slash in DICOMweb sources diff -r 58049bdebdc3 -r ca85b6d60bca OrthancStone/Sources/Loaders/DicomSource.cpp --- a/OrthancStone/Sources/Loaders/DicomSource.cpp Thu Jun 24 14:48:22 2021 +0200 +++ b/OrthancStone/Sources/Loaders/DicomSource.cpp Thu Jun 24 16:46:22 2021 +0200 @@ -32,10 +32,9 @@ namespace OrthancStone { - static std::string EncodeGetArguments(const std::string& uri, - const std::map& arguments) + static std::string EncodeGetArguments(const std::map& arguments) { - std::string s = uri; + std::string s; bool first = true; for (std::map::const_iterator @@ -60,6 +59,39 @@ } + static std::string AddUriSuffix(const std::string& base, + const std::string& suffix) + { + if (base.empty()) + { + return suffix; + } + else if (suffix.empty()) + { + return base; + } + else + { + char lastBase = base[base.size() - 1]; + + if (lastBase == '/' && + suffix[0] == '/') + { + return base + suffix.substr(1); + } + else if (lastBase == '/' || + suffix[0] == '/') + { + return base + suffix; + } + else + { + return base + "/" + suffix; + } + } + } + + void DicomSource::SetOrthancSource(const Orthanc::WebServiceParameters& parameters) { type_ = DicomSourceType_Orthanc; @@ -196,7 +228,7 @@ std::unique_ptr command(new HttpCommand); command->SetMethod(Orthanc::HttpMethod_Get); - command->SetUrl(webService_.GetUrl() + EncodeGetArguments(uri, arguments)); + command->SetUrl(AddUriSuffix(webService_.GetUrl(), uri + EncodeGetArguments(arguments))); command->SetHttpHeaders(webService_.GetHttpHeaders()); for (std::map::const_iterator @@ -241,7 +273,7 @@ std::unique_ptr command(new OrthancRestApiCommand); command->SetMethod(Orthanc::HttpMethod_Post); - command->SetUri(orthancDicomWebRoot_ + "/servers/" + serverName_ + "/get"); + command->SetUri(AddUriSuffix(orthancDicomWebRoot_, "/servers/" + serverName_ + "/get")); command->SetBody(body); if (protection.get())