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…
	
	Add table
		Add a link
		
	
		Reference in a new issue