From 3575ac579cdcc5a9fa3ffec84952a634d1d7deaf Mon Sep 17 00:00:00 2001 From: Jokler Date: Thu, 4 Jun 2020 21:51:49 +0200 Subject: Improve the default website somewhat --- src/web_server/default.rs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'src/web_server') diff --git a/src/web_server/default.rs b/src/web_server/default.rs index b3c8291..ec86182 100644 --- a/src/web_server/default.rs +++ b/src/web_server/default.rs @@ -1,24 +1,41 @@ use actix::Addr; -use actix_web::{web, Error, HttpResponse}; +use actix_web::{http::header, web, Error, HttpResponse}; use askama::actix_web::TemplateIntoResponse; use askama::Template; -use crate::web_server::{filters, BotData, BotDataListRequest, BotExecutor}; +use crate::web_server::{filters, BotData, BotDataRequest, BotExecutor, BotNameListRequest}; #[derive(Template)] #[template(path = "index.htm")] struct OverviewTemplate<'a> { - bots: &'a [BotData], + bot_names: &'a [String], + bot: Option<&'a BotData>, } pub async fn index(bot: web::Data>) -> Result { - let bot_datas = match bot.send(BotDataListRequest).await.unwrap() { - Ok(data) => data, - Err(_) => Vec::with_capacity(0), - }; + let bot_names = bot.send(BotNameListRequest).await.unwrap().unwrap(); OverviewTemplate { - bots: &bot_datas[..], + bot_names: &bot_names, + bot: None, } .into_response() } + +pub async fn get_bot( + bot: web::Data>, + name: String, +) -> Result { + let bot_names = bot.send(BotNameListRequest).await.unwrap().unwrap(); + + if let Some(bot) = bot.send(BotDataRequest(name)).await.unwrap() { + OverviewTemplate { + bot_names: &bot_names, + bot: Some(&bot), + } + .into_response() + } else { + // TODO to 404 or not to 404 + Ok(HttpResponse::Found().header(header::LOCATION, "/").finish()) + } +} -- cgit v1.2.3-70-g09d2