From d8b4952be2a83ac815cc1a228bc82497a4deea8e Mon Sep 17 00:00:00 2001 From: "Hannes F. Kuchelmeister" Date: Mon, 30 Aug 2021 17:07:05 +0200 Subject: [PATCH] add basic navigation for site --- src/main.rs | 53 ++++++++++++++++++++++++++++++++------------ templates/error.html | 1 + templates/index.html | 2 +- 3 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 templates/error.html diff --git a/src/main.rs b/src/main.rs index 8000aae..578912b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,31 +27,55 @@ async fn make_ics_request(req: HttpRequest) -> impl Responder { HttpResponse::Ok().content_type("text/calendar").body(body) } -// store tera template in application state -async fn index( +async fn edit( tmpl: web::Data, query: web::Query>, ) -> Result { + let mut s = "".to_string(); + if query.get("create").is_some() { + if let Some(link) = query.get("link") { + // submitted form + let proxy_link = &"Insert link here".to_owned(); + + let mut ctx = tera::Context::new(); + ctx.insert("link", &link.to_owned()); + ctx.insert("proxy_link", proxy_link); + s = tmpl + .render("edit.html", &ctx) + .map_err(|_| error::ErrorInternalServerError("Template error"))?; + } // create new link } else if query.get("edit").is_some() { + if let Some(link) = query.get("link") { + // submitted form + let proxy_link = &"Insert link here".to_owned(); + + let mut ctx = tera::Context::new(); + ctx.insert("link", &link.to_owned()); + ctx.insert("proxy_link", proxy_link); + s = tmpl + .render("edit.html", &ctx) + .map_err(|_| error::ErrorInternalServerError("Template error"))?; + } // edit existing link } else if query.get("replace").is_some() { // replace link - } - let s = if let Some(link) = query.get("link") { - // submitted form - let proxy_link = &"Insert link here".to_owned(); - - let mut ctx = tera::Context::new(); - ctx.insert("link", &link.to_owned()); - ctx.insert("proxy_link", proxy_link); - tmpl.render("edit.html", &ctx) - .map_err(|_| error::ErrorInternalServerError("Template error"))? + s = "Replace".to_string(); } else { - tmpl.render("index.html", &tera::Context::new()) + s = tmpl + .render("error.html", &tera::Context::new()) .map_err(|_| error::ErrorInternalServerError("Template error"))? - }; + } + + Ok(HttpResponse::Ok().content_type("text/html").body(s)) +} + +// store tera template in application state +async fn index(tmpl: web::Data) -> Result { + let s = tmpl + .render("index.html", &tera::Context::new()) + .map_err(|_| error::ErrorInternalServerError("Template error"))?; Ok(HttpResponse::Ok().content_type("text/html").body(s)) } @@ -67,6 +91,7 @@ async fn main() -> std::io::Result<()> { .data(tera) .route("/{id}/events.ics", web::get().to(make_ics_request)) .service(web::resource("/").route(web::get().to(index))) + .service(web::resource("/edit").route(web::get().to(edit))) }) .bind("127.0.0.1:8080")? .run() diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 0000000..72f8f90 --- /dev/null +++ b/templates/error.html @@ -0,0 +1 @@ +Something went wrong \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index a846d45..199c10a 100644 --- a/templates/index.html +++ b/templates/index.html @@ -9,7 +9,7 @@

Welcome!

-

+