use crate::client::OpenLibraryClient;
use crate::error::Result;
use crate::models::edition::Edition;
use crate::validation::{validate_edition_id, validate_isbn};
impl OpenLibraryClient {
pub async fn get_edition(&self, id: &str) -> Result<Edition> {
validate_edition_id(id)?;
let url = self.base_url.join(&format!("books/{id}.json"))?;
self.get_json(url).await
}
pub async fn get_edition_by_isbn(&self, isbn: &str) -> Result<Edition> {
validate_isbn(isbn)?;
let clean: String = isbn.chars().filter(|c| c.is_ascii_alphanumeric()).collect();
let url = self.base_url.join(&format!("isbn/{clean}.json"))?;
self.get_json(url).await
}
}