From 2fbec67571dc34bef75785460b2ff8c7dd99c276 Mon Sep 17 00:00:00 2001 From: vinny Date: Tue, 26 Nov 2024 16:03:28 -0500 Subject: [PATCH] HARMONY-1929: Get rid of some special characters --- harmony/harmony.py | 9 ++++++--- tests/test_client.py | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/harmony/harmony.py b/harmony/harmony.py index 9f88040..08d8ea2 100644 --- a/harmony/harmony.py +++ b/harmony/harmony.py @@ -1268,15 +1268,18 @@ def get_download_filename_from_url(self, url: str) -> str: Returns: The filename that will be used to name the downloaded file. """ + name_result = None url_no_query = parse.urlunparse(parse.urlparse(url)._replace(query="")) url_parts = url_no_query.split('/') original_filename = url_parts[-1] is_staged_result = self._is_staged_result(url_no_query) if not is_staged_result: - return original_filename - item_id = url_parts[-2] - return f'{item_id}_{original_filename}' + name_result = original_filename + else: + item_id = url_parts[-2] + name_result = f'{item_id}_{original_filename}' + return name_result.replace(':', '_') def _download_file(self, url: str, directory: str = '', overwrite: bool = False) -> str: """Downloads data, saves it to a file, and returns the filename. diff --git a/tests/test_client.py b/tests/test_client.py index da8de54..cc778ab 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1009,17 +1009,18 @@ def test_download_file(overwrite): def test_download_opendap_file(): expected_data = bytes('abcde', encoding='utf-8') - expected_filename = 'SC:ATL03.006:264549068' + filename = 'SC:ATL03.006:264549068' + expected_filename = 'SC_ATL03.006_264549068' query = '?dap4.ce=/ds_surf_type[0:1:4]' path = 'https://opendap.uat.earthdata.nasa.gov/collections/C1261703111-EEDTEST/granules/' - url = path + expected_filename + query + url = path + filename + query actual_output = None with io.BytesIO() as file_obj: file_obj.write(expected_data) file_obj.seek(0) with responses.RequestsMock() as resp_mock: - resp_mock.add(responses.POST, path + expected_filename, body=file_obj.read(), stream=True, + resp_mock.add(responses.POST, path + filename, body=file_obj.read(), stream=True, match=[responses.matchers.urlencoded_params_matcher({"dap4.ce": "/ds_surf_type[0:1:4]"})]) client = Client(should_validate_auth=False) actual_output = client._download_file(url, overwrite=False)