Skip to content
Merged
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
3 changes: 2 additions & 1 deletion src/ahttpx/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from ._parsers import * # HTTPParser, HTTPStream, ProtocolError
from ._pool import * # Connection, ConnectionPool, Transport
from ._quickstart import * # get, post, put, patch, delete
from ._response import * # Response
from ._response import * # StatusCode, Response
from ._request import * # Method, Request
from ._streams import * # ByteStream, DuplexStream, FileStream, Stream
from ._server import * # serve_http, run
Expand Down Expand Up @@ -47,6 +47,7 @@
"Request",
"run",
"serve_http",
"StatusCode",
"Stream",
"Text",
"timeout",
Expand Down
16 changes: 8 additions & 8 deletions src/ahttpx/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def build_request(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
) -> Request:
return Request(
Expand All @@ -49,7 +49,7 @@ async def request(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
) -> Response:
request = self.build_request(method, url, headers=headers, content=content)
Expand All @@ -61,7 +61,7 @@ async def stream(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
) -> Response:
request = self.build_request(method, url, headers=headers, content=content)
Expand All @@ -70,38 +70,38 @@ async def stream(
async def get(
self,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
):
return await self.request("GET", url, headers=headers)

async def post(
self,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
return await self.request("POST", url, headers=headers, content=content)

async def put(
self,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
return await self.request("PUT", url, headers=headers, content=content)

async def patch(
self,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
return await self.request("PATCH", url, headers=headers, content=content)

async def delete(
self,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
):
return await self.request("DELETE", url, headers=headers)

Expand Down
6 changes: 6 additions & 0 deletions src/ahttpx/_headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,12 @@ def copy_update(self, update: "Headers" | typing.Mapping[str, str] | None) -> "H

return Headers(h)

def as_byte_pairs(self) -> list[tuple[bytes, bytes]]:
return [
(k.encode('ascii'), v.encode('ascii'))
for k, v in self.items()
]

def __getitem__(self, key: str) -> str:
match = key.lower()
for k, v in self._dict.items():
Expand Down
9 changes: 3 additions & 6 deletions src/ahttpx/_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ async def request(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
) -> Response:
url = self._origin.join(url)
Expand All @@ -198,7 +198,7 @@ async def stream(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
) -> Response:
url = self._origin.join(url)
Expand All @@ -211,10 +211,7 @@ async def _send_head(self, request: Request) -> None:
target = request.url.target.encode('ascii')
protocol = b'HTTP/1.1'
await self._parser.send_method_line(method, target, protocol)
headers = [
(k.encode('ascii'), v.encode('ascii'))
for k, v in request.headers.items()
]
headers = request.headers.as_byte_pairs()
await self._parser.send_headers(headers)

async def _send_body(self, request: Request) -> None:
Expand Down
10 changes: 5 additions & 5 deletions src/ahttpx/_quickstart.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@

async def get(
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
):
async with Client() as client:
return await client.request("GET", url=url, headers=headers)

async def post(
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
async with Client() as client:
return await client.request("POST", url, headers=headers, content=content)

async def put(
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
async with Client() as client:
return await client.request("PUT", url, headers=headers, content=content)

async def patch(
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
async with Client() as client:
return await client.request("PATCH", url, headers=headers, content=content)

async def delete(
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
):
async with Client() as client:
return await client.request("DELETE", url=url, headers=headers)
4 changes: 2 additions & 2 deletions src/ahttpx/_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from ._headers import Headers
from ._urls import URL

__all__ = ["Request"]
__all__ = ["Method", "Request"]


class Method:
Expand Down Expand Up @@ -35,7 +35,7 @@ def __init__(
self,
method: Method | str,
url: URL | str,
headers: Headers | typing.Mapping[str, str] | None = None,
headers: Headers | dict[str, str] | None = None,
content: Content | Stream | bytes | None = None,
):
self.method = Method(method) if not isinstance(method, Method) else method
Expand Down
Loading