aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/pages/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/pages/mod.rs')
-rw-r--r--src/frontend/pages/mod.rs60
1 files changed, 20 insertions, 40 deletions
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<T>(pub T);
+pub struct HtmlTemplate<T>(pub T);
-impl<T: markup::Render> Responder for HtmlTemplate<T> {
- type Body = BoxBody;
-
- fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse<Self::Body> {
+impl<'r, T: Render> Responder<'r, 'static> for HtmlTemplate<T> {
+ 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<T>(pub &'static str, pub T);
-
-impl<T: Responder> Responder for ContentType<T> {
- type Body = T::Body;
-
- fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse<Self::Body> {
- 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<T> = actix_web::Result<T, MyError>;
-
#[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<BoxBody> {
- 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)