jmserver/src/error.rs

55 lines
1.4 KiB
Rust
Raw Normal View History

2022-07-19 21:11:13 +02:00
use std::string::FromUtf8Error;
use axum::extract::{multipart::MultipartError, rejection::QueryRejection};
2022-01-17 21:58:33 +01:00
use hyper::StatusCode;
2022-01-04 20:06:57 +01:00
use thiserror::Error;
2022-01-17 21:58:33 +01:00
use url::ParseError;
2022-01-04 20:06:57 +01:00
#[derive(Error, Debug)]
pub enum JMError {
#[error("File read error: {0}")]
Read(#[from] std::io::Error),
#[error("Deserialize error: {0}")]
Deserialize(#[from] toml::de::Error),
#[error("Database connection error: {0}")]
Database(#[from] sqlx::Error),
#[error("Axum error: {0}")]
Axum(#[from] hyper::Error),
2022-01-16 22:43:45 +01:00
#[error("Reqwest error: {0}")]
Reqwest(#[from] reqwest::Error),
2022-01-05 23:46:19 +01:00
}
2022-01-17 21:58:33 +01:00
#[derive(Error, Debug)]
pub enum ServiceError {
#[error("Reqwest error: {0}")]
Reqwest(#[from] reqwest::Error),
#[error("URL parse error: {0}")]
Url(#[from] ParseError),
#[error("Invalid response code: {0}")]
InvalidResponse(StatusCode),
}
2022-07-19 21:11:13 +02:00
#[derive(Error, Debug)]
pub enum APIError {
#[error("SQL error: {0}")]
Sql(#[from] sqlx::Error),
#[error("Multipart form error: {0}")]
Multipart(#[from] MultipartError),
#[error("{0}")]
BadRequest(String),
#[error("{0}")]
Unauthorized(String),
#[error("{0}")]
Forbidden(String),
#[error("{0}")]
NotFound(String),
#[error("{0}")]
Internal(String),
#[error("JMService error: {0}")]
Service(#[from] ServiceError),
#[error("Query rejection: {0}")]
Query(#[from] QueryRejection),
#[error("Decode error: {0}")]
Decode(#[from] FromUtf8Error),
}