diff --git a/google/cloud/storage/client_options.cc b/google/cloud/storage/client_options.cc index 2e2cb2c9f885..9c6d56f2856b 100644 --- a/google/cloud/storage/client_options.cc +++ b/google/cloud/storage/client_options.cc @@ -22,6 +22,7 @@ #include "google/cloud/internal/populate_common_options.h" #include "google/cloud/internal/rest_options.h" #include "google/cloud/internal/rest_response.h" +#include "google/cloud/internal/service_endpoint.h" #include "google/cloud/log.h" #include "absl/strings/str_split.h" #include @@ -169,11 +170,16 @@ Options ApplyPolicy(Options opts, IdempotencyPolicy const& p) { Options DefaultOptions(std::shared_ptr credentials, Options opts) { + auto gcs_ep = google::cloud::internal::UniverseDomainEndpoint( + "https://storage.googleapis.com", opts); + auto iam_ep = absl::StrCat(google::cloud::internal::UniverseDomainEndpoint( + "https://iamcredentials.googleapis.com", opts), + "/v1"); auto o = Options{} .set(std::move(credentials)) - .set("https://storage.googleapis.com") - .set("https://iamcredentials.googleapis.com/v1") + .set(std::move(gcs_ep)) + .set(std::move(iam_ep)) .set("v1") .set(DefaultConnectionPoolSize()) .set( diff --git a/google/cloud/storage/client_options_test.cc b/google/cloud/storage/client_options_test.cc index b78caf22e6e1..85f7e9142982 100644 --- a/google/cloud/storage/client_options_test.cc +++ b/google/cloud/storage/client_options_test.cc @@ -22,6 +22,7 @@ #include "google/cloud/testing_util/scoped_environment.h" #include "google/cloud/testing_util/setenv.h" #include "google/cloud/testing_util/status_matchers.h" +#include "google/cloud/universe_domain_options.h" #include #include #include @@ -390,6 +391,30 @@ TEST_F(ClientOptionsTest, DefaultOptions) { EXPECT_FALSE(o.has()); } +TEST_F(ClientOptionsTest, IncorporatesUniverseDomain) { + auto o = internal::DefaultOptions( + oauth2::CreateAnonymousCredentials(), + Options{}.set( + "my-ud.net")); + EXPECT_EQ(o.get(), "https://storage.my-ud.net"); + EXPECT_EQ(o.get(), "https://iamcredentials.my-ud.net/v1"); +} + +TEST_F(ClientOptionsTest, CustomEndpointOverridesUniverseDomain) { + auto o = internal::DefaultOptions( + oauth2::CreateAnonymousCredentials(), + Options{} + .set("https://custom-storage.googleapis.com") + .set( + "https://custom-iamcredentials.googleapis.com/v1") + .set( + "ignored-ud.net")); + EXPECT_EQ(o.get(), + "https://custom-storage.googleapis.com"); + EXPECT_EQ(o.get(), + "https://custom-iamcredentials.googleapis.com/v1"); +} + TEST_F(ClientOptionsTest, HttpVersion) { namespace rest = ::google::cloud::rest_internal; auto const options = internal::DefaultOptions(