Skip to main content

onebot_api/
error.rs

1use crate::communication::utils::APIRequest;
2use std::error::Error;
3use thiserror::Error as TError;
4
5pub type APIResult<T> = Result<T, APIRequestError>;
6pub type ServiceStartResult<T> = Result<T, ServiceStartError>;
7
8#[derive(Debug, TError)]
9pub enum APIRequestError {
10	#[error("there is no result returned in time")]
11	Timeout,
12	#[error("the request failed with code: {:?}", code)]
13	HttpError { code: i32 },
14	#[error("deserialize failed")]
15	DeserializeError(#[from] serde_json::Error),
16	#[error("send request failed")]
17	SendError(#[from] flume::SendError<APIRequest>),
18	#[error("missing parameters")]
19	MissingParameters,
20}
21
22#[derive(Debug, TError)]
23pub enum ServiceStartError {
24	#[error("unknown error")]
25	Unknown(Box<dyn Error + Send + Sync>),
26	#[error("can not find the event sender")]
27	NotInjectedEventSender,
28	#[error("can not find the api receiver")]
29	NotInjectedAPIReceiver,
30	#[error("can not find event sender and api receiver")]
31	NotInjected,
32	#[error("can not create tcp listener")]
33	TcpListenerError(#[from] tokio::io::Error),
34	#[cfg(feature = "websocket")]
35	#[error("can not create websocket connection")]
36	WebSocketConnectError(#[from] tokio_tungstenite::tungstenite::Error),
37	#[error("task is running")]
38	TaskIsRunning,
39	#[error("task is not running")]
40	TaskIsNotRunning,
41}
42
43#[derive(Debug, TError)]
44pub enum ServiceRuntimeError {
45	#[error("unknown error")]
46	Unknown(Box<dyn Error + Send + Sync>),
47}