1package handler
2
3import (
4 "net/http"
5
6 serverconfig "git.gabrielgio.me/cerrado/pkg/config"
7 "git.gabrielgio.me/cerrado/pkg/handler/about"
8 "git.gabrielgio.me/cerrado/pkg/handler/config"
9 "git.gabrielgio.me/cerrado/pkg/handler/git"
10 "git.gabrielgio.me/cerrado/pkg/handler/static"
11 "git.gabrielgio.me/cerrado/pkg/service"
12 "github.com/gorilla/mux"
13)
14
15// Mount handler gets the requires service and repository to build the handlers
16// This functons wraps the whole handler package and wraps it into one part so
17// its sub package don't leak in other places.
18func MountHandler(
19 gitService *service.GitService,
20 configRepo *serverconfig.ConfigurationRepository,
21) (http.Handler, error) {
22 var (
23 gitHandler = git.NewGitHandler(gitService)
24 aboutHandler = about.NewAboutHandler(configRepo)
25 configHander = config.ConfigFile(configRepo)
26 )
27
28 staticHandler, err := static.NewStaticHander("/static/")
29 if err != nil {
30 return nil, err
31 }
32
33 mux := mux.NewRouter()
34
35 mux.PathPrefix("/static").Handler(staticHandler)
36 mux.HandleFunc("/{name}/about", gitHandler.About)
37 mux.HandleFunc("/{name}", gitHandler.Summary)
38 mux.HandleFunc("/{name}/refs", gitHandler.Refs)
39 mux.HandleFunc("/{name}/tree/{ref}", gitHandler.Tree)
40 mux.HandleFunc("/{name}/log/{ref}", gitHandler.Log)
41 mux.HandleFunc("/config", configHander)
42 mux.HandleFunc("/about", aboutHandler.About)
43 mux.HandleFunc("/", gitHandler.List)
44 return mux, nil
45}