openauth_plugins/generic_oauth/providers/
line.rs1use crate::generic_oauth::GenericOAuthConfig;
4use std::sync::Arc;
5
6pub const PROVIDER_ID: &str = "line";
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct LineOptions {
10 pub base: super::BaseOAuthProviderOptions,
11 pub provider_id: Option<String>,
12}
13
14pub fn line(options: LineOptions) -> GenericOAuthConfig {
15 let mut config = GenericOAuthConfig::new(
16 options
17 .provider_id
18 .unwrap_or_else(|| PROVIDER_ID.to_owned()),
19 "",
20 None::<String>,
21 "https://access.line.me/oauth2/v2.1/authorize",
22 "https://api.line.me/oauth2/v2.1/token",
23 );
24 config.user_info_url = Some("https://api.line.me/oauth2/v2.1/userinfo".to_owned());
25 super::apply_base_options(
26 &mut config,
27 options.base,
28 vec![
29 "openid".to_owned(),
30 "profile".to_owned(),
31 "email".to_owned(),
32 ],
33 );
34 config.get_user_info = Some(Arc::new(|tokens| Box::pin(super::user_info::line(tokens))));
35 config
36}