mtgapi_client/api/
response.rs

1use reqwest::header::HeaderMap;
2
3/// Response returned by the Cards API
4#[allow(dead_code)]
5pub struct ApiResponse<T> {
6    pub content: T,
7    pub page_size: Option<u32>,
8    pub count: Option<u32>,
9    pub total_count: Option<u32>,
10    pub ratelimit_limit: Option<u32>,
11    pub ratelimit_remaining: Option<u32>,
12}
13
14impl<T> ApiResponse<T> {
15    pub(crate) fn new(content: T, headers: HeaderMap) -> ApiResponse<T> {
16        let page_size: Option<u32> = if headers.contains_key("Page-Size") { Some(headers.get("Page-Size").unwrap().to_str().expect("Error parsing Page-Size Header").parse::<u32>().expect("Error converting str to u32")) } else { None };
17        let count: Option<u32> = if headers.contains_key("Count") { Some(headers.get("Count").unwrap().to_str().expect("Error parsing Count Header").parse::<u32>().expect("Error converting str to u32")) } else { None };
18        let total_count: Option<u32> = if headers.contains_key("Total-Count") { Some(headers.get("Total-Count").unwrap().to_str().expect("Error parsing Total-Count Header").parse::<u32>().expect("Error converting str to u32")) } else { None };
19        let ratelimit_limit: Option<u32> = if headers.contains_key("Ratelimit-Limit") { Some(headers.get("Ratelimit-Limit").unwrap().to_str().expect("Error parsing Ratelimit-Limit Header").parse::<u32>().expect("Error converting str to u32")) } else { None };
20        let ratelimit_remaining = if headers.contains_key("Ratelimit-Remaining") { Some(headers.get("Ratelimit-Remaining").unwrap().to_str().expect("Error parsing Ratelimit-Remaining Header").parse::<u32>().expect("Error converting str to u32")) } else { None };
21        ApiResponse {
22            content,
23            page_size,
24            count,
25            total_count,
26            ratelimit_limit,
27            ratelimit_remaining,
28        }
29    }
30}