mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-08-09 02:54:37 +00:00
feat: enhance logging in payment processing modules
- Add comprehensive logging for cost calculations and pricing - Log token validation with secure previews (first 20 chars) - Add detailed logging for X-Cashu token processing flow - Implement specific error categorization for CASHU errors - Add logging for streaming response handling and usage extraction - Log refund processing with retry attempts - Track header modifications in upstream requests - Include request IDs in error responses
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import json
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import HTTPException, Response
|
||||
from fastapi.requests import Request
|
||||
|
||||
from ..core import get_logger
|
||||
from ..wallet import deserialize_token_from_string
|
||||
@@ -157,21 +157,13 @@ def get_max_cost_for_model(model: str) -> int:
|
||||
|
||||
|
||||
def create_error_response(
|
||||
error_type: str, message: str, status_code: int, token: Optional[str] = None
|
||||
error_type: str,
|
||||
message: str,
|
||||
status_code: int,
|
||||
request: Request,
|
||||
token: str | None = None,
|
||||
) -> Response:
|
||||
"""Create a standardized error response."""
|
||||
logger.info(
|
||||
"Creating error response",
|
||||
extra={
|
||||
"error_type": error_type,
|
||||
"error_message": message,
|
||||
"status_code": status_code,
|
||||
},
|
||||
)
|
||||
|
||||
response_headers = {}
|
||||
if token:
|
||||
response_headers["X-Cashu"] = token
|
||||
return Response(
|
||||
content=json.dumps(
|
||||
{
|
||||
@@ -179,12 +171,13 @@ def create_error_response(
|
||||
"message": message,
|
||||
"type": error_type,
|
||||
"code": status_code,
|
||||
}
|
||||
},
|
||||
"request_id": getattr(request.state, "request_id", "unknown"),
|
||||
}
|
||||
),
|
||||
status_code=status_code,
|
||||
media_type="application/json",
|
||||
headers=dict(response_headers),
|
||||
headers={"X-Cashu": token} if token else {},
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -63,7 +63,8 @@ async def x_cashu_handler(
|
||||
"token_already_spent",
|
||||
"The provided CASHU token has already been spent",
|
||||
400,
|
||||
x_cashu_token,
|
||||
request=request,
|
||||
token=x_cashu_token,
|
||||
)
|
||||
|
||||
if "invalid token" in error_message.lower():
|
||||
@@ -71,12 +72,17 @@ async def x_cashu_handler(
|
||||
"invalid_token",
|
||||
"The provided CASHU token is invalid",
|
||||
400,
|
||||
x_cashu_token,
|
||||
request=request,
|
||||
token=x_cashu_token,
|
||||
)
|
||||
|
||||
if "mint error" in error_message.lower():
|
||||
return create_error_response(
|
||||
"mint_error", f"CASHU mint error: {error_message}", 422, x_cashu_token
|
||||
"mint_error",
|
||||
f"CASHU mint error: {error_message}",
|
||||
422,
|
||||
request=request,
|
||||
token=x_cashu_token,
|
||||
)
|
||||
|
||||
# Generic error for other cases
|
||||
@@ -84,7 +90,8 @@ async def x_cashu_handler(
|
||||
"cashu_error",
|
||||
f"CASHU token processing failed: {error_message}",
|
||||
400,
|
||||
x_cashu_token,
|
||||
request=request,
|
||||
token=x_cashu_token,
|
||||
)
|
||||
|
||||
|
||||
@@ -217,7 +224,10 @@ async def forward_to_upstream(
|
||||
},
|
||||
)
|
||||
return create_error_response(
|
||||
"internal_error", "An unexpected server error occurred", 500
|
||||
"internal_error",
|
||||
"An unexpected server error occurred",
|
||||
500,
|
||||
request=request,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user