diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a1ec9ad..a0231fc 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,7 @@ [0.3.2] - added custom logger +- auth logix synced with core +- httpx [0.3.1] - glitchtip connect diff --git a/pyproject.toml b/pyproject.toml index fbf1f38..e38ad8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,10 +11,10 @@ redis = "^5.0.3" ariadne = "^0.23.0" starlette = "^0.37.2" itsdangerous = "^2.1.2" -aiohttp = "^3.9.3" requests = "^2.31.0" granian = "^1.2.1" colorlog = "^6.8.2" +httpx = "^0.27.0" [tool.poetry.group.dev.dependencies] pre-commit = "^3.6.0" diff --git a/resolvers/__init__.py b/resolvers/__init__.py index cdd4679..9f4b2b9 100644 --- a/resolvers/__init__.py +++ b/resolvers/__init__.py @@ -1,7 +1,11 @@ from resolvers.chats import create_chat, delete_chat, update_chat from resolvers.load import load_chats, load_messages_by -from resolvers.messages import (create_message, delete_message, mark_as_read, - update_message) +from resolvers.messages import ( + create_message, + delete_message, + mark_as_read, + update_message, +) from resolvers.search import search_messages, search_recipients __all__ = [ diff --git a/services/core.py b/services/core.py index bdb89cd..d1e9cef 100644 --- a/services/core.py +++ b/services/core.py @@ -1,68 +1,46 @@ import asyncio import logging from datetime import datetime, timedelta, timezone -from typing import List -import requests +import json -from models.member import ChatMember from services.logger import root_logger as logger -from settings import API_BASE +from services.rediscache import redis logger.setLevel(logging.DEBUG) -def _request_endpoint(query_name, body) -> dict: - logger.debug(f"requesting {query_name}...") - response = requests.post( - API_BASE, headers={"Content-Type": "application/json"}, json=body, timeout=30.0 - ) - if response.status_code == 200: - try: - r = response.json() - result = r.get("data", {}).get(query_name, {}) - if result: - logger.info(f"entries amount in result: {len(result)} ") - return result - except ValueError as e: - logger.error(f"Error decoding JSON response: {e}") - - return {} - - def get_all_authors(): - query_name = "get_authors_all" + authors = [] + redis_key = "user:*" - gql = { - "query": "query { " + query_name + "{ id slug pic name user } }", - "variables": None, - } + result = redis.execute("GET", redis_key) + if isinstance(result, str): + authors = json.loads(result) - return _request_endpoint(query_name, gql) + return authors def get_author_by_user(user: str): - operation = "GetAuthorId" - query_name = "get_author_id" - gql = { - "query": f"query {operation}($user: String!) {{ {query_name}(user: $user){{ id }} }}", # noqa E201, E202 - "operationName": operation, - "variables": {"user": user.strip()}, - } + author = None + redis_key = f"user:{user}" - return _request_endpoint(query_name, gql) + result = redis.execute("GET", redis_key) + if isinstance(result, str): + author = json.loads(result) + + return author -def get_my_followed() -> List[ChatMember]: - query_name = "get_my_followed" +def get_author_followed(author_id: int): + authors = [] + redis_key = f"author:{author_id}:follows-authors" - gql = { - "query": "query { " + query_name + " { authors { id slug pic name } } }", - "variables": None, - } + result = redis.execute("GET", redis_key) + if isinstance(result, str): + authors = json.loads(result) - result = _request_endpoint(query_name, gql) - return result.get("authors", []) + return authors class CacheStorage: