diff --git a/Cargo.lock b/Cargo.lock index f47804f6..5f75fc71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,6 +136,34 @@ dependencies = [ "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "askama" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "askama_derive 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "askama_shared 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "askama_derive" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "askama_shared 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "askama_shared" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "atty" version = "0.2.8" @@ -930,6 +958,14 @@ name = "matches" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "memchr" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "memchr" version = "2.0.1" @@ -1039,6 +1075,14 @@ name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "nom" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-integer" version = "0.1.36" @@ -1660,6 +1704,16 @@ dependencies = [ "remove_dir_all 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "template-askama" +version = "0.1.0" +dependencies = [ + "actix 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-web 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "askama 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "template-tera" version = "0.1.0" @@ -2158,6 +2212,9 @@ dependencies = [ "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" "checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5" "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum askama 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "707738cab2be4ebcdf586d9ae53eceb3fc39b7fbefb77f53d74199038c45a768" +"checksum askama_derive 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2c44f7839000b63cca24c49dd7ef4ca542600a406dca4130dadf832780adcdcf" +"checksum askama_shared 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72764966f241ed1143792ec29805df7eec322800b2b402781d86339e66f512b6" "checksum atty 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "af80143d6f7608d746df1520709e5d141c96f240b0e62b0aa41bdfb53374d9d4" "checksum backoff 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7bd67d02cc9dfe9bb1891cb6b4f0169f53cdf0a78b07276ab2141452aaf5789" "checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" @@ -2245,6 +2302,7 @@ dependencies = [ "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" "checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" +"checksum memchr 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" "checksum memoffset 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e163e5baece1a039e71e75b074de17a9b4114982aa109921fc20253bdf91a53c" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" @@ -2256,6 +2314,7 @@ dependencies = [ "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum net2 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)" = "9044faf1413a1057267be51b5afba8eb1090bd2231c693664aa1db716fe1eae0" "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nom 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" "checksum num-integer 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f8d26da319fb45674985c78f1d1caf99aa4941f785d384a2ae36d0740bc3e2fe" "checksum num-traits 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dee092fcdf725aee04dd7da1d21debff559237d49ef1cb3e69bcb8ece44c7364" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" diff --git a/Cargo.toml b/Cargo.toml index 48bbe412..947aa974 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ members = [ "r2d2", "redis-session", "state", + "template_askama", "template_tera", "tls", "unix-socket", diff --git a/template_askama/Cargo.toml b/template_askama/Cargo.toml new file mode 100644 index 00000000..16798ee9 --- /dev/null +++ b/template_askama/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "template-askama" +version = "0.1.0" +authors = ["Nikolay Kim "] +workspace = "../" + +[dependencies] +env_logger = "0.5" +actix = "0.5" +actix-web = "^0.5" +askama = "0.6" + +[build-dependencies] +askama = "0.6" diff --git a/template_askama/build.rs b/template_askama/build.rs new file mode 100644 index 00000000..89e3e6b1 --- /dev/null +++ b/template_askama/build.rs @@ -0,0 +1,5 @@ +extern crate askama; + +fn main() { + askama::rerun_if_templates_changed(); +} diff --git a/template_askama/src/main.rs b/template_askama/src/main.rs new file mode 100644 index 00000000..097f18bc --- /dev/null +++ b/template_askama/src/main.rs @@ -0,0 +1,45 @@ +extern crate actix; +extern crate actix_web; +#[macro_use] +extern crate askama; + +use actix::prelude::*; +use actix_web::{http, server, App, HttpRequest, HttpResponse, Result}; +use askama::Template; + +#[derive(Template)] +#[template(path = "user.html")] +struct UserTemplate<'a> { + name: &'a str, + text: &'a str, +} + +#[derive(Template)] +#[template(path = "index.html")] +struct Index; + +fn index(req: HttpRequest) -> Result { + let s = if let Some(name) = req.query().get("name") { + UserTemplate { + name: name, + text: "Welcome!", + }.render() + .unwrap() + } else { + Index.render().unwrap() + }; + Ok(HttpResponse::Ok().content_type("text/html").body(s)) +} + +fn main() { + let sys = System::new("template-askama"); + + // start http server + server::new(move || App::new().resource("/", |r| r.method(http::Method::GET).f(index))) + .bind("0.0.0.0:8080") + .unwrap() + .start(); + + println!("Started http server: 127.0.0.1:8080"); + let _ = sys.run(); +} diff --git a/template_askama/templates/index.html b/template_askama/templates/index.html new file mode 100644 index 00000000..d8a47bc0 --- /dev/null +++ b/template_askama/templates/index.html @@ -0,0 +1,17 @@ + + + + + Actix web + + +

Welcome!

+

+

What is your name?

+
+
+

+
+

+ + diff --git a/template_askama/templates/user.html b/template_askama/templates/user.html new file mode 100644 index 00000000..cb532891 --- /dev/null +++ b/template_askama/templates/user.html @@ -0,0 +1,13 @@ + + + + + Actix web + + +

Hi, {{ name }}!

+

+ {{ text }} +

+ +