Procházet zdrojové kódy

fix: mint error codes

thesimplekid před 3 měsíci
rodič
revize
9de3314817
1 změnil soubory, kde provedl 35 přidání a 6 odebrání
  1. 35 6
      crates/cdk-axum/src/router_handlers.rs

+ 35 - 6
crates/cdk-axum/src/router_handlers.rs

@@ -3,7 +3,7 @@ use axum::extract::ws::WebSocketUpgrade;
 use axum::extract::{Json, Path, State};
 use axum::http::StatusCode;
 use axum::response::{IntoResponse, Response};
-use cdk::error::ErrorResponse;
+use cdk::error::{ErrorCode, ErrorResponse};
 #[cfg(feature = "auth")]
 use cdk::nuts::nut21::{Method, ProtectedEndpoint, RoutePath};
 use cdk::nuts::{
@@ -544,9 +544,38 @@ pub(crate) fn into_response<T>(error: T) -> Response
 where
     T: Into<ErrorResponse>,
 {
-    (
-        StatusCode::INTERNAL_SERVER_ERROR,
-        Json::<ErrorResponse>(error.into()),
-    )
-        .into_response()
+    let err_response: ErrorResponse = error.into();
+    let status_code = match err_response.code {
+        // Client errors (400 Bad Request)
+        ErrorCode::TokenAlreadySpent
+        | ErrorCode::TokenPending
+        | ErrorCode::QuoteNotPaid
+        | ErrorCode::QuoteExpired
+        | ErrorCode::QuotePending
+        | ErrorCode::KeysetNotFound
+        | ErrorCode::KeysetInactive
+        | ErrorCode::BlindedMessageAlreadySigned
+        | ErrorCode::UnsupportedUnit
+        | ErrorCode::TokensAlreadyIssued
+        | ErrorCode::MintingDisabled
+        | ErrorCode::InvoiceAlreadyPaid
+        | ErrorCode::TokenNotVerified
+        | ErrorCode::TransactionUnbalanced
+        | ErrorCode::AmountOutofLimitRange
+        | ErrorCode::WitnessMissingOrInvalid
+        | ErrorCode::DuplicateInputs
+        | ErrorCode::DuplicateOutputs
+        | ErrorCode::MultipleUnits
+        | ErrorCode::UnitMismatch
+        | ErrorCode::ClearAuthRequired
+        | ErrorCode::BlindAuthRequired => StatusCode::BAD_REQUEST,
+
+        // Auth failures (401 Unauthorized)
+        ErrorCode::ClearAuthFailed | ErrorCode::BlindAuthFailed => StatusCode::UNAUTHORIZED,
+
+        // Lightning/payment errors and unknown errors (500 Internal Server Error)
+        ErrorCode::LightningError | ErrorCode::Unknown(_) => StatusCode::INTERNAL_SERVER_ERROR,
+    };
+
+    (status_code, Json(err_response)).into_response()
 }