forked from dotX12/fastapi-gateway
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathnetwork.py
More file actions
29 lines (26 loc) · 1.02 KB
/
Copy pathnetwork.py
File metadata and controls
29 lines (26 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import aiohttp
import async_timeout
from typing import Optional, Union
from aiohttp import JsonPayload
from fastapi.datastructures import Headers
from fastapi_proxy.utils.form import CustomFormData
from fastapi_proxy.utils.response import decode_json
from fastapi_proxy.utils.request import create_dict_if_not
async def make_request(
url: str,
method: str,
headers: Union[Headers, dict],
query: Optional[dict] = None,
data: Union[CustomFormData, JsonPayload] = None,
timeout: int = 60,
):
data = create_dict_if_not(data=data)
query = create_dict_if_not(data=query)
async with async_timeout.timeout(delay=timeout):
async with aiohttp.ClientSession(headers=headers) as session:
async with session.request(
method=method, url=url, params=query, data=data
) as response:
response_json = await response.json()
decoded_json = decode_json(data=response_json)
return decoded_json, response.status, response.headers