diff --git a/repertory/librepertory/src/providers/s3/s3_provider.cpp b/repertory/librepertory/src/providers/s3/s3_provider.cpp index 353a046d..78fe75dc 100644 --- a/repertory/librepertory/src/providers/s3/s3_provider.cpp +++ b/repertory/librepertory/src/providers/s3/s3_provider.cpp @@ -40,11 +40,11 @@ #include "utils/time.hpp" namespace { -[[nodiscard]] auto set_request_path(auto &request, +[[nodiscard]] auto set_request_path(auto &request, const auto &cfg, const std::string &object_name) -> repertory::api_error { request.path = object_name; - if (request.path.substr(1U).size() > 1024U) { + if ((cfg.bucket + request.path).size() > 1024U) { return repertory::api_error::name_too_long; } @@ -137,7 +137,7 @@ auto s3_provider::create_directory_impl(const std::string &api_path, response_data = std::string(data.begin(), data.end()); }; - auto res = set_request_path(put_dir, object_name + '/'); + auto res = set_request_path(put_dir, cfg, object_name + '/'); if (res != api_error::success) { return res; } @@ -244,7 +244,7 @@ auto s3_provider::create_path_directories(const std::string &api_path, response_data = std::string(data.begin(), data.end()); }; - res = set_request_path(put_dir, + res = set_request_path(put_dir, cfg, (is_encrypted ? cur_key : cur_path) + '/'); if (res != api_error::success) { return res; @@ -683,8 +683,8 @@ auto s3_provider::get_object_info(bool directory, const std::string &api_path, long /*response_code*/) { response_data = std::string(data.begin(), data.end()); }; - auto res = - set_request_path(head, directory ? object_name + '/' : object_name); + auto res = set_request_path(head, cfg, + directory ? object_name + '/' : object_name); if (res != api_error::success) { return res; } @@ -848,7 +848,7 @@ auto s3_provider::read_file_bytes(const std::string &api_path, std::size_t size, long /*response_code*/) { read_buffer = response_data; }; - res = set_request_path(get, object_name); + res = set_request_path(get, cfg, object_name); if (res != api_error::success) { return res; } @@ -947,7 +947,7 @@ auto s3_provider::remove_directory_impl(const std::string &api_path) response_data = std::string(data.begin(), data.end()); }; - auto res = set_request_path(del_dir, object_name + '/'); + auto res = set_request_path(del_dir, cfg, object_name + '/'); if (res != api_error::success) { return res; } @@ -998,7 +998,7 @@ auto s3_provider::remove_file_impl(const std::string &api_path) -> api_error { long /*response_code*/) { response_data = std::string(data.begin(), data.end()); }; - auto res = set_request_path(del_file, object_name); + auto res = set_request_path(del_file, cfg, object_name); if (res != api_error::success) { return res; } @@ -1081,7 +1081,7 @@ auto s3_provider::upload_file_impl(const std::string &api_path, }; put_file.source_path = source_path; - auto res = set_request_path(put_file, object_name); + auto res = set_request_path(put_file, cfg, object_name); if (res != api_error::success) { return res; }