aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.todos.json2
-rw-r--r--Rakefile3
-rw-r--r--todo.go2
-rw-r--r--todolist/webapp.go73
4 files changed, 49 insertions, 31 deletions
diff --git a/.todos.json b/.todos.json
index 9c584cb..ab83a99 100644
--- a/.todos.json
+++ b/.todos.json
@@ -1 +1 @@
-[{"id":1,"subject":"support for priorities +feature","projects":["feature"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":2,"subject":"fix bug with 'tod' not being recognized +bug","projects":["bug"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":3,"subject":"separate into packages/directories +refactor","projects":["refactor"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false}] \ No newline at end of file
+[{"id":1,"subject":"support for priorities +feature","projects":["feature"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":2,"subject":"fix bug with 'tod' not being recognized +bug","projects":["bug"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":3,"subject":"separate into packages/directories +refactor","projects":["refactor"],"contexts":[],"due":"2016-07-08","completed":false,"archived":false},{"id":4,"subject":"+documentation re-record how it works using this https://asciinema.org/","projects":["documentation"],"contexts":[],"due":"","completed":false,"archived":false},{"id":5,"subject":"+slideplayer nice quote support","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":6,"subject":"+slideplayer image filters using css3","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":7,"subject":"+slideplayer syntax highlighting and code blocks","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false},{"id":8,"subject":"+slideplayer presenter notes","projects":["slideplayer"],"contexts":[],"due":"","completed":false,"archived":false}] \ No newline at end of file
diff --git a/Rakefile b/Rakefile
index a94149f..afc4ccd 100644
--- a/Rakefile
+++ b/Rakefile
@@ -10,8 +10,7 @@ Envs = [
{goos: "windows", arch: "amd64"}
]
-Version = "0.2.0"
-
+Version = "0.3.0"
task :build do
`rm -rf dist/#{Version}`
diff --git a/todo.go b/todo.go
index 0240886..5d6bc75 100644
--- a/todo.go
+++ b/todo.go
@@ -10,7 +10,7 @@ import (
)
const (
- VERSION = "0.2.0"
+ VERSION = "0.3.0"
)
func main() {
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) {