New rocket.rs app
This commit is contained in:
parent
268dd63423
commit
14641b7696
10 changed files with 1480 additions and 84 deletions
17
.gitignore
vendored
17
.gitignore
vendored
|
@ -34,3 +34,20 @@ _testmain.go
|
|||
*.exe
|
||||
*.test
|
||||
*.prof
|
||||
|
||||
|
||||
#Added by cargo
|
||||
#
|
||||
#already existing elements are commented out
|
||||
|
||||
/target
|
||||
**/*.rs.bk
|
||||
|
||||
|
||||
#Added by cargo
|
||||
#
|
||||
#already existing elements were commented out
|
||||
|
||||
#/target
|
||||
|
||||
TAGS
|
||||
|
|
1327
Cargo.lock
generated
Normal file
1327
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
22
Cargo.toml
Normal file
22
Cargo.toml
Normal file
|
@ -0,0 +1,22 @@
|
|||
[package]
|
||||
name = "pinkblackrose"
|
||||
version = "0.1.0"
|
||||
authors = ["Carolyn Knight-Serrano <gigavinyl@riseup.net>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rocket = "0.4.2"
|
||||
juniper = "0.14.2"
|
||||
dotenv = "0.9.0"
|
||||
rincon = "0.1.0"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
serde_json = "1.0"
|
||||
|
||||
|
||||
[dependencies.rocket_contrib]
|
||||
version = "0.4.2"
|
||||
default-features = false
|
||||
features = ["handlebars_templates", "tera_templates"]
|
25
Gopkg.lock
generated
25
Gopkg.lock
generated
|
@ -1,25 +0,0 @@
|
|||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
digest = "1:cca84f57a4b9505914704f7c93937573763bb9a656eb006e144e81615b5f3cb6"
|
||||
name = "gitea.com/lunny/log"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "01b5df579c4e3c867d69e733e6e532b2923e711c"
|
||||
version = "v0.2"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7d6017c139cce637f0dbe70361addf48a5a8c132b062bd816b17dfbcba8e5530"
|
||||
name = "gitea.com/lunny/tango"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "af459469e09da76b00b310365998396b33ea4aa9"
|
||||
version = "v0.6.2"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
input-imports = ["gitea.com/lunny/tango"]
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
34
Gopkg.toml
34
Gopkg.toml
|
@ -1,34 +0,0 @@
|
|||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
#
|
||||
# [prune]
|
||||
# non-go = false
|
||||
# go-tests = true
|
||||
# unused-packages = true
|
||||
|
||||
|
||||
[prune]
|
||||
go-tests = true
|
||||
unused-packages = true
|
||||
|
||||
[[constraint]]
|
||||
name = "gitea.com/lunny/tango"
|
||||
version = "0.6.2"
|
25
app/main.go
25
app/main.go
|
@ -1,25 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gitea.com/lunny/tango"
|
||||
)
|
||||
|
||||
type Action struct {
|
||||
tango.JSON
|
||||
}
|
||||
|
||||
func (Action) Get() interface{} {
|
||||
if true {
|
||||
return map[string]string{
|
||||
"say": "Hello tango!",
|
||||
}
|
||||
}
|
||||
return errors.New("something error")
|
||||
}
|
||||
|
||||
func main() {
|
||||
t := tango.Classic()
|
||||
t.Get("/", new(Action))
|
||||
t.Run()
|
||||
}
|
73
src/main.rs
Normal file
73
src/main.rs
Normal file
|
@ -0,0 +1,73 @@
|
|||
#![feature(proc_macro_hygiene, decl_macro)]
|
||||
|
||||
#[macro_use] extern crate rocket;
|
||||
#[macro_use] extern crate serde_derive;
|
||||
|
||||
use rocket::Request;
|
||||
use rocket::response::Redirect;
|
||||
use rocket_contrib::templates::{Template, handlebars};
|
||||
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct TemplateContext {
|
||||
title: &'static str,
|
||||
name: Option<String>,
|
||||
items: Vec<&'static str>,
|
||||
// This key tells handlebars which template is the parent.
|
||||
parent: &'static str,
|
||||
}
|
||||
|
||||
#[get("/")]
|
||||
fn index() -> Redirect {
|
||||
Redirect::to("/hello/Unknown")
|
||||
}
|
||||
|
||||
#[get("/hello/<name>")]
|
||||
fn hello(name: String) -> Template {
|
||||
Template::render("index", &TemplateContext {
|
||||
title: "Hello",
|
||||
name: Some(name),
|
||||
items: vec!["One", "Two", "Three"],
|
||||
parent: "layout",
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
#[catch(404)]
|
||||
fn not_found(req: &Request<'_>) -> Template {
|
||||
let mut map = std::collections::HashMap::new();
|
||||
map.insert("path", req.uri().path());
|
||||
Template::render("error/404", &map)
|
||||
}
|
||||
|
||||
use self::handlebars::{Helper, Handlebars, Context, RenderContext, Output, HelperResult, JsonRender};
|
||||
|
||||
fn wow_helper(
|
||||
h: &Helper<'_, '_>,
|
||||
_: &Handlebars,
|
||||
_: &Context,
|
||||
_: &mut RenderContext<'_>,
|
||||
out: &mut dyn Output
|
||||
) -> HelperResult {
|
||||
if let Some(param) = h.param(0) {
|
||||
out.write("<b><i>")?;
|
||||
out.write(¶m.value().render())?;
|
||||
out.write("</b></i>")?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
fn rocket() -> rocket::Rocket {
|
||||
rocket::ignite()
|
||||
.mount("/", routes![index, hello])
|
||||
.register(catchers![not_found])
|
||||
.attach(Template::custom(|engines| {
|
||||
engines.handlebars.register_helper("wow", Box::new(wow_helper));
|
||||
}))
|
||||
}
|
||||
|
||||
fn main() {
|
||||
rocket().launch();
|
||||
}
|
11
templates/error/404.hbs
Normal file
11
templates/error/404.hbs
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>404</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>404: Hey! There's nothing here.</h1>
|
||||
The page at {{ path }} does not exist!
|
||||
</body>
|
||||
</html>
|
19
templates/index.hbs
Normal file
19
templates/index.hbs
Normal file
|
@ -0,0 +1,19 @@
|
|||
{{#*inline "page"}}
|
||||
|
||||
<section id="hello">
|
||||
<h1>Hi {{ name }}!</h1>
|
||||
<h3>Here are your items:</h3>
|
||||
<ul>
|
||||
{{#each items}}
|
||||
<li>{{ this }}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="custom-helper">
|
||||
<p>Try going to <a href="/hello/YourName">/hello/YourName</a>.</p>
|
||||
<p>Also, check {{ wow "this" }} (custom helper) out!</p>
|
||||
</section>
|
||||
|
||||
{{/inline}}
|
||||
{{~> (parent)~}}
|
11
templates/layout.hbs
Normal file
11
templates/layout.hbs
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rocket Example - {{ title }}</title>
|
||||
</head>
|
||||
<body>
|
||||
{{> nav}}
|
||||
{{~> page}}
|
||||
{{> footer}}
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue