Added a bunch of things
This commit is contained in:
1 parent
c365289914
commit
ce92916942
15 files changed
+131
-55
No files matched your search
+17
-8
@@ -1,14 +1,16 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use actix_web::{error, web, HttpRequest, Responder};
|
||||
use actix_web_lab::respond::Html;
|
||||
|
||||
use log::info;
|
||||
use minijinja::context;
|
||||
use serde::Deserialize;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::events::Event;
|
||||
|
||||
use crate::webui::services::Services;
|
||||
use crate::webui::services::ServicesFactory;
|
||||
use crate::webui::templates::MiniJinjaRenderer;
|
||||
|
||||
#[actix_web::get("/actions")]
|
||||
@@ -24,7 +26,7 @@ pub async fn accounts(tmpl_env: MiniJinjaRenderer) -> actix_web::Result<impl Res
|
||||
#[actix_web::get("/overview")]
|
||||
pub async fn overview(
|
||||
tmpl_env: MiniJinjaRenderer,
|
||||
service_factory: web::Data<Services>,
|
||||
service_factory: web::Data<ServicesFactory>,
|
||||
) -> actix_web::Result<impl Responder> {
|
||||
let conn = service_factory.get_connection()?;
|
||||
let user_service = service_factory.get_user_service(&conn)?;
|
||||
@@ -40,7 +42,7 @@ pub async fn overview(
|
||||
pub async fn overview_submit_button(
|
||||
tmpl_env: MiniJinjaRenderer,
|
||||
query: web::Query<HashMap<String, String>>,
|
||||
) -> actix_web::Result<impl Responder> {
|
||||
) -> actix_web::Result<Html> {
|
||||
let ctx = context! {
|
||||
event_type => query.get("event_type").unwrap_or(&"".to_string()),
|
||||
};
|
||||
@@ -51,12 +53,18 @@ pub async fn overview_submit_button(
|
||||
pub async fn actions_partials(
|
||||
tmpl_env: MiniJinjaRenderer,
|
||||
query: web::Query<HashMap<String, String>>,
|
||||
) -> actix_web::Result<impl Responder> {
|
||||
service_factory: web::Data<ServicesFactory>,
|
||||
) -> actix_web::Result<Html> {
|
||||
let event_type = query
|
||||
.get("event_type")
|
||||
.unwrap_or(&"404".to_string())
|
||||
.to_string();
|
||||
let ctx = context! {event_type => event_type};
|
||||
let conn = service_factory.get_connection()?;
|
||||
let security_service = service_factory.get_security_service(&conn)?;
|
||||
let ctx = context! {
|
||||
event_type => event_type,
|
||||
securities => security_service.list_securities(),
|
||||
};
|
||||
let template_location = format!("partials/actions/{:}.html", event_type);
|
||||
info!("Getting template at: {:?}", template_location);
|
||||
tmpl_env.render(template_location.as_str(), ctx)
|
||||
@@ -66,15 +74,16 @@ pub async fn actions_partials(
|
||||
pub struct CreateEventPayload {
|
||||
event: Event,
|
||||
event_type: String,
|
||||
initiator: String,
|
||||
}
|
||||
|
||||
#[actix_web::post("/events/{event_type}")]
|
||||
pub async fn push_event(
|
||||
req: HttpRequest,
|
||||
tmpl_env: MiniJinjaRenderer,
|
||||
event_channel: web::Data<async_channel::Sender<Event>>,
|
||||
event_channel: web::Data<async_channel::Sender<(Uuid, Event)>>,
|
||||
web::Json(form): web::Json<CreateEventPayload>,
|
||||
) -> actix_web::Result<impl Responder> {
|
||||
) -> actix_web::Result<Html> {
|
||||
let path_event_type = req.match_info().get("event_type").unwrap();
|
||||
if path_event_type.to_string() != form.event_type {
|
||||
return Err(error::ErrorBadRequest("Inconsistent event type."));
|
||||
@@ -83,7 +92,7 @@ pub async fn push_event(
|
||||
if validation.is_err() {
|
||||
return Err(error::ErrorBadRequest(validation.err().unwrap()));
|
||||
}
|
||||
let _ = event_channel.send(form.event).await;
|
||||
let _ = event_channel.send((Uuid::new_v4(), form.event)).await;
|
||||
let ctx = context! {
|
||||
event_type => "event received.",
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user