use longbridge_python_macros::PyEnum;
use pyo3::{PyErr, pyclass};
pyo3::import_exception!(longbridge.openapi, OpenApiException);
pub(crate) struct ErrorNewType(pub(crate) longbridge::Error);
impl std::convert::From for PyErr {
#[inline]
fn from(err: ErrorNewType) -> PyErr {
let err = err.0.into_simple_error();
OpenApiException::new_err((
ErrorKind::from(err.kind()),
err.code(),
err.trace_id().map(ToString::to_string),
err.message().to_string(),
))
}
}
#[pyclass(eq, eq_int, skip_from_py_object)]
#[derive(Debug, PyEnum, Copy, Clone, Hash, Eq, PartialEq)]
#[py(remote = "longbridge::SimpleErrorKind")]
pub(crate) enum ErrorKind {
/// HTTP error
Http,
/// OpenAPI error
OpenApi,
/// Other error
Other,
/// OAuth error
OAuth,
}