ones_oidc/
device_config.rs1use 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}