func loadRevel(routes []route) http.Handler { router := revel.NewRouter("") // parseRoutes var rs []*revel.Route for _, r := range routes { rs = append(rs, revel.NewRoute(r.method, r.path, "RevelController.Handle", "", "", 0)) } router.Routes = rs // updateTree router.Tree = pathtree.New() for _, r := range router.Routes { err := router.Tree.Add(r.TreePath, r) // Allow GETs to respond to HEAD requests. if err == nil && r.Method == "GET" { err = router.Tree.Add("/HEAD"+r.Path, r) } // Error adding a route to the pathtree. if err != nil { panic(err) } } rc := new(RevelController) rc.router = router return rc }
func (router *Router) updateTree() *Error { router.Tree = pathtree.New() for _, route := range router.Routes { err := router.Tree.Add(route.TreePath, route) // Allow GETs to respond to HEAD requests. if err == nil && route.Method == "GET" { err = router.Tree.Add(treePath("HEAD", route.Path), route) } // Error adding a route to the pathtree. if err != nil { return routeError(err, route.routesPath, "", route.line) } } return nil }
func NewRouter(routesPath string) *Router { return &Router{ Tree: pathtree.New(), path: routesPath, } }