package middleware

import (
	"net/http"

	"github.com/labstack/echo/v4"

	"github.com/pingcap/test-infra/common/errors"
)

func StatusErrorHandling(err error, c echo.Context) {
	if err != nil {
		switch e := err.(type) {
		case errors.StatusError:
			if err := c.JSON(int(e.Code), e); err != nil {
				c.Logger().Error(err)
			}
		case *errors.StatusError:
			if err := c.JSON(int(e.Code), e); err != nil {
				c.Logger().Error(err)
			}
		default:
			if err := c.String(http.StatusInternalServerError, e.Error()); err != nil {
				c.Logger().Error(err)
			}
		}
	}
}
