rtr.go 730 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package srv
  2. import (
  3. "net/http"
  4. "git.clearsky.net.au/cody/gex.git/utils"
  5. )
  6. var rtr *http.ServeMux
  7. /*
  8. Our Special HandleFunc
  9. */
  10. func Route(pattern string, handler func(req *Req, res *Res)) {
  11. realHandler := func(w http.ResponseWriter, r *http.Request) {
  12. var req Req
  13. var res Res
  14. req.Construct(r)
  15. res.Construct(w, r)
  16. // run middleware on each request
  17. for _, fun := range middleware {
  18. err := fun(&req, &res)
  19. if err != nil {
  20. utils.Err(err)
  21. return
  22. }
  23. }
  24. handler(&req, &res)
  25. }
  26. rtr.HandleFunc(pattern, realHandler)
  27. }
  28. func InitRouter() {
  29. rtr = http.NewServeMux()
  30. // Public Files
  31. fs := http.FileServer(http.Dir("app/pub"))
  32. rtr.Handle("GET /app/pub/", http.StripPrefix("/app/pub/", fs))
  33. }