Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
72
pkg/validator/vin.go
Normal file
72
pkg/validator/vin.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package validator
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/pkg/errors"
|
||||
"fiskerinc.com/modules/vindecoder"
|
||||
)
|
||||
|
||||
func validateVIN(fl validator.FieldLevel) bool {
|
||||
ok := ValidateVINSimple(fl.Field().String())
|
||||
|
||||
return ok
|
||||
}
|
||||
|
||||
func validateVINs(fl validator.FieldLevel) bool {
|
||||
vins := strings.Split(fl.Field().String(), ",")
|
||||
|
||||
for _, vin := range vins {
|
||||
ok := vindecoder.ValidateVINSimple(vin)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
ok = vindecoder.VerifyVinCheckDigit(vin)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func validateVINSuffix(fl validator.FieldLevel) bool {
|
||||
ok, err := ValidateVINSuffixSimple(fl.Field().String())
|
||||
|
||||
return ok && err == nil
|
||||
}
|
||||
|
||||
func ValidateVINSuffixSimple(vin string) (bool, error) {
|
||||
matched, err := regexp.Match(`^[a-hj-npr-zA-HJ-NPR-Z0-9]{7}$`, []byte(vin))
|
||||
if err != nil {
|
||||
return matched, errors.WithStack(err)
|
||||
}
|
||||
return matched, nil
|
||||
}
|
||||
|
||||
func validateICCID(fl validator.FieldLevel) bool {
|
||||
ok, err := ValidateICCIDSimple(fl.Field().String())
|
||||
|
||||
return ok && err == nil
|
||||
}
|
||||
|
||||
func ValidateICCIDSimple(iccid string) (bool, error) {
|
||||
matched, err := regexp.Match(`^[0-9]{5,50}F{0,1}$`, []byte(iccid))
|
||||
if err != nil {
|
||||
return matched, errors.Wrapf(err, "")
|
||||
}
|
||||
|
||||
return matched, nil
|
||||
}
|
||||
|
||||
func validateVinCheckDigit(fl validator.FieldLevel) bool {
|
||||
var vin = fl.Field().String()
|
||||
return vindecoder.VerifyVinCheckDigit(vin)
|
||||
}
|
||||
|
||||
func ValidateVINSimple(vin string) (valid bool) {
|
||||
return vindecoder.ValidateVINSimple(vin)
|
||||
}
|
||||
Reference in New Issue
Block a user