mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package context
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/hanzoai/git/modules/base"
|
|
"github.com/hanzoai/git/modules/optional"
|
|
"github.com/hanzoai/git/modules/util"
|
|
)
|
|
|
|
// FormString returns the first value matching the provided key in the form as a string
|
|
// It works the same as http.Request.FormValue:
|
|
// try urlencoded request body first, then query string, then multipart form body
|
|
func (b *Base) FormString(key string, def ...string) string {
|
|
s := b.Req.FormValue(key)
|
|
if s == "" {
|
|
s = util.OptionalArg(def)
|
|
}
|
|
return s
|
|
}
|
|
|
|
// FormStrings returns a values for the key in the form (including query parameters), similar to FormString
|
|
func (b *Base) FormStrings(key string) []string {
|
|
if b.Req.Form == nil {
|
|
if err := b.Req.ParseMultipartForm(32 << 20); err != nil {
|
|
return nil
|
|
}
|
|
}
|
|
if v, ok := b.Req.Form[key]; ok {
|
|
return v
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (b *Base) FormStringInt64s(key string) []int64 {
|
|
vals, _ := base.StringsToInt64s(strings.Split(b.FormString(key), ","))
|
|
return vals
|
|
}
|
|
|
|
// FormTrim returns the first value for the provided key in the form as a space trimmed string
|
|
func (b *Base) FormTrim(key string) string {
|
|
return strings.TrimSpace(b.Req.FormValue(key))
|
|
}
|
|
|
|
// FormInt returns the first value for the provided key in the form as an int
|
|
func (b *Base) FormInt(key string) int {
|
|
v, _ := strconv.Atoi(b.Req.FormValue(key))
|
|
return v
|
|
}
|
|
|
|
// FormInt64 returns the first value for the provided key in the form as an int64
|
|
func (b *Base) FormInt64(key string) int64 {
|
|
v, _ := strconv.ParseInt(b.Req.FormValue(key), 10, 64)
|
|
return v
|
|
}
|
|
|
|
// FormBool returns true if the value for the provided key in the form is "1", "true" or "on"
|
|
func (b *Base) FormBool(key string) bool {
|
|
s := b.Req.FormValue(key)
|
|
v, _ := strconv.ParseBool(s)
|
|
v = v || strings.EqualFold(s, "on")
|
|
return v
|
|
}
|
|
|
|
// FormOptionalBool returns an optional.Some(true) or optional.Some(false) if the value
|
|
// for the provided key exists in the form else it returns optional.None[bool]()
|
|
func (b *Base) FormOptionalBool(key string) optional.Option[bool] {
|
|
value := b.Req.FormValue(key)
|
|
if len(value) == 0 {
|
|
return optional.None[bool]()
|
|
}
|
|
s := b.Req.FormValue(key)
|
|
v, _ := strconv.ParseBool(s)
|
|
v = v || strings.EqualFold(s, "on")
|
|
return optional.Some(v)
|
|
}
|