diff options
Diffstat (limited to 'pkg/handler/router.go')
| -rw-r--r-- | pkg/handler/router.go | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/pkg/handler/router.go b/pkg/handler/router.go new file mode 100644 index 0000000..a8c9c6f --- /dev/null +++ b/pkg/handler/router.go @@ -0,0 +1,38 @@ +package handler + +import ( +	"net/http" + +	serverconfig "git.gabrielgio.me/cerrado/pkg/config" +	"git.gabrielgio.me/cerrado/pkg/handler/about" +	"git.gabrielgio.me/cerrado/pkg/handler/config" +	"git.gabrielgio.me/cerrado/pkg/handler/git" +	"git.gabrielgio.me/cerrado/pkg/handler/static" +	"git.gabrielgio.me/cerrado/pkg/service" +) + +// Mount handler gets the requires service and repository to build the handlers +// This functons wraps the whole handler package and wraps it into one part so +// its sub package don't leak in other places. +func MountHandler( +	gitService *service.GitService, +	configRepo *serverconfig.ConfigurationRepository, +) (http.Handler, error) { +	var ( +		gitHandler   = git.NewGitHandler(gitService) +		aboutHandler = about.NewAboutHandler(configRepo) +		configHander = config.ConfigFile(configRepo) +	) + +	staticHandler, err := static.NewStaticHander("/static/") +	if err != nil { +		return nil, err +	} + +	mux := http.NewServeMux() +	mux.Handle("/static/", staticHandler) +	mux.HandleFunc("/config", configHander) +	mux.HandleFunc("/about", aboutHandler.About) +	mux.HandleFunc("/", gitHandler.List) +	return mux, nil +}  | 
