12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- use axum::{
- http::StatusCode,
- response::{IntoResponse, Response},
- Json,
- };
- use serde_json::json;
- use thiserror::Error;
- #[derive(Error, Debug)]
- pub enum AppError {
- #[error("Invalid Registration")]
- InvalidRegistration,
- #[error("Invalid Client Public Key")]
- InvalidClientPublicKey,
- #[error("Unauthorized")]
- Unauthorized,
- #[error("Request not found or already completed")]
- RequestNotFound,
- #[error("Internal server error")]
- InternalServerError,
- #[error("Invalid request: {0}")]
- BadRequest(String),
- #[error("Client certificate error")]
- ClientCertError,
- #[error("Root certificate error")]
- RootCertError,
- #[error("Invalid method")]
- InvalidMethod,
- #[error("Invalid URL")]
- InvalidUrl,
- #[error("Invalid headers")]
- InvalidHeaders,
- #[error("Request run error: {0}")]
- RequestRunError(String),
- #[error("Request cancelled")]
- RequestCancelled,
- #[error("Failed to clear registrations")]
- RegistrationClearError,
- #[error("Failed to insert registrations")]
- RegistrationInsertError,
- #[error("Failed to save registrations to store")]
- RegistrationSaveError,
- #[error("Store error: {0}")]
- TauriPluginStore(#[from] tauri_plugin_store::Error),
- #[error("Relay error: {0}")]
- Relay(#[from] hoppscotch_relay::RelayError),
- }
- impl IntoResponse for AppError {
- fn into_response(self) -> Response {
- let (status, error_message) = match self {
- AppError::InvalidRegistration => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::InvalidClientPublicKey => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::Unauthorized => (StatusCode::UNAUTHORIZED, self.to_string()),
- AppError::RequestNotFound => (StatusCode::NOT_FOUND, self.to_string()),
- AppError::InternalServerError => (StatusCode::INTERNAL_SERVER_ERROR, self.to_string()),
- AppError::BadRequest(msg) => (StatusCode::BAD_REQUEST, msg),
- AppError::ClientCertError => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::RootCertError => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::InvalidMethod => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::InvalidUrl => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::InvalidHeaders => (StatusCode::BAD_REQUEST, self.to_string()),
- AppError::RequestRunError(msg) => (StatusCode::INTERNAL_SERVER_ERROR, msg),
- AppError::RequestCancelled => (StatusCode::BAD_REQUEST, self.to_string()),
- _ => (
- StatusCode::INTERNAL_SERVER_ERROR,
- "Internal Server Error".to_string(),
- ),
- };
- let body = Json(json!({
- "error": error_message,
- }));
- (status, body).into_response()
- }
- }
- pub type AppResult<T> = std::result::Result<T, AppError>;
|