aboutsummaryrefslogtreecommitdiffstats
path: root/modules/web/route.go
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-06-18 15:59:09 +0800
committerGitHub <noreply@github.com>2023-06-18 09:59:09 +0200
commit4e2f1ee58d1aa49f85c3a28a4f96e915f12bdb21 (patch)
treee2751e1c4673f6a051ef04ca156f428a819fdb66 /modules/web/route.go
parentfc2115b494e9ba7e4cf7a1440404dce53738b514 (diff)
downloadgitea-4e2f1ee58d1aa49f85c3a28a4f96e915f12bdb21.tar.gz
gitea-4e2f1ee58d1aa49f85c3a28a4f96e915f12bdb21.zip
Refactor web package and context package (#25298)
1. The "web" package shouldn't depends on "modules/context" package, instead, let each "web context" register themselves to the "web" package. 2. The old Init/Free doesn't make sense, so simplify it * The ctx in "Init(ctx)" is never used, and shouldn't be used that way * The "Free" is never called and shouldn't be called because the SSPI instance is shared --------- Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'modules/web/route.go')
-rw-r--r--modules/web/route.go24
1 files changed, 12 insertions, 12 deletions
diff --git a/modules/web/route.go b/modules/web/route.go
index d801f1025c..db511aeb18 100644
--- a/modules/web/route.go
+++ b/modules/web/route.go
@@ -7,31 +7,31 @@ import (
"net/http"
"strings"
- "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/web/middleware"
"gitea.com/go-chi/binding"
- chi "github.com/go-chi/chi/v5"
+ "github.com/go-chi/chi/v5"
)
-// Bind binding an obj to a handler
-func Bind[T any](_ T) any {
- return func(ctx *context.Context) {
+// Bind binding an obj to a handler's context data
+func Bind[T any](_ T) http.HandlerFunc {
+ return func(resp http.ResponseWriter, req *http.Request) {
theObj := new(T) // create a new form obj for every request but not use obj directly
- binding.Bind(ctx.Req, theObj)
- SetForm(ctx, theObj)
- middleware.AssignForm(theObj, ctx.Data)
+ data := middleware.GetContextData(req.Context())
+ binding.Bind(req, theObj)
+ SetForm(data, theObj)
+ middleware.AssignForm(theObj, data)
}
}
// SetForm set the form object
-func SetForm(data middleware.ContextDataStore, obj interface{}) {
- data.GetData()["__form"] = obj
+func SetForm(dataStore middleware.ContextDataStore, obj interface{}) {
+ dataStore.GetData()["__form"] = obj
}
// GetForm returns the validate form information
-func GetForm(data middleware.ContextDataStore) interface{} {
- return data.GetData()["__form"]
+func GetForm(dataStore middleware.ContextDataStore) interface{} {
+ return dataStore.GetData()["__form"]
}
// Route defines a route based on chi's router