diff options
| author | Grant Ammons <gammons@gmail.com> | 2016-08-27 16:18:16 -0400 |
|---|---|---|
| committer | Grant Ammons <gammons@gmail.com> | 2016-08-27 16:18:16 -0400 |
| commit | 5c9cb6b5cb09b51b2fa18351ec58d53ad82ac425 (patch) | |
| tree | f731157671812de822b061a579354ad7f6707dfd /todolist/webapp.go | |
| parent | 7683f54f14540822ea3952598216839f9aacc610 (diff) | |
Allow 404s to redirect to index file
Diffstat (limited to 'todolist/webapp.go')
| -rw-r--r-- | todolist/webapp.go | 73 |
1 files changed, 46 insertions, 27 deletions
diff --git a/todolist/webapp.go b/todolist/webapp.go index 39d1a9b..5c93e90 100644 --- a/todolist/webapp.go +++ b/todolist/webapp.go @@ -10,7 +10,8 @@ import ( ) const ( - VERSION = "0.2.0" + VERSION = "0.3.0" + S3URL = "https://s3.amazonaws.com/todolist-local/" + VERSION ) type Webapp struct { @@ -27,44 +28,62 @@ func (w *Webapp) Run() { func setupRoutes() *httprouter.Router { router := httprouter.New() - router.GET("/", Scaffold) + router.GET("/", IndexScaffold) router.OPTIONS("/todos", TodoOptions) router.GET("/todos", GetTodos) router.POST("/todos", SaveTodos) + router.NotFound = http.HandlerFunc(RedirectScaffold) return router } -func Scaffold(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { +func IndexScaffold(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { template := ` - <!DOCTYPE html> - <html lang="en"> - <head> - <style> - body { - font-family: 'Roboto', sans-serif; - margin: 0px; - } - </style> - <meta charset="utf-8"> - <link href="https://fonts.googleapis.com/css?family=Roboto:400,300,500" rel="stylesheet"> - <link rel="stylesheet" href="` + urlFor("main.css") + `"> - <meta name="viewport" content="width=device-width,initial-scale=1"> - <meta name="mobile-web-app-capable" content="yes"> - <title>Todolist</title> - <style>body{font-family:Roboto,sans-serif;margin:0}</style> - </head> - <body> - <div id="app"></div> - <script type="text/javascript" src="` + urlFor("common.js") + `"></script> - <script type="text/javascript" src="` + urlFor("main.js") + `"></script> - </body> - </html> +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <link rel="stylesheet" href="https://bootswatch.com/flatly/bootstrap.min.css"> + <title>Todolist</title> + <link href="` + urlFor("main.css") + `" rel="stylesheet"> + </head> + <body> + <div id="app"></div> + <script type="text/javascript" src="` + urlFor("common.js") + `"></script> + <script type="text/javascript" src="` + urlFor("main.js") + `"></script> + </body> +</html> + ` + fmt.Fprintf(w, template) +} + +func RedirectScaffold(w http.ResponseWriter, r *http.Request) { + template := ` +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <link rel="stylesheet" href="https://bootswatch.com/flatly/bootstrap.min.css"> + <title>Todolist</title> + <link href="` + urlFor("main.css") + `" rel="stylesheet"> + </head> + <body> + <div id="app"></div> + <script type="text/javascript" src="` + urlFor("common.js") + `"></script> + <script type="text/javascript" src="` + urlFor("main.js") + `"></script> + </body> +</html> ` fmt.Fprintf(w, template) } func urlFor(file string) string { - return "https://s3.amazonaws.com/todolist-local/" + VERSION + "/" + file + return S3URL + "/" + file +} + +func RedirectToIndex(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, S3URL+r.URL.Path, 301) } func GetTodos(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { |
