server.go

 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}