diff --git a/datasources/connectors/hypercat.py b/datasources/connectors/hypercat.py index bcc6856b0569c798d7f1fcb26ca77b5a70c8de7d..ba37216c9a8001220340995e9c916bd9a03b2e88 100644 --- a/datasources/connectors/hypercat.py +++ b/datasources/connectors/hypercat.py @@ -1,6 +1,7 @@ import typing import requests +import requests.auth from datasources.connectors.base import BaseDataConnector, DataConnectorContainsDatasets, DataConnectorHasMetadata @@ -15,7 +16,14 @@ class HyperCat(DataConnectorContainsDatasets, DataConnectorHasMetadata, BaseData def get_data(self, dataset: typing.Optional[str] = None, query_params: typing.Optional[typing.Mapping[str, str]] = None): - super().get_data(dataset, query_params) + if dataset is None: + raise ValueError('When requesting data from a HyperCat catalogue you must provide a dataset href.') + + location = dataset + r = requests.get(location, + params=query_params, + auth=requests.auth.HTTPBasicAuth(self.api_key, '')) + return r.text def get_datasets(self, query_params: typing.Optional[typing.Mapping[str, str]] = None): diff --git a/datasources/tests/test_connectors.py b/datasources/tests/test_connectors.py index 11471d4f02be2b13ac622f5bb02da6bbc2be8660..94538279495cb40b4afe98c1267c02ee42046b9b 100644 --- a/datasources/tests/test_connectors.py +++ b/datasources/tests/test_connectors.py @@ -119,3 +119,20 @@ class ConnectorHyperCatTest(TestCase): self.assertIn('application/json', result['urn:X-hypercat:rels:isContentType']) + + def test_plugin_get_dataset_data(self): + """ + Test that we can get data from a single dataset within the catalogue. + """ + from decouple import config + + api_key = config('HYPERCAT_BT_API_KEY') + + dataset = self.dataset + '/datastreams/0' + + connection = self.plugin(self.url, + api_key=api_key) + result = connection.get_data(dataset=dataset) + + self.assertIsInstance(result, str) + self.assertGreaterEqual(len(result), 1)