1use std::{fmt, num::ParseIntError};
2
3#[derive(Debug)]
4pub enum Error {
5 FundOrderError(String, surf::Error),
6 StockOrderError(String),
7 AccountNotFound(String),
8 AccountIdParseError(String, ParseIntError),
9 JsonError(serde_json::Error),
10 SurfError(surf::Error),
11 HttpError(String, String),
12 IOError(std::io::Error),
13 UrlParseError(url::ParseError),
14 CreateHTTPClientError(String),
15 SecurityTokenError(String)
16}
17
18impl std::error::Error for Error {}
19
20impl fmt::Display for Error {
21 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
22 match self {
23 Error::FundOrderError(str, err) => write!(f, "{} {}", str, err),
24 Error::StockOrderError(str) => write!(f, "{}", str),
25 Error::AccountNotFound(str) => write!(f, "{}", str),
26 Error::AccountIdParseError(str, err) => write!(f, "{}: {}", str, err),
27 Error::JsonError(err) => write!(f, "{}", err),
28 Error::SurfError(err) => write!(f, "{}", err),
29 Error::HttpError(status, url) => write!(f, "{} {}", status, url),
30 Error::IOError(err) => write!(f, "{}", err),
31 Error::UrlParseError(err) => write!(f, "{}", err),
32 Error::CreateHTTPClientError(err) => write!(f, "{}", err),
33 Error::SecurityTokenError(str) => write!(f, "{}", str),
34 }
35 }
36}
37
38impl From<url::ParseError> for Error {
39 fn from(err: url::ParseError) -> Error {
40 Error::UrlParseError(err)
41 }
42}
43
44impl From<serde_json::Error> for Error {
45 fn from(err: serde_json::Error) -> Error {
46 Error::JsonError(err)
47 }
48}
49
50impl From<surf::Error> for Error {
51 fn from(err: surf::Error) -> Error {
52 Error::SurfError(err)
53 }
54}
55
56impl From<std::io::Error> for Error {
57 fn from(err: std::io::Error) -> Error {
58 Error::IOError(err)
59 }
60}