diff --git a/helpers.py b/helpers.py index 7a94555..256e319 100644 --- a/helpers.py +++ b/helpers.py @@ -33,7 +33,7 @@ def normalize_identifier(identifier: str): return identifier -def validate_pub_key(pubkey: str): +def validate_pub_key(pubkey: str) -> str: if pubkey.startswith("npub"): _, data = bech32_decode(pubkey) if data: diff --git a/models.py b/models.py index 1eaa653..ca436bc 100644 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ from lnbits.db import FilterModel, FromRowModel from pydantic import BaseModel -from .helpers import format_amount, is_ws_url, normalize_identifier +from .helpers import format_amount, is_ws_url, normalize_identifier, validate_pub_key class CustomCost(BaseModel): @@ -23,6 +23,10 @@ class UpdateAddressData(BaseModel): pubkey: Optional[str] = None relays: Optional[List[str]] = None + def validate_data(self): + self.validate_relays_urls() + self.validate_pubkey() + def validate_relays_urls(self): if not self.relays: return @@ -30,6 +34,10 @@ def validate_relays_urls(self): if not is_ws_url(r): raise ValueError(f"Relay '{r}' is not valid!") + def validate_pubkey(self): + if self.pubkey and self.pubkey != "": + self.pubkey = validate_pub_key(self.pubkey) + class CreateAddressData(BaseModel): domain_id: str diff --git a/views_api.py b/views_api.py index 6b9b423..f5dec7a 100644 --- a/views_api.py +++ b/views_api.py @@ -420,7 +420,7 @@ async def api_update_user_address( if not user_id: raise HTTPException(HTTPStatus.FORBIDDEN) - data.validate_relays_urls() + data.validate_data() address = await get_address(domain_id, address_id) assert address, "Address not found"