From bc1af610db467cb0552d3b915ddb5598caec0de8 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Wed, 15 Feb 2023 18:18:46 +0200 Subject: [PATCH] chore: `mypy` fixes --- client_manager.py | 8 ++++---- models.py | 2 +- tasks.py | 9 ++++++++- tests/test_clients.py | 4 ++-- tests/test_events.py | 8 ++++++-- views.py | 2 +- views_api.py | 5 +++++ 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/client_manager.py b/client_manager.py index 6750193..256b9fe 100644 --- a/client_manager.py +++ b/client_manager.py @@ -94,8 +94,8 @@ class NostrClientConnection: self.relay_id = relay_id self.filters: List[NostrFilter] = [] self.authenticated = False - self.pubkey: str = None - self._auth_challenge: str = None + self.pubkey: Optional[str] = None + self._auth_challenge: Optional[str] = None self._auth_challenge_created_at = 0 self._last_event_timestamp = 0 # in seconds @@ -158,7 +158,7 @@ class NostrClientConnection: if message_type == NostrEventType.CLOSE: self._handle_close(data[1]) if message_type == NostrEventType.AUTH: - await self._handle_auth(data[1]) + await self._handle_auth() return [] @@ -269,7 +269,7 @@ class NostrClientConnection: def _validate_auth_event(self, e: NostrEvent) -> Tuple[bool, str]: valid, message = self._validate_event(e) if not valid: - return [valid, message] + return (valid, message) relay_tag = e.tag_values("relay") challenge_tag = e.tag_values("challenge") diff --git a/models.py b/models.py index 611901a..9afcc20 100644 --- a/models.py +++ b/models.py @@ -216,7 +216,7 @@ class NostrEvent(BaseModel): def serialize_response(self, subscription_id): return [NostrEventType.EVENT, subscription_id, dict(self)] - def tag_values(self, tag_name: str) -> List[List[str]]: + def tag_values(self, tag_name: str) -> List[str]: return [t[1] for t in self.tags if t[0] == tag_name] @classmethod diff --git a/tasks.py b/tasks.py index b902dbb..521fca4 100644 --- a/tasks.py +++ b/tasks.py @@ -26,12 +26,19 @@ async def on_invoice_paid(payment: Payment): relay_id = payment.extra.get("relay_id") pubkey = payment.extra.get("pubkey") + if not relay_id or not pubkey: + logger.warning(f"Invoice extra data missing for 'relay_id' and 'pubkey'. Payment hash: {payment.payment_hash}") + return + if payment.extra.get("action") == "join": await invoice_paid_to_join(relay_id, pubkey, payment.amount) return if payment.extra.get("action") == "storage": storage_to_buy = payment.extra.get("storage_to_buy") + if not storage_to_buy: + logger.warning(f"Invoice extra data missing for 'storage_to_buy'. Payment hash: {payment.payment_hash}") + return await invoice_paid_for_storage(relay_id, pubkey, storage_to_buy, payment.amount) return @@ -56,7 +63,7 @@ async def invoice_paid_to_join(relay_id: str, pubkey: str, amount: int): logger.warning(ex) -async def invoice_paid_for_storage(relay_id: str, pubkey: str, storage_to_buy: int, amount: str): +async def invoice_paid_for_storage(relay_id: str, pubkey: str, storage_to_buy: int, amount: int): try: account = await get_account(relay_id, pubkey) if not account: diff --git a/tests/test_clients.py b/tests/test_clients.py index 14c6346..ec493d4 100644 --- a/tests/test_clients.py +++ b/tests/test_clients.py @@ -6,11 +6,11 @@ import pytest from fastapi import WebSocket from loguru import logger -from lnbits.extensions.nostrrelay.client_manager import ( +from lnbits.extensions.nostrrelay.client_manager import ( # type: ignore NostrClientConnection, NostrClientManager, ) -from lnbits.extensions.nostrrelay.models import RelaySpec +from lnbits.extensions.nostrrelay.models import RelaySpec # type: ignore from .helpers import get_fixtures diff --git a/tests/test_events.py b/tests/test_events.py index 0e6c296..6af5497 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -5,8 +5,12 @@ import pytest from loguru import logger from pydantic import BaseModel -from lnbits.extensions.nostrrelay.crud import create_event, get_event, get_events -from lnbits.extensions.nostrrelay.models import NostrEvent, NostrFilter +from lnbits.extensions.nostrrelay.crud import ( # type: ignore + create_event, + get_event, + get_events, +) +from lnbits.extensions.nostrrelay.models import NostrEvent, NostrFilter # type: ignore from .helpers import get_fixtures diff --git a/views.py b/views.py index 0dedab6..7d11b17 100644 --- a/views.py +++ b/views.py @@ -7,9 +7,9 @@ from starlette.responses import HTMLResponse, JSONResponse from lnbits.core.models import User from lnbits.decorators import check_user_exists -from lnbits.extensions.nostrrelay.crud import get_public_relay from . import nostrrelay_ext, nostrrelay_renderer +from .crud import get_public_relay templates = Jinja2Templates(directory="templates") diff --git a/views_api.py b/views_api.py index 3e1ae0b..e5017aa 100644 --- a/views_api.py +++ b/views_api.py @@ -185,6 +185,11 @@ async def api_get_accounts( try: # make sure the user has access to the relay relay = await get_relay(wallet.wallet.user, relay_id) + if not relay: + raise HTTPException( + status_code=HTTPStatus.NOT_FOUND, + detail="Relay not found", + ) accounts = await get_accounts(relay.id, allowed, blocked) return accounts except ValueError as ex: