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}
19
20#[derive(Debug, TError)]
21pub enum ServiceStartError {
22	#[error("unknown error")]
23	Unknown(Box<dyn Error + Send + Sync>),
24	#[error("can not find the event sender")]
25	NotInjectedEventSender,
26	#[error("can not find the api receiver")]
27	NotInjectedAPIReceiver,
28	#[error("can not find event sender and api receiver")]
29	NotInjected,
30	#[error("can not create tcp listener")]
31	TcpListenerError(#[from] tokio::io::Error),
32	#[cfg(feature = "websocket")]
33	#[error("can not create websocket connection")]
34	WebSocketConnectError(#[from] tokio_tungstenite::tungstenite::Error),
35}