mangadex_api_schema_rust/v5/
oauth.rs

1use mangadex_api_types::ApiClientProfile;
2use serde::Deserialize;
3
4use super::AuthTokens;
5
6#[derive(Debug, Deserialize, Clone, Default)]
7#[non_exhaustive]
8#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
9#[cfg_attr(feature = "specta", derive(specta::Type))]
10pub struct OAuthTokenResponse {
11    pub access_token: String,
12    pub expires_in: u32,
13    pub refresh_expires_in: u32,
14    pub refresh_token: String,
15    pub token_type: String,
16    #[serde(default)]
17    #[serde(alias = "not-before-policy")]
18    pub not_before_policy: u32,
19    pub session_state: uuid::Uuid,
20    pub scope: String,
21    pub client_type: ApiClientProfile,
22}
23
24impl From<OAuthTokenResponse> for AuthTokens {
25    fn from(value: OAuthTokenResponse) -> Self {
26        Self {
27            session: value.access_token.to_owned(),
28            refresh: value.refresh_token.clone(),
29        }
30    }
31}
32
33#[derive(Debug, Deserialize, Clone, Default)]
34#[serde(rename_all = "camelCase")]
35#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
36#[cfg_attr(feature = "specta", derive(specta::Type))]
37#[non_exhaustive]
38pub struct ClientInfo {
39    pub client_id: String,
40    pub client_secret: String,
41}