You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
#pragma once |
|
#include "cache.h" |
|
#include "curlfuncs.h" |
|
#include "merrors.h" |
|
#include <json/json.h> |
|
|
|
using michlib::Error; |
|
using michlib::RetVal; |
|
|
|
class CopernicusCatalog |
|
{ |
|
static const MString caturl; |
|
|
|
std::unique_ptr<GenericCache> cache; |
|
CURLRAII chandle; |
|
Json::Value catalog; |
|
|
|
// Download catalog |
|
Error GetCatalog(); |
|
|
|
// Asset url from dataset |
|
RetVal<MString> AssetURL(const MString& prod, const MString& dataset, const MString& asset) const; |
|
|
|
public: |
|
CopernicusCatalog(); |
|
|
|
// Download JSON from url |
|
RetVal<Json::Value> GetJSON(const MString& url) const; |
|
|
|
// List of products |
|
RetVal<std::vector<MString>> ProductList() const; |
|
|
|
// List of datasets in product |
|
RetVal<std::vector<MString>> DatasetList(const MString& prod) const; |
|
|
|
// URL of product |
|
RetVal<MString> ProductURL(const MString& prod) const; |
|
|
|
// URL of dataset |
|
RetVal<MString> DatasetURL(const MString& prod, const MString& dataset) const; |
|
|
|
// URL of native data (files) in dataset |
|
RetVal<MString> DatasetNativeURL(const MString& prod, const MString& dataset) const { return AssetURL(prod, dataset, "native"); } |
|
|
|
// URL of timechuncked data (files) in dataset |
|
RetVal<MString> DatasetTimeURL(const MString& prod, const MString& dataset) const { return AssetURL(prod, dataset, "timeChunked"); } |
|
|
|
// URL of geochuncked data (files) in dataset |
|
RetVal<MString> DatasetGeoURL(const MString& prod, const MString& dataset) const { return AssetURL(prod, dataset, "geoChunked"); } |
|
|
|
bool Valid() const { return catalog.isObject(); } |
|
|
|
explicit operator bool() const { return Valid(); } |
|
};
|
|
|