initial commit 2
This commit is contained in:
130
server/router/routeutils/request.go
Normal file
130
server/router/routeutils/request.go
Normal file
@@ -0,0 +1,130 @@
|
||||
package routeutils
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"strings"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
|
||||
"github.com/labstack/echo"
|
||||
)
|
||||
|
||||
// GetAndValidateIntParam gets the integer param value and validates it, returning a validation error in case it's invalid
|
||||
func GetAndValidateIntParam(c echo.Context, paramName string, errorMessage string) (ID int64, err error) {
|
||||
IDstr := c.Param(paramName)
|
||||
|
||||
if strings.TrimSpace(IDstr) == "" {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
ID, err = strconv.ParseInt(IDstr, 10, 64)
|
||||
if ID == 0 {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetAndValidateIntQueryParam gets the integer param value and validates it, returning a validation error in case it's invalid
|
||||
func GetAndValidateIntQueryParam(c echo.Context, paramName string, errorMessage string) (ID int64, err error) {
|
||||
IDstr := c.QueryParam(paramName)
|
||||
|
||||
if strings.TrimSpace(IDstr) == "" {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
ID, err = strconv.ParseInt(IDstr, 10, 64)
|
||||
if ID == 0 {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetAndValidateFloatParam gets the integer param value and validates it, returning a validation error in case it's invalid
|
||||
func GetAndValidateFloatQueryParam(c echo.Context, paramName string, errorMessage string) (ID float64, err error) {
|
||||
IDstr := c.QueryParam(paramName)
|
||||
|
||||
if strings.TrimSpace(IDstr) == "" {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
ID, err = strconv.ParseFloat(IDstr, 64)
|
||||
if ID == 0 {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetAndValidateStringQueryParam gets the integer param value and validates it, returning a validation error in case it's invalid
|
||||
func GetAndValidateStringQueryParam(c echo.Context, paramName string, errorMessage string) (ID string, err error) {
|
||||
ID = c.QueryParam(paramName)
|
||||
|
||||
if strings.TrimSpace(ID) == "" {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetAndValidateStringParam gets the string param value and validates it, returning a validation error in case it's invalid
|
||||
func GetAndValidateStringParam(c echo.Context, paramName string, errorMessage string) (ID string, err error) {
|
||||
ID = c.Param(paramName)
|
||||
|
||||
if strings.TrimSpace(ID) == "" {
|
||||
err = errors.NewValidationError(paramName, errorMessage)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetPagingParams gets the standard paging params from the URL, returning a validation error in case it's invalid
|
||||
func GetPagingParams(c echo.Context) (page int64, quantity int64) {
|
||||
pg := c.QueryParam("page")
|
||||
ipp := c.QueryParam("quantity")
|
||||
|
||||
page, _ = strconv.ParseInt(pg, 10, 64)
|
||||
quantity, _ = strconv.ParseInt(ipp, 10, 64)
|
||||
|
||||
if page < 1 {
|
||||
page = 1
|
||||
}
|
||||
|
||||
if quantity < 1 || quantity > 1000 {
|
||||
quantity = 10
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetMultipleQueryParam returns a list of values for multiple query params
|
||||
func GetMultipleQueryParam(c echo.Context, paramName string) (retVal []string) {
|
||||
retVal = make([]string, 0)
|
||||
|
||||
for k, param := range map[string][]string(c.QueryParams()) {
|
||||
if k == paramName {
|
||||
for _, value := range param {
|
||||
retVal = append(retVal, value)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// GetMultipleIntQueryParam returns a list of integer values from multiple query params
|
||||
func GetMultipleIntQueryParam(c echo.Context, paramName string) (retVal []int64, err error) {
|
||||
retVal = make([]int64, 0)
|
||||
|
||||
for _, value := range GetMultipleQueryParam(c, paramName) {
|
||||
intValue, err := strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return retVal, errors.Wrap(err)
|
||||
}
|
||||
retVal = append(retVal, intValue)
|
||||
}
|
||||
|
||||
return retVal, nil
|
||||
}
|
||||
Reference in New Issue
Block a user