commit_bridge/trigger/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum WorkflowTriggerError {
8 #[error("Authentication error: {0}")]
10 Auth(#[from] AuthError),
11
12 #[error("Database error: {0}")]
14 Database(#[from] sqlx::Error),
15
16 #[error("Repository error: {0}")]
18 Repository(#[from] crate::repository::RepositoryError),
19
20 #[error(transparent)]
22 Api(#[from] RequestError),
23}
24
25impl From<reqwest::Error> for WorkflowTriggerError {
26 fn from(e: reqwest::Error) -> Self {
27 Self::Api(RequestError::Request(e))
28 }
29}
30
31#[derive(Debug, Error)]
33pub enum AuthError {
34 #[error("Could not read PEM file: {0}")]
36 PemFile(#[from] std::io::Error),
37
38 #[error("System time: {0}")]
40 Time(#[from] std::time::SystemTimeError),
41
42 #[error("JWT generation failed: {0}")]
44 Jwt(#[from] jsonwebtoken::errors::Error),
45
46 #[error(transparent)]
48 Server(#[from] RequestError),
49}
50
51impl From<reqwest::Error> for AuthError {
52 fn from(e: reqwest::Error) -> Self {
53 Self::Server(RequestError::Request(e))
54 }
55}
56
57#[derive(Debug, Error)]
59pub enum RequestError {
60 #[error("HTTP request failed: {0}")]
62 Request(#[from] reqwest::Error),
63
64 #[error("Unexpected HTTP response ({status}): {text}")]
66 Response {
67 status: reqwest::StatusCode,
69 text: String,
71 },
72}