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;
|
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
|
auto s3_provider::is_directory(const std::string &api_path, bool &exists) const
|
||||||
-> api_error {
|
-> api_error {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user