Browse Source

Using proxy for zarr data and metadata

master
Michael Uleysky 4 days ago
parent
commit
ce31ba091c
  1. 3
      include/zarr.h
  2. 1
      src/zarr.cpp

3
include/zarr.h

@ -94,6 +94,7 @@ class ZarrFunctions: public ZarrTypes
std::unique_ptr<GenericCache> cache; std::unique_ptr<GenericCache> cache;
CURLRAII chandle; CURLRAII chandle;
MString url; MString url;
MString proxyurl;
std::vector<std::vector<size_t>> chunks; std::vector<std::vector<size_t>> chunks;
@ -107,6 +108,8 @@ class ZarrFunctions: public ZarrTypes
{ {
auto oldprefix = michlib::GPL.UsePrefix("ZARR"); auto oldprefix = michlib::GPL.UsePrefix("ZARR");
cache.reset(CreateCache(michlib::GPL.ParameterSValue("Cache", ""))); cache.reset(CreateCache(michlib::GPL.ParameterSValue("Cache", "")));
proxyurl = michlib::GPL.ParameterSValue("Proxy", "");
if(proxyurl.Exist()) curl_easy_setopt(chandle, CURLOPT_PROXY, proxyurl.Buf());
michlib::GPL.UsePrefix(oldprefix); michlib::GPL.UsePrefix(oldprefix);
if(!cache) if(!cache)
{ {

1
src/zarr.cpp

@ -171,6 +171,7 @@ Error ZarrFunctions::GetChunk(const MString& var, const std::vector<size_t>& chu
{ {
michlib::message(str + " not found in cache, downloading"); michlib::message(str + " not found in cache, downloading");
CURLRAII myhandle; // TODO: remove this workaround of unknown bug CURLRAII myhandle; // TODO: remove this workaround of unknown bug
if(proxyurl.Exist()) curl_easy_setopt(myhandle, CURLOPT_PROXY, proxyurl.Buf());
//auto [out, res] = GetUrl(chandle, str); //auto [out, res] = GetUrl(chandle, str);
auto [out, res] = GetUrl(myhandle, str); auto [out, res] = GetUrl(myhandle, str);
if(res != CURLE_OK) return Error(pref, MString("can't download chunk: ") + chandle.Err()); if(res != CURLE_OK) return Error(pref, MString("can't download chunk: ") + chandle.Err());

Loading…
Cancel
Save