Files
CrimsonandGitHub ad704e958b feat(polling): allow system-wide polling default to be configured via env variable (#615)
* Manage configuration of polling period in connectors manager and enable override via env variables

* Treat connector validation errors as http 4xx

* Perform strict config validation only if connector being loaded for install or update

* Add flags to configure notification outbox schedules

* Only configure outbox schedule creation in worker

* Improve manager config validation test coverage
2025-12-08 09:32:29 +00:00

45 lines
1.5 KiB
Go

package v3
import (
"net/http"
"github.com/formancehq/go-libs/v3/api"
"github.com/formancehq/payments/internal/api/common"
"github.com/formancehq/payments/internal/api/services"
"github.com/formancehq/payments/internal/connectors"
"github.com/formancehq/payments/internal/connectors/engine"
"github.com/formancehq/payments/internal/storage"
"github.com/pkg/errors"
)
const (
ErrValidation = "VALIDATION"
ErrInvalidID = "INVALID_ID"
ErrMissingOrInvalidBody = "MISSING_OR_INVALID_BODY"
ErrUniqueReference = "CONFLICT"
ErrConnectorCapabilityNotSupported = "CONNECTOR_CAPABILITY_NOT_SUPPORTED"
)
func handleServiceErrors(w http.ResponseWriter, r *http.Request, err error) {
var capabilityNotSupported *engine.ErrConnectorCapabilityNotSupported
switch {
case errors.Is(err, storage.ErrDuplicateKeyValue):
api.BadRequest(w, ErrUniqueReference, err)
case errors.Is(err, storage.ErrNotFound):
api.NotFound(w, err)
case errors.Is(err, storage.ErrForeignKeyViolation):
api.BadRequest(w, ErrValidation, errors.Cause(err))
case errors.Is(err, storage.ErrValidation):
api.BadRequest(w, ErrValidation, err)
case errors.Is(err, services.ErrValidation), errors.Is(err, connectors.ErrValidation):
api.BadRequest(w, ErrValidation, err)
case errors.Is(err, services.ErrNotFound):
api.NotFound(w, err)
case errors.As(err, &capabilityNotSupported):
api.BadRequest(w, ErrConnectorCapabilityNotSupported, err)
default:
common.InternalServerError(w, r, err)
}
}