From a2c61b29950773053cad7953821b95ca50faa563 Mon Sep 17 00:00:00 2001 From: Roman Snegirev Date: Wed, 15 Jul 2020 08:24:22 +0300 Subject: [PATCH] Misc fixes --- .coveragerc | 8 ++++++++ httpx_socks/__init__.py | 2 +- httpx_socks/_async_transport.py | 5 +++-- httpx_socks/core_socks/_proto_http_async.py | 2 +- httpx_socks/core_socks/_proto_http_sync.py | 2 +- httpx_socks/core_socks/_proto_socks5_async.py | 2 +- httpx_socks/core_socks/_proto_socks5_sync.py | 2 +- httpx_socks/core_socks/_stream_async.py | 7 +++---- httpx_socks/core_socks/_stream_async_aio.py | 18 ++++-------------- httpx_socks/core_socks/_stream_async_trio.py | 18 ++++-------------- httpx_socks/core_socks/_stream_sync.py | 18 +++++------------- httpx_socks/core_socks/_version.py | 2 +- 12 files changed, 33 insertions(+), 53 deletions(-) diff --git a/.coveragerc b/.coveragerc index be43bcf..1ecad5d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,3 +2,11 @@ omit = # */_proxy_chain_*.py httpx_socks/core_socks/_basic_auth.py +[report] +# Regexes for lines to exclude from consideration +exclude_lines = + pragma: no cover + def __repr__ + if self.debug: + raise NotImplementedError + raise ValueError diff --git a/httpx_socks/__init__.py b/httpx_socks/__init__.py index d8a0317..3e61c6b 100644 --- a/httpx_socks/__init__.py +++ b/httpx_socks/__init__.py @@ -1,5 +1,5 @@ __title__ = 'httpx-socks' -__version__ = '0.2.3' +__version__ = '0.2.4' from .core_socks import ( ProxyError, diff --git a/httpx_socks/_async_transport.py b/httpx_socks/_async_transport.py index 9f389df..c0920ac 100644 --- a/httpx_socks/_async_transport.py +++ b/httpx_socks/_async_transport.py @@ -135,8 +135,9 @@ async def _open_stream(self, host, port, connect_timeout, ssl_context): stream=stream ) - else: # pragma: nocover - raise RuntimeError(f'Unsupported concurrency backend {backend!r}') + else: + raise RuntimeError(f'Unsupported ' # pragma: no cover + f'concurrency backend {backend!r}') @classmethod def from_url(cls, url, **kwargs): diff --git a/httpx_socks/core_socks/_proto_http_async.py b/httpx_socks/core_socks/_proto_http_async.py index 7e1cc7b..02f3d5c 100644 --- a/httpx_socks/core_socks/_proto_http_async.py +++ b/httpx_socks/core_socks/_proto_http_async.py @@ -37,7 +37,7 @@ async def negotiate(self): await self._stream.write_all(data) - res = await self._stream.read_all() + res = await self._stream.read() if not res: raise ProxyError('Invalid proxy response') # pragma: no cover' diff --git a/httpx_socks/core_socks/_proto_http_sync.py b/httpx_socks/core_socks/_proto_http_sync.py index 14f4d6f..b5bf35b 100644 --- a/httpx_socks/core_socks/_proto_http_sync.py +++ b/httpx_socks/core_socks/_proto_http_sync.py @@ -37,7 +37,7 @@ def negotiate(self): self._stream.write_all(data) - res = self._stream.read_all() + res = self._stream.read() if not res: raise ProxyError('Invalid proxy response') # pragma: no cover' diff --git a/httpx_socks/core_socks/_proto_socks5_async.py b/httpx_socks/core_socks/_proto_socks5_async.py index af88def..c570c29 100644 --- a/httpx_socks/core_socks/_proto_socks5_async.py +++ b/httpx_socks/core_socks/_proto_socks5_async.py @@ -109,7 +109,7 @@ async def _socks_connect(self): 'must be 0x00') # read all available data (bind address) - await self._stream.read_all() + await self._stream.read() async def _build_addr_request(self): host = self._dest_host diff --git a/httpx_socks/core_socks/_proto_socks5_sync.py b/httpx_socks/core_socks/_proto_socks5_sync.py index 773d16a..0edfb04 100644 --- a/httpx_socks/core_socks/_proto_socks5_sync.py +++ b/httpx_socks/core_socks/_proto_socks5_sync.py @@ -108,7 +108,7 @@ def _socks_connect(self): 'must be 0x00') # read all available data (bind address) - self._stream.read_all() + self._stream.read() def _build_addr_request(self): host = self._dest_host diff --git a/httpx_socks/core_socks/_stream_async.py b/httpx_socks/core_socks/_stream_async.py index 489dbda..c928bd9 100644 --- a/httpx_socks/core_socks/_stream_async.py +++ b/httpx_socks/core_socks/_stream_async.py @@ -1,5 +1,7 @@ from ._resolver_async import AsyncResolver +DEFAULT_RECEIVE_SIZE = 65536 + class AsyncSocketStream: @@ -15,15 +17,12 @@ async def write(self, request): async def write_all(self, data): raise NotImplementedError() # pragma: no cover - async def read(self, max_bytes): + async def read(self, max_bytes=None): raise NotImplementedError() # pragma: no cover async def read_exact(self, n): raise NotImplementedError() # pragma: no cover - async def read_all(self, buff_size=4096): - raise NotImplementedError() # pragma: no cover - @property def resolver(self) -> AsyncResolver: raise NotImplementedError() # pragma: no cover diff --git a/httpx_socks/core_socks/_stream_async_aio.py b/httpx_socks/core_socks/_stream_async_aio.py index d92d7d9..cf560cd 100644 --- a/httpx_socks/core_socks/_stream_async_aio.py +++ b/httpx_socks/core_socks/_stream_async_aio.py @@ -1,7 +1,7 @@ import asyncio import socket -from ._stream_async import AsyncSocketStream +from ._stream_async import AsyncSocketStream, DEFAULT_RECEIVE_SIZE from ._resolver_async_aio import Resolver from ._helpers import is_ipv4_address, is_ipv6_address from ._errors import ProxyError @@ -50,7 +50,9 @@ async def write(self, request): async def write_all(self, data): await self._loop.sock_sendall(self._socket, data) - async def read(self, max_bytes): + async def read(self, max_bytes=None): + if max_bytes is None: + max_bytes = DEFAULT_RECEIVE_SIZE return await self._loop.sock_recv(self._socket, max_bytes) async def read_exact(self, n): @@ -63,18 +65,6 @@ async def read_exact(self, n): data += packet return data - async def read_all(self, buff_size=4096): - data = bytearray() - while True: - packet = await self._loop.sock_recv(self._socket, buff_size) - if not packet: - raise ProxyError('Connection closed ' # pragma: no cover - 'unexpectedly') - data += packet - if len(packet) < buff_size: - break - return data - @property def resolver(self): return self._resolver diff --git a/httpx_socks/core_socks/_stream_async_trio.py b/httpx_socks/core_socks/_stream_async_trio.py index 6f1091e..abe1530 100644 --- a/httpx_socks/core_socks/_stream_async_trio.py +++ b/httpx_socks/core_socks/_stream_async_trio.py @@ -1,6 +1,6 @@ import trio -from ._stream_async import AsyncSocketStream +from ._stream_async import AsyncSocketStream, DEFAULT_RECEIVE_SIZE from ._resolver_async_trio import Resolver from ._helpers import is_ipv4_address, is_ipv6_address from ._errors import ProxyError @@ -49,7 +49,9 @@ async def write_all(self, data): sent = await self._socket.send(remaining) total_sent += sent - async def read(self, max_bytes): + async def read(self, max_bytes=None): + if max_bytes is None: + max_bytes = DEFAULT_RECEIVE_SIZE return await self._socket.recv(max_bytes) async def read_exact(self, n): @@ -62,18 +64,6 @@ async def read_exact(self, n): data += packet return data - async def read_all(self, buff_size=4096): - data = bytearray() - while True: - packet = await self._socket.recv(buff_size) - if not packet: - raise ProxyError('Connection closed ' # pragma: no cover - 'unexpectedly') - data += packet - if len(packet) < buff_size: - break - return data - @property def resolver(self): return self._resolver diff --git a/httpx_socks/core_socks/_stream_sync.py b/httpx_socks/core_socks/_stream_sync.py index 28c33ec..05dbecb 100644 --- a/httpx_socks/core_socks/_stream_sync.py +++ b/httpx_socks/core_socks/_stream_sync.py @@ -4,6 +4,8 @@ from ._helpers import is_ipv4_address, is_ipv6_address from ._errors import ProxyError +DEFAULT_RECEIVE_SIZE = 65536 + class SyncSocketStream: _socket = None @@ -45,7 +47,9 @@ def write(self, request): def write_all(self, data): self._socket.sendall(data) - def read(self, max_bytes): + def read(self, max_bytes=None): + if max_bytes is None: + max_bytes = DEFAULT_RECEIVE_SIZE return self._socket.recv(max_bytes) def read_exact(self, n): @@ -58,18 +62,6 @@ def read_exact(self, n): data += packet return data - def read_all(self, buff_size=4096): - data = bytearray() - while True: - packet = self._socket.recv(buff_size) - if not packet: - raise ProxyError('Connection closed ' # pragma: no cover - 'unexpectedly') - data += packet - if len(packet) < buff_size: - break - return data - @property def resolver(self) -> SyncResolver: return self._resolver diff --git a/httpx_socks/core_socks/_version.py b/httpx_socks/core_socks/_version.py index b39ae55..3287756 100644 --- a/httpx_socks/core_socks/_version.py +++ b/httpx_socks/core_socks/_version.py @@ -1,2 +1,2 @@ __title__ = 'core-socks' -__version__ = '0.1.2' +__version__ = '0.1.3'