|
@@ -5,8 +5,11 @@ import (
|
|
|
"git.sxidc.com/go-tools/api_binding/mqtt_binding/mqtt_client"
|
|
|
"git.sxidc.com/go-tools/api_binding/mqtt_binding/mqtt_client/router"
|
|
|
"git.sxidc.com/go-tools/api_binding/mqtt_binding/response"
|
|
|
+ validator "github.com/go-playground/validator/v10"
|
|
|
)
|
|
|
|
|
|
+var validate = validator.New(validator.WithRequiredStructEnabled())
|
|
|
+
|
|
|
func BindingJson[O any](c *mqtt_client.MqttClient, item *router.Item, request any, sendFunc response.SendFunc[O]) bool {
|
|
|
err := json.Unmarshal(item.GetData(), request)
|
|
|
if err != nil {
|
|
@@ -15,5 +18,12 @@ func BindingJson[O any](c *mqtt_client.MqttClient, item *router.Item, request an
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
+ err = validate.Struct(request)
|
|
|
+ if err != nil {
|
|
|
+ var zero O
|
|
|
+ sendFunc(c, item, zero, err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
return true
|
|
|
}
|