github.com/jxgolibs/go-oauth2-server@v1.0.1/util/routes/routes.go (about) 1 package routes 2 3 import ( 4 "net/http" 5 6 "github.com/gorilla/mux" 7 "github.com/urfave/negroni" 8 ) 9 10 // Route ... 11 type Route struct { 12 Name string 13 Method string 14 Pattern string 15 HandlerFunc http.HandlerFunc 16 Middlewares []negroni.Handler 17 } 18 19 // AddRoutes adds routes to a router instance. If there are middlewares defined 20 // for a route, a new negroni app is created and wrapped as a http.Handler 21 func AddRoutes(routes []Route, router *mux.Router) { 22 var ( 23 handler http.Handler 24 n *negroni.Negroni 25 ) 26 27 for _, route := range routes { 28 // Add any specified middlewares 29 if len(route.Middlewares) > 0 { 30 n = negroni.New() 31 32 for _, middleware := range route.Middlewares { 33 n.Use(middleware) 34 } 35 36 // Wrap the handler in the negroni app with middlewares 37 n.Use(negroni.Wrap(route.HandlerFunc)) 38 handler = n 39 } else { 40 handler = route.HandlerFunc 41 } 42 43 router.Methods(route.Method). 44 Path(route.Pattern). 45 Name(route.Name). 46 Handler(handler) 47 } 48 }