Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename ctx.Form() to ctx.FormString() and move code into own file #16571

Merged
merged 21 commits into from
Aug 11, 2021
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
de47d7a
Rename ctx.Form() to ctx.FormString()
6543 Jul 29, 2021
ba9a3df
move ctx.FormX to own file and delete unused code
6543 Jul 29, 2021
e8e335f
Update modules/context/form.go
6543 Jul 29, 2021
275780a
revert unrelated change
6543 Jul 29, 2021
a7e0c9f
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Jul 29, 2021
bffe40d
enhance func desc
6543 Jul 29, 2021
e8cbded
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Jul 29, 2021
d86ceee
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Jul 29, 2021
9195706
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 1, 2021
a9f6723
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 1, 2021
a91a0b3
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 2, 2021
86d3ec0
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 4, 2021
1e1da67
Apply suggestions from code review
6543 Aug 4, 2021
a71e28e
format fix
zeripath Aug 4, 2021
1e0eac2
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 4, 2021
e83e9ac
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 4, 2021
ab30a6f
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 5, 2021
8e3fb62
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 5, 2021
1e4f5e1
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 8, 2021
03b6dea
Merge branch 'master' into followup-from-16562-prepare-for-16567
6543 Aug 10, 2021
81cdb2a
Merge branch 'main' into followup-from-16562-prepare-for-16567
6543 Aug 11, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 0 additions & 36 deletions modules/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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) {
Expand Down
231 changes: 27 additions & 204 deletions modules/context/form.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 fist value matching a specific key in form as string
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 by key from form
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 space trimmed fist value matching a specific key in form as string
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 fist value matching a specific key in form as int
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 fist value matching a specific key in form as int64
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 value matching a specific key in form "1" or "true"
6543 marked this conversation as resolved.
Show resolved Hide resolved
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 value for key exist
// else it return OptionalBoolNone
6543 marked this conversation as resolved.
Show resolved Hide resolved
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)
}
8 changes: 4 additions & 4 deletions modules/context/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand Down Expand Up @@ -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}"
Expand Down
2 changes: 1 addition & 1 deletion routers/api/v1/admin/adopt.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func ListUnadoptedRepositories(ctx *context.APIContext) {
// "$ref": "#/responses/forbidden"

listOptions := utils.GetListOptions(ctx)
repoNames, count, err := repository.ListUnadoptedRepositories(ctx.Form("query"), &listOptions)
repoNames, count, err := repository.ListUnadoptedRepositories(ctx.FormString("query"), &listOptions)
if err != nil {
ctx.InternalServerError(err)
}
Expand Down
2 changes: 1 addition & 1 deletion routers/api/v1/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ import (

func sudo() func(ctx *context.APIContext) {
return func(ctx *context.APIContext) {
sudo := ctx.Form("sudo")
sudo := ctx.FormString("sudo")
if len(sudo) == 0 {
sudo = ctx.Req.Header.Get("Sudo")
}
Expand Down
4 changes: 2 additions & 2 deletions routers/api/v1/notify/repo.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func ReadRepoNotifications(ctx *context.APIContext) {
// "$ref": "#/responses/empty"

lastRead := int64(0)
qLastRead := strings.Trim(ctx.Form("last_read_at"), " ")
qLastRead := strings.Trim(ctx.FormString("last_read_at"), " ")
if len(qLastRead) > 0 {
tmpLastRead, err := time.Parse(time.RFC3339, qLastRead)
if err != nil {
Expand Down Expand Up @@ -200,7 +200,7 @@ func ReadRepoNotifications(ctx *context.APIContext) {
return
}

targetStatus := statusStringToNotificationStatus(ctx.Form("to-status"))
targetStatus := statusStringToNotificationStatus(ctx.FormString("to-status"))
if targetStatus == 0 {
targetStatus = models.NotificationStatusRead
}
Expand Down
2 changes: 1 addition & 1 deletion routers/api/v1/notify/threads.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func ReadThread(ctx *context.APIContext) {
return
}

targetStatus := statusStringToNotificationStatus(ctx.Form("to-status"))
targetStatus := statusStringToNotificationStatus(ctx.FormString("to-status"))
if targetStatus == 0 {
targetStatus = models.NotificationStatusRead
}
Expand Down
Loading