1package web
2
3import (
4 "context"
5 "net/http"
6
7 "goji.io"
8 "goji.io/pat"
9)
10
11// Route is an interface for a route.
12type Route interface {
13 http.Handler
14 goji.Pattern
15}
16
17// NewRouter returns a new HTTP router.
18func NewRouter(ctx context.Context) *goji.Mux {
19 mux := goji.NewMux()
20
21 // Middlewares
22 mux.Use(NewContextMiddleware(ctx))
23 mux.Use(NewLoggingMiddleware)
24
25 // Git routes
26 for _, service := range gitRoutes {
27 mux.Handle(service, withAccess(service))
28 }
29
30 // go-get handler
31 mux.Handle(pat.Get("/*"), GoGetHandler{})
32
33 return mux
34}