openstreetmap_api/
errors.rs

1use std::error;
2use std::fmt;
3
4#[derive(Debug)]
5pub enum OpenstreetmapError {
6    /// error associated with http request
7    Http(reqwest::Error),
8
9    /// error caused by invalid URLs
10    Url(url::ParseError),
11
12    /// error associated with parsing or serializing
13    Serde(quick_xml::de::DeError),
14
15    /// error associated with parsing or serializing query strings
16    UrlEncode(serde_urlencoded::ser::Error),
17
18    /// client request errors
19    Client {
20        code: reqwest::StatusCode,
21        error: String,
22    },
23
24    /// invalid credentials
25    Unauthorized,
26
27    /// HTTP method is not allowed
28    MethodNotAllowed,
29
30    /// Page not found
31    NotFound,
32
33    /// Missing credentials for operation that requires authentication
34    CredentialsNeeded,
35}
36
37impl error::Error for OpenstreetmapError {}
38
39impl fmt::Display for OpenstreetmapError {
40    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41        write!(f, "SuperError is here!")
42    }
43}
44
45impl From<reqwest::Error> for OpenstreetmapError {
46    fn from(error: reqwest::Error) -> Self {
47        OpenstreetmapError::Http(error)
48    }
49}
50
51impl From<url::ParseError> for OpenstreetmapError {
52    fn from(error: url::ParseError) -> Self {
53        OpenstreetmapError::Url(error)
54    }
55}
56
57impl From<quick_xml::de::DeError> for OpenstreetmapError {
58    fn from(error: quick_xml::de::DeError) -> Self {
59        OpenstreetmapError::Serde(error)
60    }
61}
62
63impl From<serde_urlencoded::ser::Error> for OpenstreetmapError {
64    fn from(error: serde_urlencoded::ser::Error) -> Self {
65        OpenstreetmapError::UrlEncode(error)
66    }
67}