diff --git a/crates/common/src/errors.rs b/crates/common/src/errors.rs new file mode 100644 index 00000000..fd634915 --- /dev/null +++ b/crates/common/src/errors.rs @@ -0,0 +1,39 @@ +use proxy_wasm::types::Status; + +use crate::ratelimit; + +#[derive(thiserror::Error, Debug)] +pub enum ClientError { + #[error("Error dispatching HTTP call to `{upstream_name}/{path}`, error: {internal_status:?}")] + DispatchError { + upstream_name: String, + path: String, + internal_status: Status, + }, +} + +#[derive(thiserror::Error, Debug)] +pub enum ServerError { + #[error(transparent)] + HttpDispatch(ClientError), + #[error(transparent)] + Deserialization(serde_json::Error), + #[error(transparent)] + Serialization(serde_json::Error), + #[error("{0}")] + LogicError(String), + #[error("upstream error response authority={authority}, path={path}, status={status}")] + Upstream { + authority: String, + path: String, + status: String, + }, + #[error("jailbreak detected: {0}")] + Jailbreak(String), + #[error("{why}")] + NoMessagesFound { why: String }, + #[error(transparent)] + ExceededRatelimit(ratelimit::Error), + #[error("{why}")] + BadRequest { why: String }, +}