|
|
@ -48,9 +48,14 @@ RetVal<std::vector<MString>> CopernicusCatalog::ProductList() const |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const auto& rel = links[i]["rel"]; |
|
|
|
const auto& rel = links[i]["rel"]; |
|
|
|
const auto& titl = links[i]["title"]; |
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
|
|
|
|
|
|
|
|
if(rel.type() == Json::stringValue && titl.type() == Json::stringValue && rel.asString() == "child") out.emplace_back(titl.asString().c_str()); |
|
|
|
if(rel.type() == Json::stringValue && href.type() == Json::stringValue && rel.asString() == "child") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
auto str = href.asString(); |
|
|
|
|
|
|
|
str.erase(str.find('/')); |
|
|
|
|
|
|
|
out.emplace_back(str.c_str()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return out; |
|
|
|
return out; |
|
|
|
} |
|
|
|
} |
|
|
@ -66,9 +71,8 @@ RetVal<MString> CopernicusCatalog::ProductURL(const MString& prod) const |
|
|
|
|
|
|
|
|
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const auto& titl = links[i]["title"]; |
|
|
|
|
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
if(titl.type() == Json::stringValue && href.type() == Json::stringValue && titl.asString().c_str() == prod) return DirName(caturl) + "/" + MString(href.asString().c_str()); |
|
|
|
if(href.type() == Json::stringValue && href.asString() == (prod + "/product.stac.json").Buf()) return DirName(caturl) + "/" + MString(href.asString().c_str()); |
|
|
|
} |
|
|
|
} |
|
|
|
return {pref, "unknown product: " + prod}; |
|
|
|
return {pref, "unknown product: " + prod}; |
|
|
|
} |
|
|
|
} |
|
|
@ -94,9 +98,14 @@ RetVal<std::vector<MString>> CopernicusCatalog::DatasetList(const MString& prod) |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const auto& rel = links[i]["rel"]; |
|
|
|
const auto& rel = links[i]["rel"]; |
|
|
|
const auto& titl = links[i]["title"]; |
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
|
|
|
|
|
|
|
|
if(rel.type() == Json::stringValue && titl.type() == Json::stringValue && rel.asString() == "item") out.emplace_back(titl.asString().c_str()); |
|
|
|
if(rel.type() == Json::stringValue && href.type() == Json::stringValue && rel.asString() == "item") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
auto str = href.asString(); |
|
|
|
|
|
|
|
str.erase(str.find('/')); |
|
|
|
|
|
|
|
out.emplace_back(str.c_str()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return out; |
|
|
|
return out; |
|
|
|
} |
|
|
|
} |
|
|
@ -120,9 +129,8 @@ RetVal<MString> CopernicusCatalog::DatasetURL(const MString& prod, const MString |
|
|
|
|
|
|
|
|
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
for(Json::ArrayIndex i = 0; i < links.size(); i++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const auto& titl = links[i]["title"]; |
|
|
|
|
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
const auto& href = links[i]["href"]; |
|
|
|
if(titl.type() == Json::stringValue && href.type() == Json::stringValue && titl.asString().c_str() == dataset) return DirName(url) + "/" + MString(href.asString().c_str()); |
|
|
|
if(href.type() == Json::stringValue && href.asString() == (dataset + "/dataset.stac.json").Buf()) return DirName(url) + "/" + MString(href.asString().c_str()); |
|
|
|
} |
|
|
|
} |
|
|
|
return {pref, "unknown dataset: " + dataset}; |
|
|
|
return {pref, "unknown dataset: " + dataset}; |
|
|
|
} |
|
|
|
} |
|
|
|