vn-core 0.11.1

VNDB for Rust
Documentation
mod query;
pub mod request;

pub use query::{FieldSet, JsonQuery, JsonQueryBuilder, JsonQueryFilter, UrlQueryParams};
pub use request::API_BASE_URL;
pub use request::get::Get;
pub use request::post::Post;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString, VariantArray};
use url::Url;

#[non_exhaustive]
#[remain::sorted]
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Display, EnumString, VariantArray)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub enum Endpoint {
  #[serde(rename = "authinfo")]
  #[strum(serialize = "authinfo")]
  AuthInfo,

  #[serde(rename = "character")]
  #[strum(serialize = "character")]
  Character,

  #[serde(rename = "producer")]
  #[strum(serialize = "producer")]
  Producer,

  #[serde(rename = "release")]
  #[strum(serialize = "release")]
  Release,

  #[serde(rename = "rlist")]
  #[strum(serialize = "rlist")]
  Rlist,

  #[serde(rename = "schema")]
  #[strum(serialize = "schema")]
  Schema,

  #[serde(rename = "staff")]
  #[strum(serialize = "staff")]
  Staff,

  #[serde(rename = "stats")]
  #[strum(serialize = "stats")]
  Stats,

  #[serde(rename = "tag")]
  #[strum(serialize = "tag")]
  Tag,

  #[serde(rename = "trait")]
  #[strum(serialize = "trait")]
  Trait,

  #[serde(rename = "ulist")]
  #[strum(serialize = "ulist")]
  Ulist,

  #[serde(rename = "ulist_labels")]
  #[strum(serialize = "ulist_labels")]
  UlistLabels,

  #[serde(rename = "user")]
  #[strum(serialize = "user")]
  User,

  #[serde(rename = "vn")]
  #[strum(serialize = "vn")]
  VisualNovel,
}

impl Endpoint {
  pub fn url(self) -> Url {
    Url::parse(&format!("{API_BASE_URL}/{self}")).unwrap()
  }
}