aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2024-05-30 18:04:49 +0200
committerGabriel A. Giovanini <mail@gabrielgio.me>2024-05-30 18:04:49 +0200
commitfb45f1f5002ffdb40150333c5a48458b801f3022 (patch)
treee83cab49735599e3adfb4557e229caa2f29ab7a7
parente52226c05fb54dfe41c9bc5ebc6ce1b7ded7e1fe (diff)
downloadcerrado-fb45f1f5002ffdb40150333c5a48458b801f3022.tar.gz
cerrado-fb45f1f5002ffdb40150333c5a48458b801f3022.tar.bz2
cerrado-fb45f1f5002ffdb40150333c5a48458b801f3022.zip
ref: Move to gorilla mux
Go's default mux is very limited while comes to overlapping routes. For example "/{name}/about" conflicts with "/static/" and it throws a panic. In the case I would like static to have precedence over everything else.
-rw-r--r--go.mod1
-rw-r--r--go.sum2
-rw-r--r--pkg/handler/router.go12
3 files changed, 12 insertions, 3 deletions
diff --git a/go.mod b/go.mod
index 5bd4d76..eabf863 100644
--- a/go.mod
+++ b/go.mod
@@ -8,6 +8,7 @@ require (
github.com/go-git/go-git/v5 v5.12.0
github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2
github.com/google/go-cmp v0.6.0
+ github.com/gorilla/mux v1.8.1
github.com/valyala/quicktemplate v1.7.0
golang.org/x/sync v0.7.0
)
diff --git a/go.sum b/go.sum
index 69c34b7..bc82b64 100644
--- a/go.sum
+++ b/go.sum
@@ -51,6 +51,8 @@ github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2 h1:yEt5djSYb4i
github.com/gomarkdown/markdown v0.0.0-20240419095408-642f0ee99ae2/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
+github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
diff --git a/pkg/handler/router.go b/pkg/handler/router.go
index 1150f2f..f73e9fb 100644
--- a/pkg/handler/router.go
+++ b/pkg/handler/router.go
@@ -9,6 +9,7 @@ import (
"git.gabrielgio.me/cerrado/pkg/handler/git"
"git.gabrielgio.me/cerrado/pkg/handler/static"
"git.gabrielgio.me/cerrado/pkg/service"
+ "github.com/gorilla/mux"
)
// Mount handler gets the requires service and repository to build the handlers
@@ -29,11 +30,16 @@ func MountHandler(
return nil, err
}
- mux := http.NewServeMux()
- mux.Handle("/static/", staticHandler)
+ mux := mux.NewRouter()
+
+ mux.PathPrefix("/static").Handler(staticHandler)
+ mux.HandleFunc("/{name}/about", gitHandler.About)
+ mux.HandleFunc("/{name}/summary", gitHandler.Summary)
+ mux.HandleFunc("/{name}/refs", gitHandler.Refs)
+ mux.HandleFunc("/{name}/tree", gitHandler.Tree)
+ mux.HandleFunc("/{name}/log", gitHandler.Log)
mux.HandleFunc("/config", configHander)
mux.HandleFunc("/about", aboutHandler.About)
- mux.HandleFunc("/{name}", gitHandler.Item)
mux.HandleFunc("/", gitHandler.List)
return mux, nil
}