aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index 79c3842..891cde2 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -17,7 +17,7 @@ use rocket::{
shield::{self, Shield},
Request, Response,
};
-use state::{Config, Logic};
+use state::{AdInfo, Config, Logic};
use std::{io::Cursor, net::IpAddr};
#[rocket::main]
@@ -30,7 +30,38 @@ async fn main() {
let config = rocket::tokio::fs::read_to_string(config)
.await
.expect("could not read config");
- let config: Config = serde_yaml::from_str(config.as_str()).expect("config invalid");
+ let mut config: Config = toml::from_str(config.as_str()).expect("config invalid");
+
+ for entry in config.ad_dir.read_dir().expect("cannot read ad directory") {
+ if let Ok(entry) = entry {
+ if entry
+ .path()
+ .file_name()
+ .unwrap()
+ .to_str()
+ .unwrap()
+ .ends_with(".toml")
+ {
+ let path = entry.path();
+ let imname = path.file_stem().unwrap().to_str().unwrap();
+ let basename = imname.split_once(".").unwrap().0;
+ let info: AdInfo = toml::from_str(
+ &rocket::tokio::fs::read_to_string(entry.path())
+ .await
+ .unwrap(),
+ )
+ .unwrap();
+ config.ads.insert(
+ basename.to_string(),
+ AdInfo {
+ image: imname.into(),
+ ..info
+ },
+ );
+ }
+ }
+ }
+ eprintln!("{config:?}");
let state = Logic::new(config);