use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct OAuthConfig {
pub authorize_url: String,
pub token_url: String,
#[serde(default)]
pub device_url: Option<String>,
pub client_id: String,
#[serde(default)]
pub scope: Option<String>,
#[serde(default)]
pub beta_headers: Vec<(String, String)>,
#[serde(default)]
pub system_preamble: Option<String>,
#[serde(default)]
pub redirect: RedirectSpec,
#[serde(default)]
pub authorize_params: Vec<(String, String)>,
#[serde(default)]
pub account_header: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RedirectSpec {
#[serde(default = "default_host")]
pub host: String,
#[serde(default)]
pub port: Option<u16>,
#[serde(default = "default_path")]
pub path: String,
}
fn default_host() -> String {
"127.0.0.1".to_owned()
}
fn default_path() -> String {
"/callback".to_owned()
}
impl Default for RedirectSpec {
fn default() -> Self {
RedirectSpec {
host: default_host(),
port: None,
path: default_path(),
}
}
}