diff options
| author | Grant Ammons <gammons@gmail.com> | 2016-06-12 13:36:54 -0400 |
|---|---|---|
| committer | Grant Ammons <gammons@gmail.com> | 2016-06-12 13:37:05 -0400 |
| commit | 642a71b941aa382b1e7a42e7e378452007373cda (patch) | |
| tree | 5e1335a19ffb611dec8c02253f6438b7d891a225 /todolist | |
| parent | 00166fe17b7bbd4691d29c1ee15a66685c899366 (diff) | |
Add the webapp
Diffstat (limited to 'todolist')
| -rw-r--r-- | todolist/webapp.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/todolist/webapp.go b/todolist/webapp.go new file mode 100644 index 0000000..29918bf --- /dev/null +++ b/todolist/webapp.go @@ -0,0 +1,66 @@ +package todolist + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + + "github.com/julienschmidt/httprouter" +) + +type Webapp struct { + Router *httprouter.Router +} + +func NewWebapp() *Webapp { + return &Webapp{Router: setupRoutes()} +} + +func (w *Webapp) Run() { + log.Fatal(http.ListenAndServe(":7890", w.Router)) +} + +func setupRoutes() *httprouter.Router { + router := httprouter.New() + router.GET("/", Scaffold) + router.OPTIONS("/todos", TodoOptions) + router.GET("/todos", GetTodos) + router.POST("/todos", SaveTodos) + return router +} + +func Scaffold(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + template := ` + <html> + <h1>you are here buddy</h1> + </html> + ` + fmt.Fprintf(w, template) +} + +func GetTodos(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + w.Header().Set("Access-Control-Allow-Origin", "*") + app := NewApp() + app.Load() + json, _ := json.Marshal(app.TodoList.Data) + fmt.Fprintf(w, string(json)) +} +func TodoOptions(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Origin", "*") + fmt.Fprintf(w, "") +} + +func SaveTodos(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Origin", "*") + decoder := json.NewDecoder(r.Body) + var todos []*Todo + err := decoder.Decode(&todos) + if err != nil { + log.Fatal("encountered an error parsing json, ", err) + } + app := NewApp() + app.TodoStore.Save(todos) +} |
