use crate::client::OpenLibraryClient;
use crate::error::Result;
use crate::models::common::ReadingShelf;
use crate::models::reading_log::ReadingLog;
use crate::validation::validate_username;
impl OpenLibraryClient {
async fn get_reading_log_shelf(
&self,
username: &str,
shelf: ReadingShelf,
) -> Result<ReadingLog> {
validate_username(username)?;
let url = self
.base_url
.join(&format!("people/{username}/books/{}.json", shelf.as_str()))?;
self.get_json(url).await
}
pub async fn get_want_to_read(&self, username: &str) -> Result<ReadingLog> {
self.get_reading_log_shelf(username, ReadingShelf::WantToRead).await
}
pub async fn get_currently_reading(&self, username: &str) -> Result<ReadingLog> {
self.get_reading_log_shelf(username, ReadingShelf::CurrentlyReading).await
}
pub async fn get_already_read(&self, username: &str) -> Result<ReadingLog> {
self.get_reading_log_shelf(username, ReadingShelf::AlreadyRead).await
}
}