Skip to main content

openauth_plugins/generic_oauth/providers/
line.rs

1//! LINE generic OAuth provider helper.
2
3use 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}