gw2lib-model 2.2.2

Models for gw2lib
Documentation
use std::collections::BTreeSet;

use serde::{Deserialize, Serialize};

use crate::{Endpoint, FixedEndpoint, TimeStamp};
pub mod account;
pub mod characters;
pub mod commerce;

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
#[cfg_attr(test, serde(deny_unknown_fields))]
#[serde(rename_all = "lowercase")]
pub enum Permissions {
    Account,
    Builds,
    Characters,
    Guilds,
    Inventories,
    Progression,
    PvP,
    TradingPost,
    Unlocks,
    Wallet,
}

#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[cfg_attr(test, serde(deny_unknown_fields))]
pub enum TokenType {
    APIKey,
    Subtoken,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(test, serde(deny_unknown_fields))]
pub struct SubtokenDetails {
    pub expires_at: TimeStamp,
    pub issued_at: TimeStamp,
    pub urls: Option<Vec<String>>,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(test, serde(deny_unknown_fields))]
pub struct Tokeninfo {
    pub id: String,
    pub name: String,
    pub permissions: BTreeSet<Permissions>,
    #[serde(rename = "type")]
    pub _type: TokenType,
    #[serde(flatten)]
    details: Option<SubtokenDetails>,
}

impl Endpoint for Tokeninfo {
    const AUTHENTICATED: bool = true;
    const LOCALE: bool = false;
    const URL: &'static str = "v2/tokeninfo";
    const VERSION: &'static str = "2021-01-11T00:00:00.000Z";
}

impl FixedEndpoint for Tokeninfo {}