fix refund

This commit is contained in:
9qeklajc
2025-08-06 00:49:34 +02:00
parent 92318f0b00
commit 76ea74e8ce
4 changed files with 940 additions and 928 deletions
+8 -1
View File
@@ -1,5 +1,6 @@
import json
import os
from typing import Mapping, Optional
from fastapi import HTTPException, Response
@@ -153,7 +154,9 @@ def get_max_cost_for_model(model: str) -> int:
return COST_PER_REQUEST
def create_error_response(error_type: str, message: str, status_code: int) -> Response:
def create_error_response(
error_type: str, message: str, status_code: int, token: Optional[str] = None
) -> Response:
"""Create a standardized error response."""
logger.info(
"Creating error response",
@@ -164,6 +167,9 @@ def create_error_response(error_type: str, message: str, status_code: int) -> Re
},
)
response_headers = {}
if token:
response_headers["X-Cashu"] = token
return Response(
content=json.dumps(
{
@@ -176,6 +182,7 @@ def create_error_response(error_type: str, message: str, status_code: int) -> Re
),
status_code=status_code,
media_type="application/json",
headers=dict(response_headers),
)
+1
View File
@@ -125,5 +125,6 @@ async def update_sats_pricing() -> None:
@models_router.get("/v1/models")
@models_router.get("/models")
async def models() -> dict:
return {"data": MODELS}
+19 -15
View File
@@ -8,12 +8,7 @@ from fastapi.responses import Response, StreamingResponse
from ..core import get_logger
from ..wallet import CurrencyUnit, recieve_token, send_token
from .cost_caculation import (
CostData,
CostDataError,
MaxCostData,
calculate_cost,
)
from .cost_caculation import CostData, CostDataError, MaxCostData, calculate_cost
from .helpers import (
UPSTREAM_BASE_URL,
create_error_response,
@@ -68,21 +63,30 @@ async def x_cashu_handler(
"token_already_spent",
"The provided CASHU token has already been spent",
400,
x_cashu_token,
)
elif "invalid token" in error_message.lower():
if "invalid token" in error_message.lower():
return create_error_response(
"invalid_token", "The provided CASHU token is invalid", 400
"invalid_token",
"The provided CASHU token is invalid",
400,
x_cashu_token,
)
elif "mint error" in error_message.lower():
if "mint error" in error_message.lower():
return create_error_response(
"mint_error", f"CASHU mint error: {error_message}", 422
)
else:
# Generic error for other cases
return create_error_response(
"cashu_error", f"CASHU token processing failed: {error_message}", 400
"mint_error", f"CASHU mint error: {error_message}", 422, x_cashu_token
)
# Generic error for other cases
return create_error_response(
"cashu_error",
f"CASHU token processing failed: {error_message}",
400,
x_cashu_token,
)
async def forward_to_upstream(
request: Request, path: str, headers: dict, amount: int, unit: CurrencyUnit
Generated
+912 -912
View File
File diff suppressed because it is too large Load Diff