diff --git a/internal/iot/error.go b/internal/iot/error.go index c54eba2d..00c205de 100644 --- a/internal/iot/error.go +++ b/internal/iot/error.go @@ -18,6 +18,7 @@ package iot import ( + "encoding/json" "fmt" iotclient "github.com/arduino/iot-client-go" @@ -32,9 +33,17 @@ func errorDetail(err error) error { } modErr, ok := apiErr.Model().(iotclient.ModelError) + if ok { + return fmt.Errorf("%w: %s", err, modErr.Detail) + } + + body := make(map[string]interface{}) + if bodyErr := json.Unmarshal(apiErr.Body(), &body); bodyErr != nil { + return err + } + detail, ok := body["detail"] if !ok { return err } - - return fmt.Errorf("%w: %s", err, modErr.Detail) + return fmt.Errorf("%w: %v", err, detail) }