diff --git a/repo2docker/contentproviders/dataverse.py b/repo2docker/contentproviders/dataverse.py index 66632f5e6..a1c57caa9 100644 --- a/repo2docker/contentproviders/dataverse.py +++ b/repo2docker/contentproviders/dataverse.py @@ -73,7 +73,7 @@ def detect(self, doi, ref=None, extra_args=None): parsed_url._replace(path="/api/search", query=search_query) ) self.log.debug("Querying Dataverse: " + search_url) - data = self.urlopen(search_url).json() + data = self.urlopen(search_url).json()["data"] if data["count_in_response"] != 1: self.log.debug( "Dataverse search query failed!\n - doi: {}\n - url: {}\n - resp: {}\n".format( @@ -103,7 +103,7 @@ def fetch(self, spec, output_dir, yield_output=False): ) resp = self.urlopen(url, headers={"accept": "application/json"}) - record = resp.json() + record = resp.json()["data"] for fobj in deep_get(record, "latestVersion.files"): file_url = "{}/api/access/datafile/{}".format( diff --git a/tests/unit/contentproviders/test_dataverse.py b/tests/unit/contentproviders/test_dataverse.py index 0e53e50aa..3d912a7b9 100644 --- a/tests/unit/contentproviders/test_dataverse.py +++ b/tests/unit/contentproviders/test_dataverse.py @@ -60,8 +60,10 @@ def doi_resolver(req, context): requests_mock.get( "https://dataverse.harvard.edu/api/search?q=entityId:3323458&type=file", json={ - "count_in_response": 1, - "items": [{"dataset_persistent_id": "doi:10.7910/DVN/6ZXAGT"}], + "data": { + "count_in_response": 1, + "items": [{"dataset_persistent_id": "doi:10.7910/DVN/6ZXAGT"}], + } }, ) @@ -109,20 +111,22 @@ def dv_files(tmpdir): def test_dataverse_fetch(dv_files, requests_mock): mock_response = { - "latestVersion": { - "files": [ - {"dataFile": {"id": 1}, "label": "some-file.txt"}, - { - "dataFile": {"id": 2}, - "label": "some-other-file.txt", - "directoryLabel": "directory", - }, - { - "dataFile": {"id": 3}, - "label": "the-other-file.txt", - "directoryLabel": "directory/subdirectory", - }, - ] + "data": { + "latestVersion": { + "files": [ + {"dataFile": {"id": 1}, "label": "some-file.txt"}, + { + "dataFile": {"id": 2}, + "label": "some-other-file.txt", + "directoryLabel": "directory", + }, + { + "dataFile": {"id": 3}, + "label": "the-other-file.txt", + "directoryLabel": "directory/subdirectory", + }, + ] + } } }