From e7b93b8b15fb67d78b1f57d46a75ee38d053b560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ortega?= Date: Thu, 1 Mar 2018 14:46:36 -0500 Subject: [PATCH] Create generic.go --- generic.go | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 generic.go diff --git a/generic.go b/generic.go new file mode 100644 index 0000000..ae3420d --- /dev/null +++ b/generic.go @@ -0,0 +1,60 @@ +// This package parse a http request from datatables (jQuery plugin) to a friendly structure +// More details in https://github.com/saulortega/datatables +// import "github.com/saulortega/datatables" + +package datatables + +import ( + "errors" + "net/http" + "strconv" + "strings" +) + +//Parameter to string +func ptos(r *http.Request, p string) (string, error) { + var s = strings.TrimSpace(r.FormValue(p)) + var e error + + if _, exte := r.Form[p]; !exte { + e = errors.New("«" + p + "» parameter not received") + } + + return s, e +} + +//Parameter to string; error on empty +func ptosNoEmpty(r *http.Request, p string) (string, error) { + s, e := ptos(r, p) + if s == "" && e == nil { + e = errors.New("«" + p + "» parameter empty") + } + + return s, e +} + +//Parameter to int +func ptoi(r *http.Request, p string) (int, error) { + var i int + s, e := ptosNoEmpty(r, p) + if e != nil { + return i, e + } + + i, e = strconv.Atoi(s) + + return i, e +} + +//Parameter to bool +func ptob(r *http.Request, p string) (bool, error) { + var b bool + s, e := ptosNoEmpty(r, p) + if e != nil { + return b, e + } + + b, e = strconv.ParseBool(s) + + return b, e +}