From 955c45118f80c060d07137227ccef12dee1ace6d Mon Sep 17 00:00:00 2001 From: ami44 Date: Sun, 31 Dec 2017 14:45:42 +0100 Subject: [PATCH] upd basic with favicon and subpage --- examples/basic/src/main.rs | 78 +++++++++++++++++- examples/static/favicon.ico | Bin 0 -> 34494 bytes ...awesome_4-7-0_rocket_256_0_007dff_none.png | Bin 0 -> 2920 bytes 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 examples/static/favicon.ico create mode 100644 examples/static/font-awesome_4-7-0_rocket_256_0_007dff_none.png diff --git a/examples/basic/src/main.rs b/examples/basic/src/main.rs index 9895ac946..0c5a2e160 100644 --- a/examples/basic/src/main.rs +++ b/examples/basic/src/main.rs @@ -23,14 +23,75 @@ fn index(mut req: HttpRequest) -> Result { } // session + let mut counter = 1; if let Some(count) = req.session().get::("counter")? { println!("SESSION value: {}", count); - req.session().set("counter", count+1)?; + counter = count+1; + req.session().set("counter", counter)?; } else { req.session().set("counter", 1)?; } - Ok("Welcome!".into()) + let html = format!(r#" + + + actix - basic + + + + subpage +

Welcome

+ counter = {} + +"#, counter); + + Ok(HttpResponse::build(StatusCode::OK) + .content_type("text/html; charset=utf-8") + .body(&html).unwrap()) + + +} + +/// favicon handler +fn favicon(req: HttpRequest) -> Result { + Ok(fs::NamedFile::open("../static/favicon.ico")?) +} + +/// subpage handler +fn subpage(req: HttpRequest) -> Result { + let html = format!(r#" + + + actix - basic + + + + index + sub page with image
+ + +"#); + Ok(HttpResponse::build(StatusCode::OK) + .content_type("text/html; charset=utf-8") + .body(&html).unwrap()) +} + +/// 404 handler +fn p404(req: HttpRequest) -> Result { + let html = format!(r#" + + + actix - basic + + + + index +

404

+ +"#); + Ok(HttpResponse::build(StatusCode::NOT_FOUND) + .content_type("text/html; charset=utf-8") + .body(&html).unwrap()) } /// async handler @@ -69,8 +130,13 @@ fn main() { .secure(false) .finish() )) + // register favicon + .resource("/favicon.ico", |r| r.f(favicon)) + // register assets + .resource("/assets/{tail:.*}", |r| r.h(fs::StaticFiles::new("tail", "../static/", false))) // register simple route, handle all methods .resource("/index.html", |r| r.f(index)) + .resource("/subpage.html", |r| r.f(subpage)) // with path parameters .resource("/user/{name}/", |r| r.method(Method::GET).f(with_param)) // async handler @@ -92,7 +158,13 @@ fn main() { HttpResponse::Found() .header("LOCATION", "/index.html") .finish() - }))) + })) + // default + .default_resource(|r| { + r.method(Method::GET).f(p404); + r.route().p(pred::Not(pred::Get())).f(|req| httpcodes::HTTPMethodNotAllowed); + }) + ) .bind("0.0.0.0:8080").unwrap() .start(); diff --git a/examples/static/favicon.ico b/examples/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1cec3801a951f1bbc5b7552cc8187f35b709c161 GIT binary patch literal 34494 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 LRSi`rso(zx>WLe| literal 0 HcmV?d00001 diff --git a/examples/static/font-awesome_4-7-0_rocket_256_0_007dff_none.png b/examples/static/font-awesome_4-7-0_rocket_256_0_007dff_none.png new file mode 100644 index 0000000000000000000000000000000000000000..d824eb1108a935571961ea01cabe9e99da2ac99f GIT binary patch literal 2920 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 literal 0 HcmV?d00001