ones-oidc 0.2.6

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

#[derive(Deserialize, Debug)]
pub struct DeviceConfig {
    pub client_id: Uuid,
    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) -> String {
        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)
}