wallet can now handle PostMeltResponse_deprecated from v1 api (#642)

This commit is contained in:
callebtc
2024-10-19 13:26:57 +01:00
committed by GitHub
parent 4490cc6fce
commit d2e96162f8

View File

@@ -7,6 +7,7 @@ import bolt11
import httpx
from httpx import Response
from loguru import logger
from pydantic import ValidationError
from ..core.base import (
BlindedMessage,
@@ -467,6 +468,11 @@ class LedgerAPI(LedgerAPIDeprecated):
json=payload.dict(include=_meltrequest_include_fields(proofs, outputs)), # type: ignore
timeout=None,
)
try:
self.raise_on_error_request(resp)
return_dict = resp.json()
return PostMeltQuoteResponse.parse_obj(return_dict)
except Exception as e:
# BEGIN backwards compatibility < 0.15.0
# assume the mint has not upgraded yet if we get a 404
if resp.status_code == 404:
@@ -475,6 +481,13 @@ class LedgerAPI(LedgerAPIDeprecated):
ret: PostMeltResponse_deprecated = await self.melt_deprecated(
proofs=proofs, outputs=outputs, invoice=invoice.bolt11
)
elif isinstance(e, ValidationError):
# BEGIN backwards compatibility < 0.16.0
# before 0.16.0, mints return PostMeltResponse_deprecated
ret = PostMeltResponse_deprecated.parse_obj(return_dict)
# END backwards compatibility < 0.16.0
else:
raise e
return PostMeltQuoteResponse(
quote=quote,
amount=0,
@@ -490,9 +503,6 @@ class LedgerAPI(LedgerAPIDeprecated):
expiry=None,
)
# END backwards compatibility < 0.15.0
self.raise_on_error_request(resp)
return_dict = resp.json()
return PostMeltQuoteResponse.parse_obj(return_dict)
@async_set_httpx_client
@async_ensure_mint_loaded