Skip to content

Commit

Permalink
Use mount but not register for chi routes (go-gitea#13555)
Browse files Browse the repository at this point in the history
* Use mount but not register for chi routes

* Fix test

* Fix test

* Fix test

* Fix comment

* turn back unnecessary change

* Remove the timout middleware since some operations may spend much time.
  • Loading branch information
lunny authored Nov 16, 2020
1 parent 8c2b5fe commit 586bfb9
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 16 deletions.
5 changes: 3 additions & 2 deletions cmd/web.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,10 @@ func runWeb(ctx *cli.Context) error {
return err
}
}
// Set up Macaron
// Set up Chi routes
c := routes.NewChi()
routes.RegisterRoutes(c)
c.Mount("/", routes.NormalRoutes())
routes.DelegateToMacaron(c)

err := listen(c, true)
<-graceful.GetManager().Done()
Expand Down
3 changes: 2 additions & 1 deletion contrib/pr/checkout.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ func runPR() {
external.RegisterParsers()
markup.Init()
c := routes.NewChi()
routes.RegisterRoutes(c)
c.Mount("/", routes.NormalRoutes())
routes.DelegateToMacaron(c)

log.Printf("[PR] Ready for testing !\n")
log.Printf("[PR] Login with user1, user2, user3, ... with pass: password\n")
Expand Down
6 changes: 4 additions & 2 deletions integrations/create_no_session_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ func TestSessionFileCreation(t *testing.T) {
defer func() {
setting.SessionConfig.ProviderConfig = oldSessionConfig
c = routes.NewChi()
routes.RegisterRoutes(c)
c.Mount("/", routes.NormalRoutes())
routes.DelegateToMacaron(c)
}()

var config session.Options
Expand All @@ -84,7 +85,8 @@ func TestSessionFileCreation(t *testing.T) {
setting.SessionConfig.ProviderConfig = string(newConfigBytes)

c = routes.NewChi()
routes.RegisterRoutes(c)
c.Mount("/", routes.NormalRoutes())
routes.DelegateToMacaron(c)

t.Run("NoSessionOnViewIssue", func(t *testing.T) {
defer PrintCurrentTest(t)()
Expand Down
3 changes: 2 additions & 1 deletion integrations/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ func TestMain(m *testing.M) {

initIntegrationTest()
c = routes.NewChi()
routes.RegisterRoutes(c)
c.Mount("/", routes.NormalRoutes())
routes.DelegateToMacaron(c)

// integration test settings...
if setting.Cfg != nil {
Expand Down
10 changes: 6 additions & 4 deletions routers/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,20 @@ func Install(ctx *context.Context) {
form.DbSchema = setting.Database.Schema
form.Charset = setting.Database.Charset

ctx.Data["CurDbOption"] = "MySQL"
var curDBOption = "MySQL"
switch setting.Database.Type {
case "postgres":
ctx.Data["CurDbOption"] = "PostgreSQL"
curDBOption = "PostgreSQL"
case "mssql":
ctx.Data["CurDbOption"] = "MSSQL"
curDBOption = "MSSQL"
case "sqlite3":
if setting.EnableSQLite3 {
ctx.Data["CurDbOption"] = "SQLite3"
curDBOption = "SQLite3"
}
}

ctx.Data["CurDbOption"] = curDBOption

// Application general settings
form.AppName = setting.AppName
form.RepoRootPath = setting.RepoRootPath
Expand Down
21 changes: 15 additions & 6 deletions routers/routes/chi.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
// NewChi creates a chi Router
func NewChi() chi.Router {
c := chi.NewRouter()
c.Use(middleware.RealIP)
if !setting.DisableRouterLog && setting.RouterLogLevel != log.NONE {
if log.GetLogger("router").GetLevel() <= setting.RouterLogLevel {
c.Use(LoggerHandler(setting.RouterLogLevel))
Expand All @@ -195,6 +196,7 @@ func NewChi() chi.Router {
if setting.EnableAccessLog {
setupAccessLogger(c)
}

if setting.ProdMode {
log.Warn("ProdMode ignored")
}
Expand Down Expand Up @@ -233,28 +235,35 @@ func RegisterInstallRoute(c chi.Router) {
})
}

// RegisterRoutes registers gin routes
func RegisterRoutes(c chi.Router) {
// NormalRoutes represents non install routes
func NormalRoutes() http.Handler {
r := chi.NewRouter()

// for health check
c.Head("/", func(w http.ResponseWriter, req *http.Request) {
r.Head("/", func(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusOK)
})

// robots.txt
if setting.HasRobotsTxt {
c.Get("/robots.txt", func(w http.ResponseWriter, req *http.Request) {
r.Get("/robots.txt", func(w http.ResponseWriter, req *http.Request) {
http.ServeFile(w, req, path.Join(setting.CustomPath, "robots.txt"))
})
}

return r
}

// DelegateToMacaron delegates other routes to macaron
func DelegateToMacaron(r chi.Router) {
m := NewMacaron()
RegisterMacaronRoutes(m)

c.NotFound(func(w http.ResponseWriter, req *http.Request) {
r.NotFound(func(w http.ResponseWriter, req *http.Request) {
m.ServeHTTP(w, req)
})

c.MethodNotAllowed(func(w http.ResponseWriter, req *http.Request) {
r.MethodNotAllowed(func(w http.ResponseWriter, req *http.Request) {
m.ServeHTTP(w, req)
})
}

0 comments on commit 586bfb9

Please sign in to comment.