Skip to content

Commit

Permalink
Use status method name instead of code
Browse files Browse the repository at this point in the history
  • Loading branch information
vyahello committed May 31, 2020
1 parent 8fbf997 commit ccea411
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 23 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,23 @@ pip install aiorequest
>>> import asyncio
>>> from typing import Tuple
>>> from aiorequest.sessions import Session, HttpSession
>>> from aiorequest.responses import Response, JsonType
>>> from aiorequest.responses import HTTPStatus, Response, JsonType
>>> from aiorequest.urls import HttpUrl
>>>
>>>
>>> async def aioresponse() -> Tuple[bool, JsonType]:
>>> async def aioresponse() -> Tuple[HTTPStatus, JsonType]:
... session: Session
... async with HttpSession() as session:
... response: Response = await session.get(
... HttpUrl(host="xkcd.com", path="info.0.json")
... )
... return await response.is_ok(), await response.as_json()
... return await response.status(), await response.as_json()
...
...
>>>
>>> asyncio.run(aioresponse())
(
True,
<HTTPStatus.OK: 200>,
{
"month": "3",
"num": 2284,
Expand Down
13 changes: 7 additions & 6 deletions aiorequest/responses.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
"""The module contains a set of API for HTTP responses types."""
from typing import Iterable
from http import HTTPStatus
import http
import requests
from punish import AbstractStyle, abstractstyle
from aiorequest.types import AnyUnionDict

JsonType = AnyUnionDict
HTTPStatus = http.HTTPStatus


class ResponseError(Exception):
Expand All @@ -23,8 +24,8 @@ async def is_ok(self) -> bool:
pass

@abstractstyle
async def code(self) -> HTTPStatus:
"""Returns HTTP response status code."""
async def status(self) -> HTTPStatus:
"""Returns HTTP response status."""
pass

@abstractstyle
Expand All @@ -48,7 +49,7 @@ async def is_ok(self) -> bool:
"""See base class."""
return self._response.ok

async def code(self) -> HTTPStatus:
async def status(self) -> HTTPStatus:
"""See base class."""
return HTTPStatus(self._response.status_code)

Expand All @@ -75,9 +76,9 @@ async def safe_response(
`ResponseError` if HTTP response contains a set of errors
Returns: a response
"""
if await response.code() not in success_codes:
if await response.status() not in success_codes:
raise ResponseError(
f"HTTP response contains some errors with '{await response.code()}' status code! "
f"HTTP response contains some errors with '{await response.status()}' status! "
f"Reason: {await response.as_str()}"
)
return response
5 changes: 2 additions & 3 deletions tests/fake.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from http import HTTPStatus
from aiorequest.responses import JsonType, Response
from aiorequest.responses import HTTPStatus, JsonType, Response


class FakeHttpResponse(Response):
Expand All @@ -16,7 +15,7 @@ def __init__(
async def is_ok(self) -> bool:
return self._is_ok

async def code(self) -> HTTPStatus:
async def status(self) -> HTTPStatus:
return self._code

async def as_json(self) -> JsonType:
Expand Down
19 changes: 9 additions & 10 deletions tests/test_responses.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@
from http import HTTPStatus
from typing import Iterable
import pytest
from tests.fake import FakeHttpResponse
from aiorequest.responses import Response, ResponseError, safe_response
from aiorequest.responses import HTTPStatus, Response, ResponseError, safe_response
from tests.markers import asyncio, unit

pytestmark = [unit, asyncio]


@pytest.mark.parametrize( # noqa: PT006, PT007
"code, expected",
"status, expected",
(
pytest.param(
HTTPStatus.CONTINUE,
(HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, HTTPStatus.PROCESSING),
id="info",
),
pytest.param(
HTTPStatus.OK,
(HTTPStatus.OK, HTTPStatus.CREATED, HTTPStatus.ACCEPTED),
id="success",
HTTPStatus.OK, (HTTPStatus.OK, HTTPStatus.CREATED, HTTPStatus.ACCEPTED), id="success",
),
pytest.param(
HTTPStatus.MULTIPLE_CHOICES,
Expand All @@ -38,8 +35,10 @@
),
),
)
async def test_safe_response_code(code: HTTPStatus, expected: Iterable[int]) -> None:
assert isinstance(await safe_response(FakeHttpResponse(code), success_codes=expected), Response)
async def test_safe_response_code(status: HTTPStatus, expected: Iterable[int]) -> None:
assert isinstance(
await safe_response(FakeHttpResponse(status), success_codes=expected), Response
)


async def test_safe_response_error() -> None:
Expand All @@ -59,7 +58,7 @@ async def test_response_is_ok(response: Response) -> None:


async def test_response_code(response: Response) -> None:
assert await response.code() is HTTPStatus.OK
assert await response.status() is HTTPStatus.OK


async def test_response_text(response: Response) -> None:
Expand All @@ -75,7 +74,7 @@ async def test_logged_response_is_ok(logged_response: Response) -> None:


async def test_logged_response_code(logged_response: Response) -> None:
assert await logged_response.code() is HTTPStatus.OK
assert await logged_response.status() is HTTPStatus.OK


async def test_logged_response_text(logged_response: Response) -> None:
Expand Down

0 comments on commit ccea411

Please sign in to comment.