refactor s3 provider
This commit is contained in:
parent
4e62156b70
commit
762a7c99d5
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user