Skip to content

Commit

Permalink
Merge pull request #3838 from sashank27/issue#2631
Browse files Browse the repository at this point in the history
fix issue with 'as-is' protocol and add support for pathlib in JSOCClient
  • Loading branch information
Cadair committed Feb 25, 2020
2 parents 89024fd + 55d668b commit c6b4756
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 4 deletions.
1 change: 1 addition & 0 deletions changelog/3838.bugfix.1.rst
@@ -0,0 +1 @@
Add support for passing paths of type `pathlib.Path` in `sunpy.net.jsoc.JSOCClient.fetch`.
1 change: 1 addition & 0 deletions changelog/3838.bugfix.rst
@@ -0,0 +1 @@
Add explicit support for dealing with download urls for files, under 'as-is' protocol in `sunpy.net.jsoc.JSOCClient.get_request`.
16 changes: 12 additions & 4 deletions sunpy/net/jsoc/jsoc.py
Expand Up @@ -4,6 +4,7 @@
import urllib
import warnings
from collections.abc import Sequence
from pathlib import Path

import drms
import numpy as np
Expand Down Expand Up @@ -560,7 +561,10 @@ def get_request(self, requests, path=None, overwrite=False, progress=True,
if path is None:
default_dir = config.get("downloads", "download_dir")
path = os.path.join(default_dir, '{file}')
elif isinstance(path, str) and '{file}' not in path:
elif isinstance(path, Path):
path = str(path)

if isinstance(path, str) and '{file}' not in path:
path = os.path.join(path, '{file}')

paths = []
Expand All @@ -584,9 +588,13 @@ def get_request(self, requests, path=None, overwrite=False, progress=True,
urls = []
for request in requests:
if request.status == 0:
for index, data in request.data.iterrows():
url_dir = request.request_url + '/'
urls.append(urllib.parse.urljoin(url_dir, data['filename']))
if request.protocol == 'as-is':
urls.extend(list(request.urls.url))
else:
for index, data in request.data.iterrows():
url_dir = request.request_url + '/'
urls.append(urllib.parse.urljoin(url_dir, data['filename']))

if urls:
if progress:
print_message = "{0} URLs found for download. Full request totalling {1}MB"
Expand Down
14 changes: 14 additions & 0 deletions sunpy/net/jsoc/tests/test_jsoc.py
Expand Up @@ -318,3 +318,17 @@ def test_results_filenames():
assert len(files) == len(responses)
for hmiurl in files:
assert os.path.isfile(hmiurl)


@pytest.mark.remote_data
def test_results_filenames_as_is(tmp_path):
responses = client.search(
a.Time('2014/1/1T1:00:36', '2014/1/1T01:01:38'),
a.jsoc.Series('hmi.M_45s'), a.jsoc.Notify('jsoc@cadair.com'),
a.jsoc.Protocol('as-is'))
assert len(responses) == 2
files = client.fetch(responses, path=tmp_path)
assert isinstance(files, Results)
assert len(files) == len(responses)
for hmiurl in files:
assert os.path.isfile(hmiurl)

0 comments on commit c6b4756

Please sign in to comment.