2024-12-11 19:07:36 +00:00
|
|
|
from asyncio.log import logger
|
2024-12-11 22:04:11 +00:00
|
|
|
|
2024-12-11 19:07:36 +00:00
|
|
|
import httpx
|
2025-01-26 14:53:16 +00:00
|
|
|
from ariadne import MutationType, ObjectType, QueryType
|
2024-12-11 19:07:36 +00:00
|
|
|
|
|
|
|
from settings import AUTH_URL
|
2021-06-28 09:08:09 +00:00
|
|
|
|
2023-10-06 09:51:07 +00:00
|
|
|
query = QueryType()
|
|
|
|
mutation = MutationType()
|
2025-01-26 14:52:45 +00:00
|
|
|
|
2025-01-26 14:53:16 +00:00
|
|
|
|
2025-01-26 14:52:45 +00:00
|
|
|
def type_(name: str) -> ObjectType:
|
|
|
|
"""
|
|
|
|
Создает резолвер для объектного типа
|
2025-01-26 14:53:16 +00:00
|
|
|
|
2025-01-26 14:52:45 +00:00
|
|
|
:param name: Имя типа в схеме GraphQL
|
|
|
|
:return: Резолвер объектного типа
|
|
|
|
"""
|
|
|
|
resolver = ObjectType(name)
|
|
|
|
resolvers.append(resolver)
|
|
|
|
return resolver
|
|
|
|
|
2025-01-26 14:53:16 +00:00
|
|
|
|
2024-02-19 07:14:14 +00:00
|
|
|
resolvers = [query, mutation]
|
2024-12-11 19:07:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
async def request_graphql_data(gql, url=AUTH_URL, headers=None):
|
2024-12-11 22:04:11 +00:00
|
|
|
if not url:
|
|
|
|
return None
|
2024-12-11 19:07:36 +00:00
|
|
|
if headers is None:
|
|
|
|
headers = {"Content-Type": "application/json"}
|
|
|
|
try:
|
2024-12-11 19:52:25 +00:00
|
|
|
# logger.debug(f"{url}:\n{headers}\n{gql}")
|
2024-12-11 19:07:36 +00:00
|
|
|
async with httpx.AsyncClient() as client:
|
|
|
|
response = await client.post(url, json=gql, headers=headers)
|
|
|
|
if response.status_code == 200:
|
|
|
|
data = response.json()
|
|
|
|
errors = data.get("errors")
|
|
|
|
if errors:
|
|
|
|
logger.error(f"{url} response: {data}")
|
|
|
|
else:
|
|
|
|
return data
|
2024-12-11 19:52:25 +00:00
|
|
|
else:
|
|
|
|
logger.error(f"{url}: {response.status_code} {response.text}")
|
2024-12-11 19:07:36 +00:00
|
|
|
except Exception as _e:
|
|
|
|
# Handling and logging exceptions during authentication check
|
|
|
|
import traceback
|
|
|
|
|
|
|
|
logger.error(f"request_graphql_data error: {traceback.format_exc()}")
|
|
|
|
return None
|