ones_oidc/
device_config.rs

1use serde::Deserialize;
2use std::{fs::File, io::Read};
3use uuid::Uuid;
4use super::errors::DeviceError;
5use super::{IssuerUrl, ClientId};
6
7#[derive(Deserialize, Debug)]
8pub struct DeviceConfig {
9    pub client_id: ClientId,
10    pub domain: String,
11    pub host: String,
12    pub id: Uuid,
13    pub initiated_on: String,
14    pub is_managed: bool,
15    pub key_security: String,
16    pub key_type: String,
17    pub location: String,
18    pub role: String,
19    pub title: String,
20}
21
22impl DeviceConfig {
23    pub fn get_issuer_url(&self) -> Result<IssuerUrl, openidconnect::url::ParseError> {
24        IssuerUrl::new(format!("{}/oidc", self.host))
25    }
26}
27
28pub fn load_device_config(file_path: &str) -> Result<DeviceConfig, DeviceError> {
29    let mut file = File::open(file_path)?;
30    let mut contents = String::new();
31    file.read_to_string(&mut contents)?;
32    let config: DeviceConfig = serde_yml::from_str(&contents)?;
33    Ok(config)
34}