Skip to content

Commit 2d59684

Browse files
committed
Add the headers parameter to urlcheck, urlsave, urlretrieve
Add headers parameter (default to None) to urlcheck, urlretrieve and urlsave methods to allow injection of headers to requests (e.g. authentication)
1 parent 86337ba commit 2d59684

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

fastcore/net.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ def urljson(url, data=None, timeout=None):
130130
return json.loads(res) if res else {}
131131

132132
# %% ../nbs/03b_net.ipynb 23
133-
def urlcheck(url, timeout=10):
133+
def urlcheck(url, headers=None, timeout=10):
134134
if not url: return True
135135
try:
136-
with urlopen(url, timeout=timeout) as u: return u.status<400
136+
with urlopen(url, headers=headers, timeout=timeout) as u: return u.status<400
137137
except URLError: return False
138138
except socket.timeout: return False
139139
except InvalidURL: return False
@@ -144,9 +144,9 @@ def urlclean(url):
144144
return urlunparse(urlparse(str(url))[:3]+('','',''))
145145

146146
# %% ../nbs/03b_net.ipynb 26
147-
def urlretrieve(url, filename=None, reporthook=None, data=None, timeout=None):
147+
def urlretrieve(url, filename=None, reporthook=None, data=None, headers=None, timeout=None):
148148
"Same as `urllib.request.urlretrieve` but also works with `Request` objects"
149-
with contextlib.closing(urlopen(url, data, timeout=timeout)) as fp:
149+
with contextlib.closing(urlopen(url, data, headers=headers, timeout=timeout)) as fp:
150150
headers = fp.info()
151151
if filename: tfp = open(filename, 'wb')
152152
else:
@@ -177,11 +177,11 @@ def urldest(url, dest=None):
177177
return dest/name if dest.is_dir() else dest
178178

179179
# %% ../nbs/03b_net.ipynb 28
180-
def urlsave(url, dest=None, reporthook=None, timeout=None):
180+
def urlsave(url, dest=None, reporthook=None, headers=None, timeout=None):
181181
"Retrieve `url` and save based on its name"
182182
dest = urldest(url, dest)
183183
dest.parent.mkdir(parents=True, exist_ok=True)
184-
nm,msg = urlretrieve(url, dest, reporthook, timeout=timeout)
184+
nm,msg = urlretrieve(url, dest, reporthook, headers=headers, timeout=timeout)
185185
return nm
186186

187187
# %% ../nbs/03b_net.ipynb 30

nbs/03b_net.ipynb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,10 @@
402402
"outputs": [],
403403
"source": [
404404
"#|export\n",
405-
"def urlcheck(url, timeout=10):\n",
405+
"def urlcheck(url, headers=None, timeout=10):\n",
406406
" if not url: return True\n",
407407
" try:\n",
408-
" with urlopen(url, timeout=timeout) as u: return u.status<400\n",
408+
" with urlopen(url, headers=headers, timeout=timeout) as u: return u.status<400\n",
409409
" except URLError: return False\n",
410410
" except socket.timeout: return False\n",
411411
" except InvalidURL: return False"
@@ -439,9 +439,9 @@
439439
"outputs": [],
440440
"source": [
441441
"#|export\n",
442-
"def urlretrieve(url, filename=None, reporthook=None, data=None, timeout=None):\n",
442+
"def urlretrieve(url, filename=None, reporthook=None, data=None, headers=None, timeout=None):\n",
443443
" \"Same as `urllib.request.urlretrieve` but also works with `Request` objects\"\n",
444-
" with contextlib.closing(urlopen(url, data, timeout=timeout)) as fp:\n",
444+
" with contextlib.closing(urlopen(url, data, headers=headers, timeout=timeout)) as fp:\n",
445445
" headers = fp.info()\n",
446446
" if filename: tfp = open(filename, 'wb')\n",
447447
" else:\n",
@@ -486,11 +486,11 @@
486486
"outputs": [],
487487
"source": [
488488
"#|export\n",
489-
"def urlsave(url, dest=None, reporthook=None, timeout=None):\n",
489+
"def urlsave(url, dest=None, reporthook=None, headers=None, timeout=None):\n",
490490
" \"Retrieve `url` and save based on its name\"\n",
491491
" dest = urldest(url, dest)\n",
492492
" dest.parent.mkdir(parents=True, exist_ok=True)\n",
493-
" nm,msg = urlretrieve(url, dest, reporthook, timeout=timeout)\n",
493+
" nm,msg = urlretrieve(url, dest, reporthook, headers=headers, timeout=timeout)\n",
494494
" return nm"
495495
]
496496
},
@@ -729,7 +729,7 @@
729729
"split_at_heading": true
730730
},
731731
"kernelspec": {
732-
"display_name": "Python 3 (ipykernel)",
732+
"display_name": "Python 3",
733733
"language": "python",
734734
"name": "python3"
735735
}

0 commit comments

Comments
 (0)