package request import ( "encoding/json" "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" "github.com/go-playground/validator/v10" ) type CallerIdentifierRequest struct { CallerIdentifier string `json:"callerIdentifier" validate:"required"` } func (req *CallerIdentifierRequest) Identifier() string { return req.CallerIdentifier } var validate = validator.New(validator.WithRequiredStructEnabled()) func BindingJson[O any](c *mqtt_client.MqttClient, item *router.Item, request any, responseIdentifier response.Identifier, sendFunc response.SendFunc[O]) bool { data := item.GetData() if data != nil && len(data) != 0 { if responseIdentifier != nil { err := json.Unmarshal(data, responseIdentifier) if err != nil { panic(err) } } if request != nil { err := json.Unmarshal(data, request) if err != nil { var zero O sendFunc(c, item, responseIdentifier, zero, err) return false } } } if request != nil { err := validate.Struct(request) if err != nil { var zero O sendFunc(c, item, responseIdentifier, zero, err) return false } } return true }