deepr-sso-oidc 0.1.5

deepr SDK for SSO using OIDC
Documentation
use crate::constant::REGIONS;
use anyhow::Result;
use inquire::{Select, Text};
use serde::{Deserialize, Serialize};
use std::fmt;

#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Config {
    pub start_url: String,
    pub region: String,
}

impl Config {
    pub fn new() -> Result<Self> {
        let sso_start_url: String = Text::new("SSO start-url:").prompt()?;
        let regions: Vec<String> = REGIONS.iter().map(|x| x.to_string()).collect();
        let sso_region: String = Select::new("SSO region:", regions).prompt()?;

        Ok(Self {
            start_url: sso_start_url,
            region: sso_region,
        })
    }
}

impl fmt::Display for Config {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(
            f,
            "SSO Start URL: {}\nSSO Region: {}",
            self.start_url, self.region
        )
    }
}