From 8360d9e0455d0228d418749fd2b2a9df88e25ff6 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sun, 12 Nov 2023 12:36:44 -0600 Subject: [PATCH] extract common behavior --- include/providers/base_provider.hpp | 4 ++++ include/providers/s3/s3_provider.hpp | 4 ---- include/providers/sia/sia_provider.hpp | 4 ---- src/providers/base_provider.cpp | 21 +++++++++++++++++++++ src/providers/s3/s3_provider.cpp | 21 --------------------- src/providers/sia/sia_provider.cpp | 21 --------------------- 6 files changed, 25 insertions(+), 50 deletions(-) diff --git a/include/providers/base_provider.hpp b/include/providers/base_provider.hpp index f00733fe..32a6626e 100644 --- a/include/providers/base_provider.hpp +++ b/include/providers/base_provider.hpp @@ -91,6 +91,10 @@ public: std::string &api_path) const -> api_error override; + [[nodiscard]] auto get_file_size(const std::string &api_path, + std::uint64_t &file_size) const + -> api_error override; + [[nodiscard]] auto get_filesystem_item(const std::string &api_path, bool directory, filesystem_item &fsi) const diff --git a/include/providers/s3/s3_provider.hpp b/include/providers/s3/s3_provider.hpp index 377400d5..7bb54ddc 100644 --- a/include/providers/s3/s3_provider.hpp +++ b/include/providers/s3/s3_provider.hpp @@ -81,10 +81,6 @@ public: [[nodiscard]] auto get_file_list(api_file_list &list) const -> api_error override; - [[nodiscard]] auto get_file_size(const std::string &api_path, - std::uint64_t &file_size) const - -> api_error override; - [[nodiscard]] auto get_total_drive_space() const -> std::uint64_t override; [[nodiscard]] auto get_provider_type() const -> provider_type override { diff --git a/include/providers/sia/sia_provider.hpp b/include/providers/sia/sia_provider.hpp index 1e0250a5..6319e821 100644 --- a/include/providers/sia/sia_provider.hpp +++ b/include/providers/sia/sia_provider.hpp @@ -69,10 +69,6 @@ public: [[nodiscard]] auto get_file_list(api_file_list &list) const -> api_error override; - [[nodiscard]] auto get_file_size(const std::string &api_path, - std::uint64_t &file_size) const - -> api_error override; - [[nodiscard]] auto get_provider_type() const -> provider_type override { return provider_type::sia; } diff --git a/src/providers/base_provider.cpp b/src/providers/base_provider.cpp index 4a92fa11..ebebd9d5 100644 --- a/src/providers/base_provider.cpp +++ b/src/providers/base_provider.cpp @@ -146,6 +146,27 @@ auto base_provider::get_api_path_from_source(const std::string &source_path, return api_error::item_not_found; } +auto base_provider::get_file_size(const std::string &api_path, + std::uint64_t &file_size) const -> api_error { + bool exists{}; + auto res = is_directory(api_path, exists); + if (res != api_error::success) { + return res; + } + if (exists) { + return api_error::directory_exists; + } + + api_file file{}; + res = get_file(api_path, file); + if (res != api_error::success) { + return res; + } + + file_size = file.file_size; + return api_error::success; +} + auto base_provider::get_filesystem_item(const std::string &api_path, bool directory, filesystem_item &fsi) const diff --git a/src/providers/s3/s3_provider.cpp b/src/providers/s3/s3_provider.cpp index bda8eaf6..a9e8cd03 100644 --- a/src/providers/s3/s3_provider.cpp +++ b/src/providers/s3/s3_provider.cpp @@ -589,27 +589,6 @@ auto s3_provider::get_file_list(api_file_list &list) const -> api_error { return api_error::success; } -auto s3_provider::get_file_size(const std::string &api_path, - std::uint64_t &file_size) const -> api_error { - bool exists{}; - auto res = is_directory(api_path, exists); - if (res != api_error::success) { - return res; - } - if (exists) { - return api_error::directory_exists; - } - - api_file file{}; - res = get_file(api_path, file); - if (res != api_error::success) { - return res; - } - - file_size = file.file_size; - return api_error::success; -} - auto s3_provider::get_object_info(bool directory, const std::string &api_path, bool &is_encrypted, std::string &object_name, head_object_result &result) const diff --git a/src/providers/sia/sia_provider.cpp b/src/providers/sia/sia_provider.cpp index a5df4ad1..fbbc5b23 100644 --- a/src/providers/sia/sia_provider.cpp +++ b/src/providers/sia/sia_provider.cpp @@ -429,27 +429,6 @@ auto sia_provider::get_file_list(api_file_list &list) const -> api_error { return get_files_in_dir(""); } -auto sia_provider::get_file_size(const std::string &api_path, - std::uint64_t &file_size) const -> api_error { - bool exists{}; - auto res = is_directory(api_path, exists); - if (res != api_error::success) { - return res; - } - if (exists) { - return api_error::directory_exists; - } - - api_file file{}; - res = get_file(api_path, file); - if (res != api_error::success) { - return res; - } - - file_size = file.file_size; - return api_error::success; -} - auto sia_provider::get_total_drive_space() const -> std::uint64_t { try { curl::requests::http_get get{};