use serde::Deserialize;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug, Deserialize)]
#[serde(untagged)]
pub enum Error {
#[error("Sift auth error({error}): {description}")]
Client {
error: String,
description: String,
#[serde(default)]
issues: Option<serde_json::Value>,
},
#[error("Sift error ({status}): {error_message}")]
Request {
status: i32,
error_message: String,
},
#[error("Sift server error: {0}")]
Server(String),
}
impl From<serde_json::Error> for Error {
fn from(err: serde_json::Error) -> Self {
Error::Server(err.to_string())
}
}