cloud_terrastodon_credentials 0.35.0

Helpers for getting Azure PAT and stuff for Cloud Terrastodon
use chrono::DateTime;
use chrono::Local;
use cloud_terrastodon_azure_types::AppId;
use cloud_terrastodon_azure_types::AzureTenantId;
use cloud_terrastodon_azure_types::EntraGroupId;
use cloud_terrastodon_azure_types::PrincipalId;
use cloud_terrastodon_azure_types::uuid::Uuid;

#[derive(Debug, serde::Deserialize, serde::Serialize, Clone)]
pub struct AzureClaims {
    #[serde(rename = "aud")]
    pub audience: String,
    #[serde(rename = "iss")]
    pub issuer: String,
    #[serde(rename = "iat")]
    #[serde(
        deserialize_with = "cloud_terrastodon_azure_types::serde_helpers::deserialize_local_date_time_from_epoch"
    )]
    pub issued_at: DateTime<Local>,
    #[serde(rename = "nbf")]
    #[serde(
        deserialize_with = "cloud_terrastodon_azure_types::serde_helpers::deserialize_local_date_time_from_epoch"
    )]
    pub not_before: DateTime<Local>,
    #[serde(rename = "exp")]
    #[serde(
        deserialize_with = "cloud_terrastodon_azure_types::serde_helpers::deserialize_local_date_time_from_epoch"
    )]
    pub expires: DateTime<Local>,
    #[serde(rename = "acr")]
    pub authentication_context_class: String,
    #[serde(rename = "acrs")]
    pub authentication_context_classes: Vec<String>,
    #[serde(rename = "aio")]
    pub aio: String,
    #[serde(rename = "amr")]
    pub authentication_methods: Vec<String>,
    #[serde(rename = "appid")]
    pub app_id: AppId,
    #[serde(rename = "appidacr")]
    pub app_id_acr: String,
    #[serde(rename = "deviceid")]
    pub device_id: Option<Uuid>,
    #[serde(rename = "family_name")]
    pub family_name: String,
    #[serde(rename = "given_name")]
    pub given_name: String,
    #[serde(rename = "groups")]
    pub groups: Vec<EntraGroupId>,
    #[serde(rename = "idtyp")]
    pub identity_type: String,
    #[serde(rename = "ipaddr")]
    pub ip_address: String,
    #[serde(rename = "name")]
    pub name: String,
    #[serde(rename = "oid")]
    pub object_id: PrincipalId,
    #[serde(rename = "puid")]
    pub puid: String,
    #[serde(rename = "pwd_url")]
    pub password_change_url: Option<String>,
    #[serde(rename = "rh")]
    pub refresh_token_hash: String,
    #[serde(rename = "scp")]
    pub scopes: String,
    #[serde(rename = "sid")]
    pub session_id: Uuid,
    #[serde(rename = "sub")]
    pub subject: String,
    #[serde(rename = "tid")]
    pub tenant_id: AzureTenantId,
    #[serde(rename = "unique_name")]
    pub unique_name: String,
    #[serde(rename = "upn")]
    pub user_principal_name: Option<String>,
    #[serde(rename = "uti")]
    pub uti: String,
    #[serde(rename = "ver")]
    pub version: String,
    #[serde(rename = "wids")]
    pub windows_integrated_device_ids: Vec<Uuid>,
    #[serde(rename = "xms_ftd")]
    pub xms_ftd: String,
    #[serde(rename = "xms_idrel")]
    pub xms_idrel: String,
    #[serde(rename = "xms_tcdt")]
    pub xms_tcdt: i64,
}