1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-09 03:56:01 +01:00

libstore: Simplify check for S3-specific URI query parameters

Instead of hardcoding strings we should instead use the setting
objects to determine the query names that should be preserved.
This commit is contained in:
Sergei Zimmerman 2025-10-18 18:47:27 +03:00
parent 64c55961eb
commit 61fbef42a6
No known key found for this signature in database
2 changed files with 13 additions and 10 deletions

View file

@ -1,10 +1,10 @@
#include "nix/store/s3-binary-cache-store.hh"
#include <cassert>
#include "nix/store/http-binary-cache-store.hh"
#include "nix/store/store-registration.hh"
#include <cassert>
#include <ranges>
namespace nix {
StringSet S3BinaryCacheStoreConfig::uriSchemes()
@ -17,14 +17,13 @@ S3BinaryCacheStoreConfig::S3BinaryCacheStoreConfig(
: StoreConfig(params)
, HttpBinaryCacheStoreConfig(scheme, _cacheUri, params)
{
// For S3 stores, preserve S3-specific query parameters as part of the URL
// These are needed for region specification and other S3-specific settings
assert(cacheUri.query.empty());
assert(cacheUri.scheme == "s3");
// Only copy S3-specific parameters to the URL query
static const std::set<std::string> s3Params = {"region", "endpoint", "profile", "scheme"};
for (const auto & [key, value] : params) {
if (s3Params.contains(key)) {
auto s3Params =
std::views::transform(s3UriSettings, [](const AbstractSetting * setting) { return setting->name; });
if (std::ranges::contains(s3Params, key)) {
cacheUri.query[key] = value;
}
}