avanza_rs/
error.rs

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}