artifacts/apis/
mod.rs

1//! API endpoints for Artifacts.
2//!
3//! The version of the OpenAPI document: 5.0
4//!
5//! Generated by: https://openapi-generator.tech
6
7use std::error;
8use std::fmt;
9
10#[derive(Debug, Clone)]
11pub struct ResponseContent<T> {
12    pub status: reqwest::StatusCode,
13    pub content: String,
14    pub entity: Option<T>,
15}
16
17#[derive(Debug)]
18pub enum Error<T> {
19    Reqwest(reqwest::Error),
20    Serde(serde_json::Error),
21    Io(std::io::Error),
22    ResponseError(ResponseContent<T>),
23}
24
25impl<T> fmt::Display for Error<T> {
26    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27        let (module, e) = match self {
28            Error::Reqwest(e) => ("reqwest", e.to_string()),
29            Error::Serde(e) => ("serde", e.to_string()),
30            Error::Io(e) => ("IO", e.to_string()),
31            Error::ResponseError(e) => (
32                "response",
33                format!("status code: {}, content: {}", e.status, e.content),
34            ),
35        };
36        write!(f, "error in {}: {}", module, e)
37    }
38}
39
40impl<T: fmt::Debug> error::Error for Error<T> {
41    fn source(&self) -> Option<&(dyn error::Error + 'static)> {
42        Some(match self {
43            Error::Reqwest(e) => e,
44            Error::Serde(e) => e,
45            Error::Io(e) => e,
46            Error::ResponseError(_) => return None,
47        })
48    }
49}
50
51impl<T> From<reqwest::Error> for Error<T> {
52    fn from(e: reqwest::Error) -> Self {
53        Error::Reqwest(e)
54    }
55}
56
57impl<T> From<serde_json::Error> for Error<T> {
58    fn from(e: serde_json::Error) -> Self {
59        Error::Serde(e)
60    }
61}
62
63impl<T> From<std::io::Error> for Error<T> {
64    fn from(e: std::io::Error) -> Self {
65        Error::Io(e)
66    }
67}
68
69pub fn urlencode<T: AsRef<str>>(s: T) -> String {
70    ::url::form_urlencoded::byte_serialize(s.as_ref().as_bytes()).collect()
71}
72
73pub fn parse_deep_object(prefix: &str, value: &serde_json::Value) -> Vec<(String, String)> {
74    if let serde_json::Value::Object(object) = value {
75        let mut params = vec![];
76
77        for (key, value) in object {
78            match value {
79                serde_json::Value::Object(_) => params.append(&mut parse_deep_object(
80                    &format!("{}[{}]", prefix, key),
81                    value,
82                )),
83                serde_json::Value::Array(array) => {
84                    for (i, value) in array.iter().enumerate() {
85                        params.append(&mut parse_deep_object(
86                            &format!("{}[{}][{}]", prefix, key, i),
87                            value,
88                        ));
89                    }
90                }
91                serde_json::Value::String(s) => {
92                    params.push((format!("{}[{}]", prefix, key), s.clone()))
93                }
94                _ => params.push((format!("{}[{}]", prefix, key), value.to_string())),
95            }
96        }
97
98        return params;
99    }
100
101    unimplemented!("Only objects are supported with style=deepObject")
102}
103
104pub mod accounts_api;
105pub mod achievements_api;
106pub mod badges_api;
107pub mod characters_api;
108pub mod effects_api;
109pub mod events_api;
110pub mod grand_exchange_api;
111pub mod items_api;
112pub mod leaderboard_api;
113pub mod maps_api;
114pub mod monsters_api;
115pub mod my_account_api;
116pub mod my_characters_api;
117pub mod npcs_api;
118pub mod resources_api;
119pub mod server_details_api;
120pub mod tasks_api;
121pub mod token_api;
122
123pub mod configuration;