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.
18// TODO: use gorilla/mux and friends
19func NewRouter(ctx context.Context) *goji.Mux {
20	mux := goji.NewMux()
21
22	// Middlewares
23	mux.Use(NewContextMiddleware(ctx))
24	mux.Use(NewLoggingMiddleware)
25
26	// Git routes
27	for _, service := range gitRoutes {
28		mux.Handle(service, withAccess(service))
29	}
30
31	// go-get handler
32	mux.Handle(pat.Get("/*"), GoGetHandler{})
33
34	return mux
35}