request.go 796 B

1234567891011121314151617181920212223242526272829303132
  1. package request
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-tools/api_binding/mqtt_binding/mqtt_client"
  5. "git.sxidc.com/go-tools/api_binding/mqtt_binding/mqtt_client/router"
  6. "git.sxidc.com/go-tools/api_binding/mqtt_binding/response"
  7. validator "github.com/go-playground/validator/v10"
  8. )
  9. var validate = validator.New(validator.WithRequiredStructEnabled())
  10. func BindingJson[O any](c *mqtt_client.MqttClient, item *router.Item, request any, sendFunc response.SendFunc[O]) bool {
  11. data := item.GetData()
  12. if data != nil && len(data) != 0 {
  13. err := json.Unmarshal(data, request)
  14. if err != nil {
  15. var zero O
  16. sendFunc(c, item, zero, err)
  17. return false
  18. }
  19. }
  20. err := validate.Struct(request)
  21. if err != nil {
  22. var zero O
  23. sendFunc(c, item, zero, err)
  24. return false
  25. }
  26. return true
  27. }