open_library_api_rs/api/
books.rs1use std::collections::HashMap;
3
4use crate::client::OpenLibraryClient;
5use crate::error::Result;
6use crate::models::common::BooksJsCmd;
7use crate::models::query::BooksApiEntry;
8use crate::validation::validate_bibkeys;
9
10impl OpenLibraryClient {
11 pub async fn get_books(
18 &self,
19 bibkeys: &[String],
20 jscmd: BooksJsCmd,
21 ) -> Result<HashMap<String, BooksApiEntry>> {
22 validate_bibkeys(bibkeys)?;
23 let joined = bibkeys.join("|");
24 let mut url = self.base_url.join("api/books")?;
25 url.query_pairs_mut()
26 .append_pair("bibkeys", &joined)
27 .append_pair("jscmd", jscmd.as_str())
28 .append_pair("format", "json");
29 self.get_json(url).await
30 }
31}