Skip to main content

rustauth_plugins/generic_oauth/providers/
patreon.rs

1//! Patreon generic OAuth provider helper.
2
3use crate::generic_oauth::GenericOAuthConfig;
4use std::sync::Arc;
5
6pub const PROVIDER_ID: &str = "patreon";
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct PatreonOptions {
10    pub base: super::BaseOAuthProviderOptions,
11}
12
13pub fn patreon(options: PatreonOptions) -> GenericOAuthConfig {
14    let mut config = GenericOAuthConfig::new(
15        PROVIDER_ID,
16        "",
17        None::<String>,
18        "https://www.patreon.com/oauth2/authorize",
19        "https://www.patreon.com/api/oauth2/token",
20    );
21    config.user_info_url = Some(
22        "https://www.patreon.com/api/oauth2/v2/identity?fields[user]=email,full_name,image_url,is_email_verified"
23            .to_owned(),
24    );
25    super::apply_base_options(
26        &mut config,
27        options.base,
28        vec!["identity[email]".to_owned()],
29    );
30    config.get_user_info = Some(Arc::new(|tokens| {
31        Box::pin(super::user_info::patreon(tokens))
32    }));
33    config
34}