aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/http-binary-cache-store.cc
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-01-26 11:12:30 -0800
committerShea Levy <shea@shealevy.com>2018-01-26 11:12:30 -0800
commit1d5d277ac7bf8a4bc601358b38746005416e935e (patch)
treeb25687daa670e2d3605d99fe4761b9953e82c9de /src/libstore/http-binary-cache-store.cc
parente09161d05cfbd7c6d4cf41a35765e3fe346ea181 (diff)
HttpBinaryCacheStore: Support upsertFile with PUT.
Some servers, such as Artifactory, allow uploading with PUT and BASIC auth. This allows nix copy to work to upload binaries to those servers. Worked on together with @adelbertc
Diffstat (limited to 'src/libstore/http-binary-cache-store.cc')
-rw-r--r--src/libstore/http-binary-cache-store.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 057337685..93bd3e5d5 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -67,7 +67,13 @@ protected:
const std::string & data,
const std::string & mimeType) override
{
- throw UploadToHTTP("uploading to an HTTP binary cache is not supported");
+ auto data_ = std::make_shared<string>(data);
+ auto req = DownloadRequest(cacheUri + "/" + path, data_, mimeType);
+ try {
+ getDownloader()->download(req);
+ } catch (DownloadError & e) {
+ throw UploadToHTTP(format("uploading to HTTP binary cache at %1% not supported: %2%") % cacheUri % e.msg());
+ }
}
void getFile(const std::string & path,