ones-oidc 0.3.2

ONES OpenID Connect client for Rust
Documentation
use serde::Deserialize;
use std::{fs::File, io::Read};
use uuid::Uuid;
use super::errors::DeviceError;
use super::{IssuerUrl, ClientId};

#[derive(Deserialize, Debug)]
pub struct DeviceConfig {
    pub client_id: ClientId,
    pub domain: String,
    pub host: String,
    pub id: Uuid,
    pub initiated_on: String,
    pub is_managed: bool,
    pub key_security: String,
    pub key_type: String,
    pub location: String,
    pub role: String,
    pub title: String,
}

impl DeviceConfig {
    pub fn get_issuer_url(&self) -> Result<IssuerUrl, openidconnect::url::ParseError> {
        IssuerUrl::new(format!("{}/oidc", self.host))
    }
}

pub fn load_device_config(file_path: &str) -> Result<DeviceConfig, DeviceError> {
    let mut file = File::open(file_path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    let config: DeviceConfig = serde_yml::from_str(&contents)?;
    Ok(config)
}