turbopuffer_client/
error.rs1use serde_json::Value;
2use thiserror::Error;
3
4#[derive(Clone, Debug, Error)]
5pub enum Error {
6 #[error("Request Error: {0}")]
7 RequestError(String),
8
9 #[error("Recieved non JSON Response")]
10 NonJsonResponse(String),
11
12 #[error("Invalid Response")]
16 InvalidResponse(Value),
17}
18
19impl From<reqwest::Error> for Error {
20 fn from(value: reqwest::Error) -> Self {
21 Error::RequestError(value.to_string())
22 }
23}
24
25pub(crate) fn request_error(err: reqwest::Error) -> Error {
26 tracing::error!("[request_error] {}", err);
27 Error::RequestError(err.to_string())
28}
29
30pub(crate) fn non_json(err: serde_json::Error, body: String) -> Error {
31 tracing::error!("[non_json] {}", err);
32 tracing::error!("[non_json(body)] {}", body);
33 Error::NonJsonResponse(body)
34}
35
36pub(crate) fn invalid_response(
37 err: serde_json::Error,
38 fallback: serde_json::Value,
39) -> Error {
40 tracing::error!("[invalid_response] {}", err);
41 tracing::error!("[invalid_response(fallback)] {}", fallback);
42 Error::InvalidResponse(fallback)
43}