1 Star 0 Fork 0

lipore/plume

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
queryParam.go 2.08 KB
Copy Edit Raw Blame History
lipore authored 2022-06-22 11:40 +08:00 . feat(web, trx): add web and trx module
package web
import (
"errors"
"fmt"
"net/url"
"strconv"
"strings"
"time"
)
type QueryParam url.Values
var ParamNotFoundError = errors.New("param not found")
type QueryParamError struct {
errMsg string
e error
}
func (q *QueryParamError) Error() string {
return q.errMsg
}
func (q *QueryParamError) Unwrap() error {
return q.e
}
func newQueryParamError(msg string, e error) *QueryParamError {
return &QueryParamError{
errMsg: msg,
e: e,
}
}
func (q *QueryParam) Get(key string) string {
vs := (*url.Values)(q)
v := vs.Get(key)
return strings.Trim(v, "\"")
}
func (q *QueryParam) GetTime(key string) (*time.Time, error) {
vs := (*url.Values)(q)
if !vs.Has(key) {
return nil, newQueryParamError(fmt.Sprintf("%s not exist", key), ParamNotFoundError)
}
v := q.Get(key)
t, err := time.Parse(time.RFC3339, v)
if err != nil {
return nil, err
}
return &t, nil
}
func (q *QueryParam) GetFloat(key string) (float64, error) {
vs := (*url.Values)(q)
if !vs.Has(key) {
return 0, newQueryParamError(fmt.Sprintf("%s not exist", key), ParamNotFoundError)
}
v := q.Get(key)
f, err := strconv.ParseFloat(v, 64)
return f, err
}
func (q *QueryParam) GetInt(key string) (int64, error) {
vs := (*url.Values)(q)
if !vs.Has(key) {
return 0, newQueryParamError(fmt.Sprintf("%s not exist", key), ParamNotFoundError)
}
v := q.Get(key)
i, err := strconv.ParseInt(v, 10, 64)
return i, err
}
func (q *QueryParam) GetByte(key string) (byte, error) {
i, err := q.GetInt(key)
if err != nil {
return 0, err
} else {
return byte(i), err
}
}
func (q *QueryParam) GetString(key string) (string, error) {
vs := (*url.Values)(q)
if !vs.Has(key) {
return "", newQueryParamError(fmt.Sprintf("%s not exist", key), ParamNotFoundError)
}
v := q.Get(key)
return v, nil
}
func (q *QueryParam) GetBool(key string) (bool, error) {
vs := (*url.Values)(q)
if !vs.Has(key) {
return false, newQueryParamError(fmt.Sprintf("%s not exist", key), ParamNotFoundError)
}
v := q.Get(key)
i, err := strconv.ParseInt(v, 10, 64)
if err == nil {
return i != 0, nil
}
return v == "true", nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lipore/plume.git
git@gitee.com:lipore/plume.git
lipore
plume
plume
v1.7.10

Search