rustauth_plugins/generic_oauth/providers/
patreon.rs1use 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}