From cde7ef8c96507a684e8747479d3caa552ca137bc Mon Sep 17 00:00:00 2001
From: Nikolay Kim
Date: Tue, 24 Apr 2018 09:12:48 -0700
Subject: [PATCH] add askama example
---
Cargo.lock | 59 ++++++++++++++++++++++++++++
Cargo.toml | 1 +
template_askama/Cargo.toml | 14 +++++++
template_askama/build.rs | 5 +++
template_askama/src/main.rs | 45 +++++++++++++++++++++
template_askama/templates/index.html | 17 ++++++++
template_askama/templates/user.html | 13 ++++++
7 files changed, 154 insertions(+)
create mode 100644 template_askama/Cargo.toml
create mode 100644 template_askama/build.rs
create mode 100644 template_askama/src/main.rs
create mode 100644 template_askama/templates/index.html
create mode 100644 template_askama/templates/user.html
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 }}
+
+
+