diff options
author | 6543 <6543@obermui.de> | 2021-08-11 02:31:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 02:31:13 +0200 |
commit | c4d70a032564f610b7215d3d3973943abbc7395f (patch) | |
tree | 2aa8fe44a1b4d0251a18ae671509d4f2439ed85d /modules | |
parent | 2eeae4edb685b22e926d301465d771fe7a0b0c83 (diff) | |
download | gitea-c4d70a032564f610b7215d3d3973943abbc7395f.tar.gz gitea-c4d70a032564f610b7215d3d3973943abbc7395f.zip |
Rename ctx.Form() to ctx.FormString() and move code into own file (#16571)
Followup from #16562 prepare for #16567
* Rename ctx.Form() to ctx.FormString()
* Reimplement FormX func to need less code and cpu cycles
* Move code into own file
Diffstat (limited to 'modules')
-rw-r--r-- | modules/context/context.go | 36 | ||||
-rw-r--r-- | modules/context/form.go | 231 | ||||
-rw-r--r-- | modules/context/repo.go | 8 |
3 files changed, 31 insertions, 244 deletions
diff --git a/modules/context/context.go b/modules/context/context.go index 041b81c668..3dbc2bb9dc 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -28,7 +28,6 @@ import ( "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/modules/translation" - "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/web/middleware" "code.gitea.io/gitea/services/auth" @@ -287,41 +286,6 @@ func (ctx *Context) Header() http.Header { return ctx.Resp.Header() } -// Form returns request form as string with default -func (ctx *Context) Form(key string, defaults ...string) string { - return (*Forms)(ctx.Req).MustString(key, defaults...) -} - -// FormTrim returns request form as string with default and trimmed spaces -func (ctx *Context) FormTrim(key string, defaults ...string) string { - return (*Forms)(ctx.Req).MustTrimmed(key, defaults...) -} - -// FormStrings returns request form as strings with default -func (ctx *Context) FormStrings(key string, defaults ...[]string) []string { - return (*Forms)(ctx.Req).MustStrings(key, defaults...) -} - -// FormInt returns request form as int with default -func (ctx *Context) FormInt(key string, defaults ...int) int { - return (*Forms)(ctx.Req).MustInt(key, defaults...) -} - -// FormInt64 returns request form as int64 with default -func (ctx *Context) FormInt64(key string, defaults ...int64) int64 { - return (*Forms)(ctx.Req).MustInt64(key, defaults...) -} - -// FormBool returns request form as bool with default -func (ctx *Context) FormBool(key string, defaults ...bool) bool { - return (*Forms)(ctx.Req).MustBool(key, defaults...) -} - -// FormOptionalBool returns request form as OptionalBool with default -func (ctx *Context) FormOptionalBool(key string, defaults ...util.OptionalBool) util.OptionalBool { - return (*Forms)(ctx.Req).MustOptionalBool(key, defaults...) -} - // HandleText handles HTTP status code func (ctx *Context) HandleText(status int, title string) { if (status/100 == 4) || (status/100 == 5) { diff --git a/modules/context/form.go b/modules/context/form.go index e3afad0a90..8d18590973 100644 --- a/modules/context/form.go +++ b/modules/context/form.go @@ -5,237 +5,60 @@ package context import ( - "errors" - "net/http" - "net/url" "strconv" "strings" - "text/template" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/util" ) -// Forms a new enhancement of http.Request -type Forms http.Request - -// Values returns http.Request values -func (f *Forms) Values() url.Values { - return (*http.Request)(f).Form -} - -// String returns request form as string -func (f *Forms) String(key string) (string, error) { - return (*http.Request)(f).FormValue(key), nil -} - -// Trimmed returns request form as string with trimed spaces left and right -func (f *Forms) Trimmed(key string) (string, error) { - return strings.TrimSpace((*http.Request)(f).FormValue(key)), nil +// FormString returns the first value matching the provided key in the form as a string +func (ctx *Context) FormString(key string) string { + return ctx.Req.FormValue(key) } -// Strings returns request form as strings -func (f *Forms) Strings(key string) ([]string, error) { - if (*http.Request)(f).Form == nil { - if err := (*http.Request)(f).ParseMultipartForm(32 << 20); err != nil { - return nil, err +// FormStrings returns a string slice for the provided key from the form +func (ctx *Context) FormStrings(key string) []string { + if ctx.Req.Form == nil { + if err := ctx.Req.ParseMultipartForm(32 << 20); err != nil { + return nil } } - if v, ok := (*http.Request)(f).Form[key]; ok { - return v, nil - } - return nil, errors.New("not exist") -} - -// Escape returns request form as escaped string -func (f *Forms) Escape(key string) (string, error) { - return template.HTMLEscapeString((*http.Request)(f).FormValue(key)), nil -} - -// Int returns request form as int -func (f *Forms) Int(key string) (int, error) { - return strconv.Atoi((*http.Request)(f).FormValue(key)) -} - -// Int32 returns request form as int32 -func (f *Forms) Int32(key string) (int32, error) { - v, err := strconv.ParseInt((*http.Request)(f).FormValue(key), 10, 32) - return int32(v), err -} - -// Int64 returns request form as int64 -func (f *Forms) Int64(key string) (int64, error) { - return strconv.ParseInt((*http.Request)(f).FormValue(key), 10, 64) -} - -// Uint returns request form as uint -func (f *Forms) Uint(key string) (uint, error) { - v, err := strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 64) - return uint(v), err -} - -// Uint32 returns request form as uint32 -func (f *Forms) Uint32(key string) (uint32, error) { - v, err := strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 32) - return uint32(v), err -} - -// Uint64 returns request form as uint64 -func (f *Forms) Uint64(key string) (uint64, error) { - return strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 64) -} - -// Bool returns request form as bool -func (f *Forms) Bool(key string) (bool, error) { - return strconv.ParseBool((*http.Request)(f).FormValue(key)) -} - -// Float32 returns request form as float32 -func (f *Forms) Float32(key string) (float32, error) { - v, err := strconv.ParseFloat((*http.Request)(f).FormValue(key), 64) - return float32(v), err -} - -// Float64 returns request form as float64 -func (f *Forms) Float64(key string) (float64, error) { - return strconv.ParseFloat((*http.Request)(f).FormValue(key), 64) -} - -// MustString returns request form as string with default -func (f *Forms) MustString(key string, defaults ...string) string { - if v := (*http.Request)(f).FormValue(key); len(v) > 0 { + if v, ok := ctx.Req.Form[key]; ok { return v } - if len(defaults) > 0 { - return defaults[0] - } - return "" + return nil } -// MustTrimmed returns request form as string with default -func (f *Forms) MustTrimmed(key string, defaults ...string) string { - return strings.TrimSpace(f.MustString(key, defaults...)) +// FormTrim returns the first value for the provided key in the form as a space trimmed string +func (ctx *Context) FormTrim(key string) string { + return strings.TrimSpace(ctx.Req.FormValue(key)) } -// MustStrings returns request form as strings with default -func (f *Forms) MustStrings(key string, defaults ...[]string) []string { - if (*http.Request)(f).Form == nil { - if err := (*http.Request)(f).ParseMultipartForm(32 << 20); err != nil { - log.Error("ParseMultipartForm: %v", err) - return []string{} - } - } - - if v, ok := (*http.Request)(f).Form[key]; ok { - return v - } - if len(defaults) > 0 { - return defaults[0] - } - return []string{} -} - -// MustEscape returns request form as escaped string with default -func (f *Forms) MustEscape(key string, defaults ...string) string { - if v := (*http.Request)(f).FormValue(key); len(v) > 0 { - return template.HTMLEscapeString(v) - } - if len(defaults) > 0 { - return defaults[0] - } - return "" -} - -// MustInt returns request form as int with default -func (f *Forms) MustInt(key string, defaults ...int) int { - v, err := strconv.Atoi((*http.Request)(f).FormValue(key)) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return v -} - -// MustInt32 returns request form as int32 with default -func (f *Forms) MustInt32(key string, defaults ...int32) int32 { - v, err := strconv.ParseInt((*http.Request)(f).FormValue(key), 10, 32) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return int32(v) -} - -// MustInt64 returns request form as int64 with default -func (f *Forms) MustInt64(key string, defaults ...int64) int64 { - v, err := strconv.ParseInt((*http.Request)(f).FormValue(key), 10, 64) - if len(defaults) > 0 && err != nil { - return defaults[0] - } +// FormInt returns the first value for the provided key in the form as an int +func (ctx *Context) FormInt(key string) int { + v, _ := strconv.Atoi(ctx.Req.FormValue(key)) return v } -// MustUint returns request form as uint with default -func (f *Forms) MustUint(key string, defaults ...uint) uint { - v, err := strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 64) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return uint(v) -} - -// MustUint32 returns request form as uint32 with default -func (f *Forms) MustUint32(key string, defaults ...uint32) uint32 { - v, err := strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 32) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return uint32(v) -} - -// MustUint64 returns request form as uint64 with default -func (f *Forms) MustUint64(key string, defaults ...uint64) uint64 { - v, err := strconv.ParseUint((*http.Request)(f).FormValue(key), 10, 64) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return v -} - -// MustFloat32 returns request form as float32 with default -func (f *Forms) MustFloat32(key string, defaults ...float32) float32 { - v, err := strconv.ParseFloat((*http.Request)(f).FormValue(key), 32) - if len(defaults) > 0 && err != nil { - return defaults[0] - } - return float32(v) -} - -// MustFloat64 returns request form as float64 with default -func (f *Forms) MustFloat64(key string, defaults ...float64) float64 { - v, err := strconv.ParseFloat((*http.Request)(f).FormValue(key), 64) - if len(defaults) > 0 && err != nil { - return defaults[0] - } +// FormInt64 returns the first value for the provided key in the form as an int64 +func (ctx *Context) FormInt64(key string) int64 { + v, _ := strconv.ParseInt(ctx.Req.FormValue(key), 10, 64) return v } -// MustBool returns request form as bool with default -func (f *Forms) MustBool(key string, defaults ...bool) bool { - v, err := strconv.ParseBool((*http.Request)(f).FormValue(key)) - if len(defaults) > 0 && err != nil { - return defaults[0] - } +// FormBool returns true if the value for the provided key in the form is "1" or "true" +func (ctx *Context) FormBool(key string) bool { + v, _ := strconv.ParseBool(ctx.Req.FormValue(key)) return v } -// MustOptionalBool returns request form as OptionalBool with default -func (f *Forms) MustOptionalBool(key string, defaults ...util.OptionalBool) util.OptionalBool { - value := (*http.Request)(f).FormValue(key) +// FormOptionalBool returns an OptionalBoolTrue or OptionalBoolFalse if the value +// for the provided key exists in the form else it returns OptionalBoolNone +func (ctx *Context) FormOptionalBool(key string) util.OptionalBool { + value := ctx.Req.FormValue(key) if len(value) == 0 { return util.OptionalBoolNone } - v, err := strconv.ParseBool((*http.Request)(f).FormValue(key)) - if len(defaults) > 0 && err != nil { - return defaults[0] - } + v, _ := strconv.ParseBool(ctx.Req.FormValue(key)) return util.OptionalBoolOf(v) } diff --git a/modules/context/repo.go b/modules/context/repo.go index abd9ca5481..df71638350 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -346,7 +346,7 @@ func repoAssignment(ctx *Context, repo *models.Repository) { // Check access. if ctx.Repo.Permission.AccessMode == models.AccessModeNone { - if ctx.Form("go-get") == "1" { + if ctx.FormString("go-get") == "1" { EarlyResponseForGoGetMeta(ctx) return } @@ -415,7 +415,7 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { owner, err = models.GetUserByName(userName) if err != nil { if models.IsErrUserNotExist(err) { - if ctx.Form("go-get") == "1" { + if ctx.FormString("go-get") == "1" { EarlyResponseForGoGetMeta(ctx) return } @@ -437,7 +437,7 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { if err == nil { RedirectToRepo(ctx, redirectRepoID) } else if models.IsErrRepoRedirectNotExist(err) { - if ctx.Form("go-get") == "1" { + if ctx.FormString("go-get") == "1" { EarlyResponseForGoGetMeta(ctx) return } @@ -618,7 +618,7 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) { } } - if ctx.Form("go-get") == "1" { + if ctx.FormString("go-get") == "1" { ctx.Data["GoGetImport"] = ComposeGoGetImport(owner.Name, repo.Name) prefix := setting.AppURL + path.Join(owner.Name, repo.Name, "src", "branch", ctx.Repo.BranchName) ctx.Data["GoDocDirectory"] = prefix + "{/dir}" |