5#include <boost/asio/awaitable.hpp>
37using Headers = std::map<std::string, std::string>;
43boost::asio::awaitable<Blob>
fetchUrlWith(std::string url, std::string pathForFormat,
Headers headers);
59std::string
awsSignatureV4(std::string_view secret, std::string_view date, std::string_view region,
60 std::string_view service, std::string_view stringToSign);
86std::optional<ZipPath>
splitZipPath(std::string_view path);
107 std::shared_ptr<const Archive>
find(
const std::string& key);
108 std::shared_ptr<const Archive>
keep(
const std::string& key, std::vector<uint8_t> data,
ZipIndex index);
113 std::shared_ptr<const Archive> archive;
119 std::list<Held> order_;
120 std::map<std::string, std::list<Held>::iterator> index_;
std::shared_ptr< const Archive > keep(const std::string &key, std::vector< uint8_t > data, ZipIndex index)
std::shared_ptr< const Archive > find(const std::string &key)
std::vector< uint8_t > data
ZipArchives(size_t maxUsage)
Result< std::vector< uint8_t > > readZipEntry(Bytes data, const ZipEntry &entry, size_t maxSize)
std::map< std::string, std::string > Headers
std::optional< ZipPath > splitZipPath(std::string_view path)
boost::asio::awaitable< Blob > fetchS3(const BucketConfig &bucket, std::string path)
boost::asio::awaitable< Blob > fetchUrlWith(std::string url, std::string pathForFormat, Headers headers)
boost::asio::awaitable< Blob > fetchHttp(const BucketConfig &bucket, std::string path)
boost::asio::awaitable< Blob > fetchInsideZip(const BucketConfig &bucket, const ZipPath &path, const SecurityConfig &security, ZipArchives &archives)
Result< ZipIndex > readZipIndex(Bytes data)
std::string awsSignatureV4(std::string_view secret, std::string_view date, std::string_view region, std::string_view service, std::string_view stringToSign)
std::map< std::string, ZipEntry > entries
Blob fetchFile(const BucketConfig &bucket, std::string path)
std::expected< T, Error > Result
std::span< const uint8_t > Bytes
Failure(Haio::ErrorCode why, const std::string &what)