Move handler code to router package and rename types
This commit is contained in:
parent
a70d5a8548
commit
4830fbc870
2 changed files with 28 additions and 15 deletions
18
main.go
18
main.go
|
|
@ -1,35 +1,35 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"html/template"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/Bronku/iroon/auth"
|
"github.com/Bronku/iroon/auth"
|
||||||
"github.com/Bronku/iroon/middleware"
|
"github.com/Bronku/iroon/middleware"
|
||||||
"github.com/Bronku/iroon/store"
|
"github.com/Bronku/iroon/router"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var err error
|
var err error
|
||||||
var h handler
|
var h router.Router
|
||||||
var a auth.Authenticator
|
var a auth.Authenticator
|
||||||
defer h.close()
|
defer h.Close()
|
||||||
|
|
||||||
h.tmpl, err = template.ParseFiles("index.html", "order.html")
|
err = h.LoadTemplates()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("can't parse templates: ", err)
|
log.Fatal("can't parse templates: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
h.s, err = store.OpenStore("./foo.db")
|
err = h.OenStore()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("can't open the databse", err)
|
log.Fatal("can't open the databse", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
a = auth.New()
|
a = auth.New()
|
||||||
|
|
||||||
http.HandleFunc("GET /order/", middleware.Logger(a.Authenticate(h.form)))
|
// #todo: make handler functions private, and create a servemux in router
|
||||||
http.HandleFunc("GET /", middleware.Logger(a.Authenticate(h.index)))
|
http.HandleFunc("GET /order/", middleware.Logger(a.Authenticate(h.Form)))
|
||||||
http.HandleFunc("POST /", middleware.Logger(a.Authenticate(h.addOrder)))
|
http.HandleFunc("GET /", middleware.Logger(a.Authenticate(h.Index)))
|
||||||
|
http.HandleFunc("POST /", middleware.Logger(a.Authenticate(h.AddOrder)))
|
||||||
http.ListenAndServe(":8080", nil)
|
http.ListenAndServe(":8080", nil)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package main
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
@ -11,18 +11,31 @@ import (
|
||||||
"github.com/Bronku/iroon/store"
|
"github.com/Bronku/iroon/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
type handler struct {
|
type Router struct {
|
||||||
tmpl *template.Template
|
tmpl *template.Template
|
||||||
s *store.Store
|
s *store.Store
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) close() {
|
func (h *Router) Close() {
|
||||||
if h.s != nil {
|
if h.s != nil {
|
||||||
h.s.Close()
|
h.s.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) form(w http.ResponseWriter, r *http.Request) {
|
func (h *Router) OenStore() error {
|
||||||
|
var err error
|
||||||
|
h.s, err = store.OpenStore("./foo.db")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// #todo embed templates, and load them in init function
|
||||||
|
func (h *Router) LoadTemplates() error {
|
||||||
|
var err error
|
||||||
|
h.tmpl, err = template.ParseFiles("index.html", "order.html")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Router) Form(w http.ResponseWriter, r *http.Request) {
|
||||||
url := strings.Split(r.URL.String(), "/")
|
url := strings.Split(r.URL.String(), "/")
|
||||||
o := store.Order{
|
o := store.Order{
|
||||||
ID: -1,
|
ID: -1,
|
||||||
|
|
@ -55,7 +68,7 @@ func (h *handler) form(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) addOrder(w http.ResponseWriter, r *http.Request) {
|
func (h *Router) AddOrder(w http.ResponseWriter, r *http.Request) {
|
||||||
err := r.ParseForm()
|
err := r.ParseForm()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("can't parse the form")
|
fmt.Println("can't parse the form")
|
||||||
|
|
@ -126,7 +139,7 @@ func (h *handler) addOrder(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Write([]byte("accepted <a href='/'>back</a>"))
|
w.Write([]byte("accepted <a href='/'>back</a>"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *handler) index(w http.ResponseWriter, r *http.Request) {
|
func (h *Router) Index(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Header().Set("content-type", "text/html")
|
w.Header().Set("content-type", "text/html")
|
||||||
orders, err := h.s.GetOrders()
|
orders, err := h.s.GetOrders()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Loading…
Add table
Add a link
Reference in a new issue