From 552a3eb82347ee051855016f51ec452906cdc4d6 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 10 Jan 2023 22:55:04 +0100 Subject: the rocket is launching! :rocket: :rocket: --- src/frontend/pages/mod.rs | 60 ++++++++++++++++------------------------------- 1 file changed, 20 insertions(+), 40 deletions(-) (limited to 'src/frontend/pages/mod.rs') diff --git a/src/frontend/pages/mod.rs b/src/frontend/pages/mod.rs index 0e54a9a..46e2067 100644 --- a/src/frontend/pages/mod.rs +++ b/src/frontend/pages/mod.rs @@ -1,60 +1,40 @@ -use actix_web::{ - body::BoxBody, - http::{ - header::{HeaderName, HeaderValue}, - StatusCode, - }, - HttpResponseBuilder, Responder, +use markup::Render; +use rocket::{ + http::ContentType, + response::{self, Responder}, + Request, Response, }; -use std::fmt::Display; +use std::{fmt::Display, io::Cursor}; pub mod home; pub mod layout; pub mod node; -struct HtmlTemplate(pub T); +pub struct HtmlTemplate(pub T); -impl Responder for HtmlTemplate { - type Body = BoxBody; - - fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse { +impl<'r, T: Render> Responder<'r, 'static> for HtmlTemplate { + fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> { let mut out = String::new(); self.0.render(&mut out).unwrap(); - - HttpResponseBuilder::new(StatusCode::OK) - .body(out) - .respond_to(req) - } -} - -pub struct ContentType(pub &'static str, pub T); - -impl Responder for ContentType { - type Body = T::Body; - - fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse { - let mut r = self.1.respond_to(req); - r.headers_mut().insert( - HeaderName::from_static("content-type"), - HeaderValue::from_static(self.0), - ); - r + Response::build() + .header(ContentType::HTML) + .streamed_body(Cursor::new(out)) + .ok() } } -pub type MyResult = actix_web::Result; - #[derive(Debug)] pub struct MyError(anyhow::Error); -impl actix_web::error::ResponseError for MyError { - fn status_code(&self) -> StatusCode { - StatusCode::BAD_REQUEST - } - fn error_response(&self) -> actix_web::HttpResponse { - HttpResponseBuilder::new(StatusCode::BAD_REQUEST).body(format!("error: {}", self.0)) +impl<'r> Responder<'r, 'static> for MyError { + fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> { + Response::build() + .header(ContentType::HTML) + .streamed_body(Cursor::new(format!("{:?}", self.0))) + .ok() } } + impl Display for MyError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { self.0.fmt(f) -- cgit v1.2.3-70-g09d2