Leon4gr45's picture
Upload folder using huggingface_hub (part 6)
d6f631f verified
Raw
History Blame Contribute Delete
1.24 kB
package http
import (
"context"
"net/http"
"github.com/openmeterio/openmeter/pkg/framework/commonhttp"
"github.com/openmeterio/openmeter/pkg/framework/transport/httptransport/encoder"
"github.com/openmeterio/openmeter/pkg/models"
)
func ValidationErrorEncoder(kind ResourceKind) encoder.ErrorEncoder {
return func(ctx context.Context, err error, w http.ResponseWriter, r *http.Request) bool {
issues, err := models.AsValidationIssues(err)
if err == nil && len(issues) > 0 {
err = validationError{
kind: kind,
issues: issues,
}
return commonhttp.HandleErrorIfTypeMatches[validationError](ctx, http.StatusBadRequest, err, w, validationErrorToExtensions)
}
return false
}
}
var _ error = (*validationError)(nil)
type validationError struct {
kind ResourceKind
issues models.ValidationIssues
}
func (e validationError) Error() string {
return "invalid " + string(e.kind)
}
func validationErrorToExtensions(err validationError) map[string]interface{} {
if len(err.issues) == 0 {
return nil
}
var issues []map[string]interface{}
for _, issue := range err.issues {
issues = append(issues, issue.AsErrorExtension())
}
return map[string]interface{}{
"validationErrors": issues,
}
}