open-library-api-rs 0.1.0

Async Rust client for the Open Library API
Documentation
// v0.0.1
use serde::{Deserialize, Serialize};

use super::common::{Key, Link, TextOrValue};
use super::work::DateValue;

/// An author entity.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Author {
    pub key: String,
    #[serde(default)]
    pub name: Option<String>,
    #[serde(default)]
    pub personal_name: Option<String>,
    #[serde(default)]
    pub alternate_names: Option<Vec<String>>,
    #[serde(default)]
    pub birth_date: Option<String>,
    #[serde(default)]
    pub death_date: Option<String>,
    #[serde(default)]
    pub bio: Option<TextOrValue>,
    #[serde(default)]
    pub location: Option<String>,
    #[serde(default)]
    pub photos: Option<Vec<i64>>,
    #[serde(default)]
    pub links: Option<Vec<Link>>,
    #[serde(default)]
    pub wikipedia: Option<String>,
    #[serde(default)]
    pub created: Option<DateValue>,
    #[serde(default)]
    pub last_modified: Option<DateValue>,
    #[serde(default)]
    pub latest_revision: Option<i64>,
    #[serde(default)]
    pub revision: Option<i64>,
}

/// A summary of an author as returned inside a search result.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthorSummary {
    pub key: String,
    #[serde(default)]
    pub name: Option<String>,
}

/// Response from `GET /authors/{id}/works.json`.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthorWorks {
    #[serde(default)]
    pub entries: Vec<AuthorWorkEntry>,
    #[serde(default)]
    pub links: Option<super::common::PaginationLinks>,
}

/// One work returned inside the author-works list.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthorWorkEntry {
    pub key: String,
    #[serde(default)]
    pub title: Option<String>,
    #[serde(default)]
    pub covers: Option<Vec<i64>>,
    #[serde(default)]
    pub authors: Option<Vec<Key>>,
    #[serde(default)]
    pub first_publish_date: Option<String>,
    #[serde(default)]
    pub subjects: Option<Vec<String>>,
}