From daf85f06f8c7e35f05639812dd8f45a5b7a731bb Mon Sep 17 00:00:00 2001 From: Jianbo Feng Date: Wed, 17 Dec 2014 15:23:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Support=20default=20value=20for=20controlle?= =?UTF-8?q?r=E2=80=99s=20params=20get?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller.go | 127 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 102 insertions(+), 25 deletions(-) diff --git a/controller.go b/controller.go index 72ba323b..71e836fc 100644 --- a/controller.go +++ b/controller.go @@ -364,66 +364,143 @@ func (c *Controller) ParseForm(obj interface{}) error { } // GetString returns the input value by key string. -func (c *Controller) GetString(key string) string { - return c.Ctx.Input.Query(key) +func (c *Controller) GetString(key string, def ...string) string { + var defv string + if len(def) > 0 { + defv = def[0] + } + + if v := c.Ctx.Input.Query(key); v != "" { + return v + } else { + return defv + } } // GetStrings returns the input string slice by key string. // it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection. -func (c *Controller) GetStrings(key string) []string { +func (c *Controller) GetStrings(key string, def ...[]string) []string { + var defv []string + if len(def) > 0 { + defv = def[0] + } + f := c.Input() if f == nil { - return []string{} + return defv } + vs := f[key] if len(vs) > 0 { return vs + } else { + return defv } - return []string{} } // GetInt returns input as an int -func (c *Controller) GetInt(key string) (int, error) { - return strconv.Atoi(c.Ctx.Input.Query(key)) +func (c *Controller) GetInt(key string, def ...int) (int, error) { + var defv int + if len(def) > 0 { + defv = def[0] + } + + if strv := c.Ctx.Input.Query(key); strv != "" { + return strconv.Atoi(strv) + } else { + return defv, nil + } } // GetInt8 return input as an int8 -func (c *Controller) GetInt8(key string) (int8, error) { - i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 8) - i8 := int8(i64) +func (c *Controller) GetInt8(key string, def ...int8) (int8, error) { + var defv int8 + if len(def) > 0 { + defv = def[0] + } - return i8, err + if strv := c.Ctx.Input.Query(key); strv != "" { + i64, err := strconv.ParseInt(strv, 10, 8) + i8 := int8(i64) + return i8, err + } else { + return defv, nil + } } // GetInt16 returns input as an int16 -func (c *Controller) GetInt16(key string) (int16, error) { - i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 16) - i16 := int16(i64) +func (c *Controller) GetInt16(key string, def ...int16) (int16, error) { + var defv int16 + if len(def) > 0 { + defv = def[0] + } - return i16, err + if strv := c.Ctx.Input.Query(key); strv != "" { + i64, err := strconv.ParseInt(strv, 10, 16) + i16 := int16(i64) + + return i16, err + } else { + return defv, nil + } } // GetInt32 returns input as an int32 -func (c *Controller) GetInt32(key string) (int32, error) { - i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 32) - i32 := int32(i64) +func (c *Controller) GetInt32(key string, def ...int32) (int32, error) { + var defv int32 + if len(def) > 0 { + defv = def[0] + } - return i32, err + if strv := c.Ctx.Input.Query(key); strv != "" { + i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 32) + i32 := int32(i64) + return i32, err + } else { + return defv, nil + } } // GetInt64 returns input value as int64. -func (c *Controller) GetInt64(key string) (int64, error) { - return strconv.ParseInt(c.Ctx.Input.Query(key), 10, 64) +func (c *Controller) GetInt64(key string, def ...int64) (int64, error) { + var defv int64 + if len(def) > 0 { + defv = def[0] + } + + if strv := c.Ctx.Input.Query(key); strv != "" { + return strconv.ParseInt(strv, 10, 64) + } else { + return defv, nil + } } // GetBool returns input value as bool. -func (c *Controller) GetBool(key string) (bool, error) { - return strconv.ParseBool(c.Ctx.Input.Query(key)) +func (c *Controller) GetBool(key string, def ...bool) (bool, error) { + var defv bool + if len(def) > 0 { + defv = def[0] + } + + if strv := c.Ctx.Input.Query(key); strv != "" { + return strconv.ParseBool(strv) + } else { + return defv, nil + } } // GetFloat returns input value as float64. -func (c *Controller) GetFloat(key string) (float64, error) { - return strconv.ParseFloat(c.Ctx.Input.Query(key), 64) +func (c *Controller) GetFloat(key string, def ...float64) (float64, error) { + var defv float64 + if len(def) > 0 { + defv = def[0] + } + + if strv := c.Ctx.Input.Query(key); strv != "" { + return strconv.ParseFloat(c.Ctx.Input.Query(key), 64) + } else { + return defv, nil + } } // GetFile returns the file data in file upload field named as key. From d2c5daa5ee1dc8030a2ac0e971fead28e2359b4f Mon Sep 17 00:00:00 2001 From: Jianbo Feng Date: Fri, 19 Dec 2014 15:28:18 +0800 Subject: [PATCH 2/2] Update comments for controller's GetXXX functions --- controller.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/controller.go b/controller.go index 71e836fc..6f621a12 100644 --- a/controller.go +++ b/controller.go @@ -363,7 +363,7 @@ func (c *Controller) ParseForm(obj interface{}) error { return ParseForm(c.Input(), obj) } -// GetString returns the input value by key string. +// GetString returns the input value by key string or the default value while it's present and input is blank func (c *Controller) GetString(key string, def ...string) string { var defv string if len(def) > 0 { @@ -377,7 +377,7 @@ func (c *Controller) GetString(key string, def ...string) string { } } -// GetStrings returns the input string slice by key string. +// GetStrings returns the input string slice by key string or the default value while it's present and input is blank // it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection. func (c *Controller) GetStrings(key string, def ...[]string) []string { var defv []string @@ -398,7 +398,7 @@ func (c *Controller) GetStrings(key string, def ...[]string) []string { } } -// GetInt returns input as an int +// GetInt returns input as an int or the default value while it's present and input is blank func (c *Controller) GetInt(key string, def ...int) (int, error) { var defv int if len(def) > 0 { @@ -412,7 +412,7 @@ func (c *Controller) GetInt(key string, def ...int) (int, error) { } } -// GetInt8 return input as an int8 +// GetInt8 return input as an int8 or the default value while it's present and input is blank func (c *Controller) GetInt8(key string, def ...int8) (int8, error) { var defv int8 if len(def) > 0 { @@ -428,7 +428,7 @@ func (c *Controller) GetInt8(key string, def ...int8) (int8, error) { } } -// GetInt16 returns input as an int16 +// GetInt16 returns input as an int16 or the default value while it's present and input is blank func (c *Controller) GetInt16(key string, def ...int16) (int16, error) { var defv int16 if len(def) > 0 { @@ -445,7 +445,7 @@ func (c *Controller) GetInt16(key string, def ...int16) (int16, error) { } } -// GetInt32 returns input as an int32 +// GetInt32 returns input as an int32 or the default value while it's present and input is blank func (c *Controller) GetInt32(key string, def ...int32) (int32, error) { var defv int32 if len(def) > 0 { @@ -461,7 +461,7 @@ func (c *Controller) GetInt32(key string, def ...int32) (int32, error) { } } -// GetInt64 returns input value as int64. +// GetInt64 returns input value as int64 or the default value while it's present and input is blank. func (c *Controller) GetInt64(key string, def ...int64) (int64, error) { var defv int64 if len(def) > 0 { @@ -475,7 +475,7 @@ func (c *Controller) GetInt64(key string, def ...int64) (int64, error) { } } -// GetBool returns input value as bool. +// GetBool returns input value as bool or the default value while it's present and input is blank. func (c *Controller) GetBool(key string, def ...bool) (bool, error) { var defv bool if len(def) > 0 { @@ -489,7 +489,7 @@ func (c *Controller) GetBool(key string, def ...bool) (bool, error) { } } -// GetFloat returns input value as float64. +// GetFloat returns input value as float64 or the default value while it's present and input is blank. func (c *Controller) GetFloat(key string, def ...float64) (float64, error) { var defv float64 if len(def) > 0 {