[#15] Use extended error response

Signed-off-by: Denis Kirillov <denis@nspcc.ru>
This commit is contained in:
Denis Kirillov 2022-07-07 15:59:38 +03:00 committed by Alex Vanin
parent e28c6e5375
commit 9fba8d7f23
22 changed files with 528 additions and 174 deletions

View file

@ -2,10 +2,12 @@ package util
import (
"encoding/hex"
"errors"
"fmt"
sessionv2 "github.com/nspcc-dev/neofs-api-go/v2/session"
"github.com/nspcc-dev/neofs-rest-gw/gen/models"
apistatus "github.com/nspcc-dev/neofs-sdk-go/client/status"
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
"github.com/nspcc-dev/neofs-sdk-go/eacl"
"github.com/nspcc-dev/neofs-sdk-go/object"
@ -456,3 +458,26 @@ func NewSuccessResponse() *models.SuccessResponse {
Success: NewBool(true),
}
}
// NewErrorResponse forms model.ErrorResponse.
func NewErrorResponse(err error) *models.ErrorResponse {
var code int64
t := models.ErrorTypeGW
if status, ok := unwrapErr(err).(apistatus.StatusV2); ok {
code = int64(status.ToStatusV2().Code())
t = models.ErrorTypeAPI
}
return &models.ErrorResponse{
Code: code,
Message: NewString(err.Error()),
Type: models.NewErrorType(t),
}
}
func unwrapErr(err error) error {
for e := errors.Unwrap(err); e != nil; e = errors.Unwrap(err) {
err = e
}
return err
}