Skip to content

Commit 72a2ef9

Browse files
feat(rest): build resource paths after get config.
1 parent 7a0eafb commit 72a2ef9

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

src/iceberg/catalog/rest/resource_paths.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ Status ResourcePaths::SetBaseUri(const std::string& base_uri) {
4646
return {};
4747
}
4848

49-
Result<std::string> ResourcePaths::Config() const {
50-
return std::format("{}/v1/config", base_uri_);
49+
Result<std::string> ResourcePaths::Config(const std::string& base_uri) {
50+
return std::format("{}/v1/config", base_uri);
5151
}
5252

5353
Result<std::string> ResourcePaths::OAuth2Tokens() const {

src/iceberg/catalog/rest/resource_paths.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include <string>
2424

2525
#include "iceberg/catalog/rest/iceberg_rest_export.h"
26-
#include "iceberg/catalog/rest/type_fwd.h"
2726
#include "iceberg/result.h"
2827
#include "iceberg/type_fwd.h"
2928

@@ -48,7 +47,7 @@ class ICEBERG_REST_EXPORT ResourcePaths {
4847
Status SetBaseUri(const std::string& base_uri);
4948

5049
/// \brief Get the /v1/config endpoint path.
51-
Result<std::string> Config() const;
50+
static Result<std::string> Config(const std::string& base_uri);
5251

5352
/// \brief Get the /v1/{prefix}/oauth/tokens endpoint path.
5453
Result<std::string> OAuth2Tokens() const;

src/iceberg/catalog/rest/rest_catalog.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,8 @@ std::unordered_set<Endpoint> GetDefaultEndpoints() {
6363
}
6464

6565
/// \brief Fetch server config and merge it with client config
66-
Result<CatalogConfig> FetchServerConfig(const ResourcePaths& paths,
66+
Result<CatalogConfig> FetchServerConfig(const std::string& config_path,
6767
const RestCatalogProperties& current_config) {
68-
ICEBERG_ASSIGN_OR_RAISE(auto config_path, paths.Config());
6968
HttpClient client(current_config.ExtractHeaders());
7069
ICEBERG_ASSIGN_OR_RAISE(const auto response,
7170
client.Get(config_path, /*params=*/{}, /*headers=*/{},
@@ -111,10 +110,9 @@ Result<std::shared_ptr<RestCatalog>> RestCatalog::Make(
111110
if (!file_io) {
112111
return InvalidArgument("FileIO is required to create RestCatalog");
113112
}
114-
ICEBERG_ASSIGN_OR_RAISE(
115-
auto paths, ResourcePaths::Make(std::string(TrimTrailingSlash(uri)),
116-
config.Get(RestCatalogProperties::kPrefix)));
117-
ICEBERG_ASSIGN_OR_RAISE(auto server_config, FetchServerConfig(*paths, config));
113+
ICEBERG_ASSIGN_OR_RAISE(auto config_uri,
114+
ResourcePaths::Config(std::string(TrimTrailingSlash(uri))));
115+
ICEBERG_ASSIGN_OR_RAISE(auto server_config, FetchServerConfig(config_uri, config));
118116

119117
std::unique_ptr<RestCatalogProperties> final_config = RestCatalogProperties::FromMap(
120118
MergeConfigs(server_config.defaults, config.configs(), server_config.overrides));
@@ -132,7 +130,9 @@ Result<std::shared_ptr<RestCatalog>> RestCatalog::Make(
132130

133131
// Update resource paths based on the final config
134132
ICEBERG_ASSIGN_OR_RAISE(auto final_uri, final_config->Uri());
135-
ICEBERG_RETURN_UNEXPECTED(paths->SetBaseUri(std::string(TrimTrailingSlash(final_uri))));
133+
ICEBERG_ASSIGN_OR_RAISE(
134+
auto paths, ResourcePaths::Make(std::string(TrimTrailingSlash(final_uri)),
135+
final_config->Get(RestCatalogProperties::kPrefix)));
136136

137137
return std::shared_ptr<RestCatalog>(
138138
new RestCatalog(std::move(final_config), std::move(file_io), std::move(paths),

0 commit comments

Comments
 (0)