diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-06-18 15:59:09 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-18 09:59:09 +0200 |
commit | 4e2f1ee58d1aa49f85c3a28a4f96e915f12bdb21 (patch) | |
tree | e2751e1c4673f6a051ef04ca156f428a819fdb66 /modules/web/route.go | |
parent | fc2115b494e9ba7e4cf7a1440404dce53738b514 (diff) | |
download | gitea-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.go | 24 |
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 |