Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions fastcore/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,10 @@ class HTTP5xxServerError(HTTPError):
pass

# %% ../nbs/03b_net.ipynb #128b5f4a
def urlopener():
def urlopener(headers=None):
_opener = urllib.request.build_opener()
_opener.addheaders = list(url_default_headers.items())
if headers:
_opener.addheaders = list(headers.items())
return _opener

# %% ../nbs/03b_net.ipynb #e0470139
Expand Down Expand Up @@ -108,7 +109,7 @@ def urlopen(url, data=None, headers=None, timeout=None, **kwargs):
if data is not None:
if not isinstance(data, (str,bytes)): data = urlencode(data)
if not isinstance(data, bytes): data = data.encode('ascii')
try: return urlopener().open(urlwrap(url, data=data, headers=headers), timeout=timeout)
try: return urlopener(headers=headers).open(urlwrap(url, data=data, headers=headers), timeout=timeout)
except HTTPError as e:
e.msg += f"\n====Error Body====\n{e.read().decode(errors='ignore')}"
raise
Expand Down
7 changes: 4 additions & 3 deletions nbs/03b_net.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -270,9 +270,10 @@
"outputs": [],
"source": [
"#| export\n",
"def urlopener():\n",
"def urlopener(headers=None):\n",
" _opener = urllib.request.build_opener()\n",
" _opener.addheaders = list(url_default_headers.items())\n",
" if headers:\n",
" _opener.addheaders = list(headers.items())\n",
" return _opener"
]
},
Expand Down Expand Up @@ -328,7 +329,7 @@
" if data is not None:\n",
" if not isinstance(data, (str,bytes)): data = urlencode(data)\n",
" if not isinstance(data, bytes): data = data.encode('ascii')\n",
" try: return urlopener().open(urlwrap(url, data=data, headers=headers), timeout=timeout)\n",
" try: return urlopener(headers=headers).open(urlwrap(url, data=data, headers=headers), timeout=timeout)\n",
" except HTTPError as e: \n",
" e.msg += f\"\\n====Error Body====\\n{e.read().decode(errors='ignore')}\"\n",
" raise"
Expand Down