From e6c5076e39d3750076519b1ff2cc923164c8d713 Mon Sep 17 00:00:00 2001 From: Daniil Fajnberg Date: Sun, 2 Jan 2022 00:40:23 +0100 Subject: [PATCH] post requests return text only --- setup.cfg | 2 +- src/yamlhttpforms/form.py | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/setup.cfg b/setup.cfg index 10ca191..28ab9e7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = yamlhttpforms -version = 0.0.7 +version = 0.0.8 author = Daniil F. author_email = mail@placeholder123.to description = HTTP forms defined in YAML diff --git a/src/yamlhttpforms/form.py b/src/yamlhttpforms/form.py index 76d7e0c..c85d0e0 100644 --- a/src/yamlhttpforms/form.py +++ b/src/yamlhttpforms/form.py @@ -2,8 +2,8 @@ from importlib import import_module from typing import Dict, Callable, Union, Optional, Any, TYPE_CHECKING if TYPE_CHECKING: - from aiohttp import ClientSession as AioSession, ClientResponse as AioResponse - from requests import Session as ReqSession, Response as ReqResponse + from aiohttp import ClientSession as AioSession + from requests import Session as ReqSession from bs4.element import Tag as BS4Tag from .utils import PathT, yaml_overload @@ -174,7 +174,7 @@ class Form: payload[field.name] = field.default return payload - async def post_aio(self, _aiohttp_session_obj: 'AioSession' = None, **kwargs: str) -> 'AioResponse': + async def post_aio(self, _aiohttp_session_obj: 'AioSession' = None, **kwargs: str) -> str: """ Uses `aiohttp` to perform a POST request to `.url` with the form's payload generated using `kwargs`. @@ -185,20 +185,20 @@ class Form: Passed directly into `.get_payload`. Returns: - The `aiohttp.ClientResponse` object from the request. + The response text from the request. """ if self.url is None: raise AttributeError("`url` attribute not set") - from aiohttp import ClientSession, ClientResponse + from aiohttp import ClientSession from webutils import in_async_session @in_async_session - async def post(url: str, data: dict, session: ClientSession = None) -> ClientResponse: + async def post(url: str, data: dict, session: ClientSession = None) -> str: async with session.post(url, data=data) as response: - return response + return await response.text() return await post(self.url, self.get_payload(**kwargs), session=_aiohttp_session_obj) - def post_req(self, _requests_session_obj: 'ReqSession' = None, **kwargs: str) -> 'ReqResponse': + def post_req(self, _requests_session_obj: 'ReqSession' = None, **kwargs: str) -> str: """ Uses `requests` to perform a POST request to `.url` with the form's payload generated using `kwargs`. @@ -209,14 +209,14 @@ class Form: Passed directly into `.get_payload`. Returns: - The `requests.Response` object from the request. + The response text from the request. """ if self.url is None: raise AttributeError("`url` attribute not set") if _requests_session_obj is not None: - return _requests_session_obj.post(self.url, data=self.get_payload(**kwargs)) + return _requests_session_obj.post(self.url, data=self.get_payload(**kwargs)).text from requests import post - return post(self.url, data=self.get_payload(**kwargs)) + return post(self.url, data=self.get_payload(**kwargs)).text def check_with_html(self, form_tag: 'BS4Tag', check_defaults: bool = True) -> None: from .html import check_form_interface