pub struct Client { /* private fields */ }
Expand description
The client for the one api to rule them all. It is used to make requests to the API.
§Examples
use lotr_api::Client;
#[tokio::main]
async fn main() {
let client = Client::new("your_token".to_string());
let books = client.get_books().await.unwrap();
// ...
}
Implementations§
Source§impl Client
impl Client
Sourcepub fn new(token: String) -> Self
pub fn new(token: String) -> Self
Creates a new client with the given token. The token is used to authenticate the requests. You can get a token from https://the-one-api.dev/.
Sourcepub async fn get_quotes(&self) -> Result<Vec<Quote>, Error>
pub async fn get_quotes(&self) -> Result<Vec<Quote>, Error>
Returns all the quotes. Due to the API default limit of 1000, this function has to set a hardcoded limit. Currently there are 2384 quotes on the api, so we call it with a limit of 2400 to have a little bit of buffer in case the number of quotes increases
pub async fn get_characters(&self) -> Result<Vec<Character>, Error>
Sourcepub async fn get_book_by_id(&self, id: &str) -> Result<Book, Error>
pub async fn get_book_by_id(&self, id: &str) -> Result<Book, Error>
Returns the book with the given id.
§Errors
If there is no book with the given id, an error is returned.
Sourcepub async fn get_movie_by_id(&self, id: &str) -> Result<Movie, Error>
pub async fn get_movie_by_id(&self, id: &str) -> Result<Movie, Error>
Returns the movie with the given id.
§Errors
If there is no movie with the given id, an error is returned.
Sourcepub async fn get_quote_by_id(&self, id: &str) -> Result<Quote, Error>
pub async fn get_quote_by_id(&self, id: &str) -> Result<Quote, Error>
Returns the quote with the given id.
§Errors
If there is no quote with the given id, an error is returned.
Sourcepub async fn get_character_by_id(&self, id: &str) -> Result<Character, Error>
pub async fn get_character_by_id(&self, id: &str) -> Result<Character, Error>
Returns the character with the given id.
§Errors
If there is no character with the given id, an error is returned.
Sourcepub async fn get_chapter_by_id(&self, id: &str) -> Result<Chapter, Error>
pub async fn get_chapter_by_id(&self, id: &str) -> Result<Chapter, Error>
Returns the chapter with the given id.
§Errors
If there is no chapter with the given id, an error is returned.
Sourcepub async fn get_chapters_from_book(
&self,
book_id: &str,
) -> Result<Vec<Chapter>, Error>
pub async fn get_chapters_from_book( &self, book_id: &str, ) -> Result<Vec<Chapter>, Error>
Returns the chapters of the given book.
Sourcepub async fn get_quotes_from_movie(
&self,
movie_id: &str,
) -> Result<Vec<Quote>, Error>
pub async fn get_quotes_from_movie( &self, movie_id: &str, ) -> Result<Vec<Quote>, Error>
Returns the quotes of the given book.
Sourcepub async fn get_quotes_from_character(
&self,
character_id: &str,
) -> Result<Vec<Quote>, Error>
pub async fn get_quotes_from_character( &self, character_id: &str, ) -> Result<Vec<Quote>, Error>
Returns the quotes of the given book.
Sourcepub async fn get_from_url<T>(&self, url: &str) -> Result<Vec<T>, Error>where
T: DeserializeOwned,
pub async fn get_from_url<T>(&self, url: &str) -> Result<Vec<T>, Error>where
T: DeserializeOwned,
returns the result of the given request. You must specify the type of the result, if not there is no way of deserialize the result.
§Examples
use lotr_api::{Client, ItemType};
use lotr_api::Book;
#[tokio::main]
async fn main() {
let client = Client::new("your_token".to_string());
let url= "book?page=2&limit=2";
let books = client.get_from_url::<Book>(url).await.unwrap();
// ...
}
Sourcepub async fn get(&self, request: Request) -> Result<Vec<Item>, Error>
pub async fn get(&self, request: Request) -> Result<Vec<Item>, Error>
Returns the items of the given custom request.
§Examples
use lotr_api::{
attribute::{Attribute, BookAttribute},
filter::{Filter, Operator},
request::{
sort::{Sort, SortOrder},
RequestBuilder},
Client, Item, ItemType};
#[tokio::main]
async fn main() {
let client = Client::new("your_token".to_string());
let request = RequestBuilder::new(ItemType::Book)
.filter(Filter::Match(
Attribute::Book(BookAttribute::Name),
Operator::Eq,
vec!["The Fellowship of the Ring".to_string()])
)
.sort(Sort::new(SortOrder::Ascending, Attribute::Book(BookAttribute::Name)))
.build()
.expect("Failed to build request");
let books = client.get(request).await.unwrap();
// ...
}