improved actix structure.
This commit is contained in:
1 parent
e14af22d3c
commit
663bf85257
4 files changed
+32
-34
No files matched your search
+30
-26
@@ -3,13 +3,7 @@
|
||||
use std::{env, path::PathBuf};
|
||||
|
||||
use actix_files;
|
||||
use actix_web::{
|
||||
dev::ServiceResponse,
|
||||
error,
|
||||
http::{header::ContentType, StatusCode},
|
||||
middleware::{ErrorHandlerResponse, ErrorHandlers, Logger},
|
||||
web, App, FromRequest, HttpRequest, HttpResponse, HttpServer, Responder, Result,
|
||||
};
|
||||
use actix_web::{dev::ServiceResponse, error, http::{header::ContentType, StatusCode}, middleware::{ErrorHandlerResponse, ErrorHandlers, Logger}, web, App, FromRequest, HttpRequest, HttpResponse, HttpServer, Responder, Result, Scope};
|
||||
use actix_web_lab::respond::Html;
|
||||
use async_channel;
|
||||
use futures::{pin_mut, select, FutureExt};
|
||||
@@ -19,13 +13,12 @@ use rusqlite::Connection;
|
||||
|
||||
use crate::events::Event;
|
||||
use crate::util::{CustomResult, Error, SQLiteConnectionFactory};
|
||||
use crate::webui::worker::{bob, event_processor_loop};
|
||||
use crate::webui::worker::{event_processor_loop};
|
||||
|
||||
mod views;
|
||||
mod worker;
|
||||
mod index_views;
|
||||
mod services;
|
||||
|
||||
mod views;
|
||||
mod worker;
|
||||
|
||||
struct MiniJinjaRenderer {
|
||||
tmpl_env: web::Data<minijinja_autoreload::AutoReloader>,
|
||||
@@ -77,6 +70,28 @@ fn create_auto_reloader(enable_template_autoreload: bool) -> AutoReloader {
|
||||
})
|
||||
}
|
||||
|
||||
fn create_static_scope() -> Scope {
|
||||
web::scope("/static").service(
|
||||
actix_files::Files::new("/", "./resources/static/"))
|
||||
}
|
||||
|
||||
fn create_api_scope() -> Scope {
|
||||
web::scope("/v1")
|
||||
.service(views::push_event)
|
||||
}
|
||||
|
||||
fn create_views_scope() -> Scope {
|
||||
web::scope("")
|
||||
.service(index_views::index)
|
||||
.service(index_views::login)
|
||||
.service(index_views::logout)
|
||||
.service(views::actions)
|
||||
.service(views::accounts)
|
||||
.service(views::overview)
|
||||
.service(views::overview_submit_button)
|
||||
.service(views::actions_partials)
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
pub async fn web_ui_main(
|
||||
conn_fact: SQLiteConnectionFactory,
|
||||
@@ -100,18 +115,9 @@ pub async fn web_ui_main(
|
||||
.app_data(tmpl_reloader.clone())
|
||||
.app_data(web::Data::new(event_sender.clone()))
|
||||
.app_data(web::Data::new(cloned_conn_fact.clone()))
|
||||
.service(
|
||||
actix_files::Files::new("/static", "./resources/static/").use_last_modified(true),
|
||||
)
|
||||
.service(index_views::index)
|
||||
.service(index_views::login)
|
||||
.service(index_views::logout)
|
||||
.service(views::actions)
|
||||
.service(views::accounts)
|
||||
.service(views::overview)
|
||||
.service(views::overview_submit_button)
|
||||
.service(views::actions_partials)
|
||||
.service(views::push_event)
|
||||
.service(create_static_scope())
|
||||
.service(create_api_scope())
|
||||
.service(create_views_scope())
|
||||
.wrap(ErrorHandlers::new().handler(StatusCode::NOT_FOUND, not_found))
|
||||
.wrap(Logger::default())
|
||||
})
|
||||
@@ -121,13 +127,11 @@ pub async fn web_ui_main(
|
||||
|
||||
let t1 = server.run().fuse();
|
||||
let t2 = event_processor_loop(conn_fact, event_receiver).fuse();
|
||||
let t3 = bob().fuse();
|
||||
pin_mut!(t1, t2, t3);
|
||||
pin_mut!(t1, t2);
|
||||
|
||||
select! {
|
||||
x = t1 => x.map_err(Error::IOError),
|
||||
y = t2 => y,
|
||||
z = t3 => z,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user