asoiaf_api/requester/
mod.rs1use self::pagination::Pagination;
2
3pub mod filter;
4pub mod pagination;
5pub mod request;
6
7pub(crate) trait ToUrl {
10 fn to_url(&self) -> String;
11}
12
13pub trait ToRequest {
14 fn to_request(&self) -> String;
15 fn update_pagination(&mut self, pagination: Pagination);
16 fn next_page(&mut self);
17}
18
19pub(crate) async fn get(request: &impl ToRequest) -> Result<String, reqwest::Error> {
27 let request_string = request.to_request();
28
29 let client = reqwest::Client::new();
30 let response = client
31 .get(format!(
32 "https://www.anapioficeandfire.com/api/{}",
33 request_string
34 ))
35 .send()
36 .await?;
37
38 let response = response.error_for_status()?;
39
40 response.text().await
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46 use crate::requester::request::BookRequest;
47
48 #[tokio::test]
49 async fn test_get() {
50 let request = BookRequest::default();
51 let response = get(&request).await;
52 assert!(response.is_ok());
53 assert!(!response.unwrap().is_empty());
54 }
55}