refactor s3 provider
All checks were successful
BlockStorage/repertory_osx_builds/pipeline/head This commit looks good
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good

This commit is contained in:
Scott E. Graves 2023-11-11 21:15:08 -06:00
parent 4e62156b70
commit 762a7c99d5

View File

@ -894,11 +894,51 @@ auto s3_provider::get_item_meta(const std::string &api_path,
return api_error::error;
}
auto s3_provider::get_total_drive_space() const -> std::uint64_t {}
auto s3_provider::get_total_drive_space() const -> std::uint64_t {
return std::numeric_limits<std::int64_t>::max() / std::int64_t(2);
}
auto s3_provider::get_total_item_count() const -> std::uint64_t {}
auto s3_provider::get_total_item_count() const -> std::uint64_t {
std::uint64_t ret{};
auto iterator = std::unique_ptr<rocksdb::Iterator>(
db_->NewIterator(rocksdb::ReadOptions()));
for (iterator->SeekToFirst(); iterator->Valid(); iterator->Next()) {
ret++;
}
return ret;
}
auto s3_provider::get_used_drive_space() const -> std::uint64_t {}
auto s3_provider::get_used_drive_space() const -> std::uint64_t {
std::string response_data;
long response_code{};
if (not get_object_list(comm_, config_.get_s3_config(), response_data,
response_code)) {
return 0U;
}
if (response_code != http_error_codes::ok) {
return 0U;
}
pugi::xml_document doc;
auto res = doc.load_string(response_data.c_str());
if (res.status != pugi::xml_parse_status::status_ok) {
return 0U;
}
const auto cfg = config_.get_s3_config();
const auto is_encrypted = not cfg.encryption_token.empty();
auto node_list = doc.select_nodes("/ListBucketResult/Contents");
return std::accumulate(
node_list.begin(), node_list.end(), std::uint64_t(0U),
[&is_encrypted](std::uint64_t total, auto node) -> std::uint64_t {
auto size = node.node().select_node("Size").node().text().as_ullong();
return total + (is_encrypted ? utils::encryption::encrypting_reader::
calculate_decrypted_size(size)
: size);
});
}
auto s3_provider::is_directory(const std::string &api_path, bool &exists) const
-> api_error {