diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/web_server.rs | 4 | ||||
| -rw-r--r-- | src/web_server/default.rs | 33 |
2 files changed, 27 insertions, 10 deletions
diff --git a/src/web_server.rs b/src/web_server.rs index 01233f2..8ee740c 100644 --- a/src/web_server.rs +++ b/src/web_server.rs @@ -3,7 +3,7 @@ use std::time::Duration; use actix::{Addr, SyncArbiter}; use actix_web::{ - get, http::header, middleware::Logger, post, web, App, HttpResponse, HttpServer, Responder, + get, middleware::Logger, post, web, App, HttpServer, Responder, }; use askama::actix_web::TemplateIntoResponse; use askama::Template; @@ -91,8 +91,8 @@ async fn get_bot( front: FrontEnd, ) -> impl Responder { match front { + FrontEnd::Default => default::get_bot(bot, name.into_inner()).await, FrontEnd::Tmtu => tmtu::get_bot(bot, name.into_inner()).await, - FrontEnd::Default => Ok(HttpResponse::Found().header(header::LOCATION, "/").finish()), } } 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<Addr<BotExecutor>>) -> Result<HttpResponse, Error> { - 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<Addr<BotExecutor>>, + name: String, +) -> Result<HttpResponse, Error> { + 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()) + } +} |
