70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
// Copyright 2014 Manu Martinez-Almeida. All rights reserved.
|
|
// Use of this source code is governed by a MIT style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gin
|
|
|
|
// Param is a single URL parameter, consisting of a key and a value.
|
|
type Param struct {
|
|
Key string
|
|
Value string
|
|
}
|
|
|
|
// Params is a Param-slice, as returned by the router.
|
|
// The slice is ordered, the first URL parameter is also the first slice value.
|
|
// It is therefore safe to read values by the index.
|
|
type Params []Param
|
|
|
|
// ByName returns the value of the first Param which key matches the given name.
|
|
// If no matching Param is found, an empty string is returned.
|
|
func (ps Params) ByName(name string) string {
|
|
for _, entry := range ps {
|
|
if entry.Key == name {
|
|
return entry.Value
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type inputHolder struct {
|
|
context *Context
|
|
}
|
|
|
|
func (i inputHolder) FromGET(key string) (va string) {
|
|
va, _ = i.fromGET(key)
|
|
return
|
|
}
|
|
|
|
func (i inputHolder) FromPOST(key string) (va string) {
|
|
va, _ = i.fromPOST(key)
|
|
return
|
|
}
|
|
|
|
func (i inputHolder) Get(key string) string {
|
|
if value, exists := i.fromPOST(key); exists {
|
|
return value
|
|
}
|
|
if value, exists := i.fromGET(key); exists {
|
|
return value
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (i inputHolder) fromGET(key string) (string, bool) {
|
|
req := i.context.Request
|
|
req.ParseForm()
|
|
if values, ok := req.Form[key]; ok && len(values) > 0 {
|
|
return values[0], true
|
|
}
|
|
return "", false
|
|
}
|
|
|
|
func (i inputHolder) fromPOST(key string) (string, bool) {
|
|
req := i.context.Request
|
|
req.ParseForm()
|
|
if values, ok := req.PostForm[key]; ok && len(values) > 0 {
|
|
return values[0], true
|
|
}
|
|
return "", false
|
|
}
|