private:
enum class Layout : uint8_t { bazel, flat, subdirs };
+ Url m_url;
std::string m_url_path;
httplib::Client m_http_client;
Layout m_layout = Layout::subdirs;
HttpStorageBackend::HttpStorageBackend(
const Url& url, const std::vector<Backend::Attribute>& attributes)
- : m_url_path(get_url_path(url)),
+ : m_url(url),
+ m_url_path(get_url_path(url)),
m_http_client(get_url(url))
{
if (!url.user_info().empty()) {
{
const auto url_path = get_entry_path(key);
const auto result = m_http_client.Get(url_path);
+ LOG("GET {}{} -> {}", m_url.str(), url_path, result->status);
if (result.error() != httplib::Error::Success || !result) {
LOG("Failed to get {} from http storage: {} ({})",
if (only_if_missing) {
const auto result = m_http_client.Head(url_path);
+ LOG("HEAD {}{} -> {}", m_url.str(), url_path, result->status);
if (result.error() != httplib::Error::Success || !result) {
LOG("Failed to check for {} in http storage: {} ({})",
reinterpret_cast<const char*>(value.data()),
value.size(),
content_type);
+ LOG("PUT {}{} -> {}", m_url.str(), url_path, result->status);
if (result.error() != httplib::Error::Success || !result) {
LOG("Failed to put {} to http storage: {} ({})",
{
const auto url_path = get_entry_path(key);
const auto result = m_http_client.Delete(url_path);
+ LOG("DELETE {}{} -> {}", m_url.str(), url_path, result->status);
if (result.error() != httplib::Error::Success || !result) {
LOG("Failed to delete {} from http storage: {} ({})",