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 | *.exe | ||||||
| *.test | *.test | ||||||
| *.prof | *.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…
	
	Add table
		Add a link
		
	
		Reference in a new issue