browserfetch 0.10.0__tar.gz → 0.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {browserfetch-0.10.0 → browserfetch-0.10.1}/PKG-INFO +1 -1
- {browserfetch-0.10.0 → browserfetch-0.10.1}/browserfetch/__init__.py +21 -5
- browserfetch-0.10.1/tests/test_init.py +25 -0
- {browserfetch-0.10.0 → browserfetch-0.10.1}/LICENSE +0 -0
- {browserfetch-0.10.0 → browserfetch-0.10.1}/README.rst +0 -0
- {browserfetch-0.10.0 → browserfetch-0.10.1}/browserfetch/__main__.py +0 -0
- {browserfetch-0.10.0 → browserfetch-0.10.1}/browserfetch/browserfetch.js +0 -0
- {browserfetch-0.10.0 → browserfetch-0.10.1}/pyproject.toml +0 -0
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
__version__ = '0.10.
|
|
1
|
+
__version__ = '0.10.1'
|
|
2
|
+
__all__ = [
|
|
3
|
+
'BrowserError',
|
|
4
|
+
'evaluate',
|
|
5
|
+
'fetch',
|
|
6
|
+
'get',
|
|
7
|
+
'post',
|
|
8
|
+
'Response',
|
|
9
|
+
'start_server',
|
|
10
|
+
]
|
|
2
11
|
import atexit
|
|
3
12
|
from asyncio import (
|
|
4
13
|
AbstractEventLoop,
|
|
@@ -13,7 +22,7 @@ from dataclasses import dataclass
|
|
|
13
22
|
from html import escape
|
|
14
23
|
from json import dumps, loads
|
|
15
24
|
from logging import getLogger
|
|
16
|
-
from urllib.parse import urlencode
|
|
25
|
+
from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
|
|
17
26
|
|
|
18
27
|
from aiohttp import ClientSession, ClientWebSocketResponse
|
|
19
28
|
from aiohttp.web import (
|
|
@@ -147,7 +156,7 @@ async def _(request):
|
|
|
147
156
|
try:
|
|
148
157
|
await receive_responses(ws)
|
|
149
158
|
except TypeError:
|
|
150
|
-
logger.info('
|
|
159
|
+
logger.info('WebSocket was closed by browser')
|
|
151
160
|
hosts[host] = Event()
|
|
152
161
|
return ws
|
|
153
162
|
|
|
@@ -251,7 +260,14 @@ async def fetch(
|
|
|
251
260
|
:return: a dict of response values.
|
|
252
261
|
"""
|
|
253
262
|
if params is not None:
|
|
254
|
-
|
|
263
|
+
parsed_url = urlparse(url)
|
|
264
|
+
url = urlunparse(
|
|
265
|
+
parsed_url._replace(
|
|
266
|
+
query=urlencode(
|
|
267
|
+
parse_qsl(parsed_url.query) + [*params.items()]
|
|
268
|
+
)
|
|
269
|
+
)
|
|
270
|
+
)
|
|
255
271
|
|
|
256
272
|
d = await _request(
|
|
257
273
|
host,
|
|
@@ -291,7 +307,7 @@ async def post(
|
|
|
291
307
|
url: str,
|
|
292
308
|
*,
|
|
293
309
|
params: dict | None = None,
|
|
294
|
-
data
|
|
310
|
+
data=None,
|
|
295
311
|
form: dict | None = None,
|
|
296
312
|
timeout: int | float = 95,
|
|
297
313
|
options: dict | None = None,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from contextlib import suppress
|
|
2
|
+
from unittest.mock import Mock, patch
|
|
3
|
+
|
|
4
|
+
from browserfetch import fetch
|
|
5
|
+
|
|
6
|
+
request_mock = Mock()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@patch('browserfetch._request', new=request_mock)
|
|
10
|
+
async def test_params():
|
|
11
|
+
with suppress(TypeError):
|
|
12
|
+
await fetch(
|
|
13
|
+
url='http://stackoverflow.com/search?q=question',
|
|
14
|
+
params={'lang': 'en', 'tag': 'python', 'q': True},
|
|
15
|
+
)
|
|
16
|
+
request_mock.assert_called_once_with(
|
|
17
|
+
None, # host
|
|
18
|
+
{
|
|
19
|
+
'action': 'fetch',
|
|
20
|
+
'url': 'http://stackoverflow.com/search?q=question&lang=en&tag=python&q=True',
|
|
21
|
+
'options': None,
|
|
22
|
+
'timeout': 95,
|
|
23
|
+
}, # data
|
|
24
|
+
None, # body
|
|
25
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|