diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java index 547fe94..0b5a3e9 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java @@ -644,4 +644,9 @@ public interface DataCatalogue { * @return an email address for sending email to this catalogue */ String getCatalogueEmail(); + + /** + * Retrieve a resource by id + */ + CkanResource getResource(String id, String apiKey); } diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java index ab4ad16..139b024 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java @@ -1886,6 +1886,26 @@ public class DataCatalogueImpl implements DataCatalogue{ } return false; } + + @Override + public CkanResource getResource(String id, String apiKey) { + logger.info("Request ckan resource with id " + id); + + // checks + checkNotNull(id); + checkArgument(!id.isEmpty()); + checkNotNull(apiKey); + checkArgument(!apiKey.isEmpty()); + + try{ + CheckedCkanClient client = new CheckedCkanClient(CKAN_CATALOGUE_URL, apiKey); + return client.getResource(id); + }catch(Exception e){ + logger.error("Unable to retrieve such resource, returning null ...", e); + } + + return null; + } @Override public CkanDataset getDataset(String datasetId, String apiKey) {