1use serde::Deserialize;
2use std::result;
3use thiserror::Error;
4
5#[derive(Debug, Error, Deserialize, Eq, PartialEq)]
6pub enum BadRequestCode {
7 #[error("account quota exceeded")]
8 AccountQuotaExceeded = 200,
9 #[error("provider key missing")]
10 ProviderKeyMissing = 300,
11 #[error("provider key invalid")]
12 ProviderKeyInvalid = 301,
13 #[error("email has no content to send")]
14 EmailNoContent = 400,
15}
16
17#[derive(Debug, Error, Deserialize, Eq, PartialEq)]
18pub enum Error {
19 #[error("unauthorized")]
20 Unauthorized,
21 #[error("forbidden")]
22 Forbidden,
23 #[error("invalid parameter")]
24 InvalidParameter { field: String },
25 #[error("bad request")]
26 BadRequest { code: BadRequestCode, error: String },
27 #[error("unavailable")]
28 Unavailable,
29 #[error("unknown error")]
30 Unknown,
31}
32
33pub type Result<T> = result::Result<T, Error>;