package api import ( "net/http" "strings" "github.com/gin-gonic/gin" ) func isError(c *gin.Context, err error) bool { if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "details": err.Error(), }) return true } return false } func raiseError(c *gin.Context, errCode int, message string) { c.AbortWithStatusJSON(errCode, gin.H{ "details": message, }) } func raiseBadRequestError(c *gin.Context, message string) { raiseError(c, http.StatusBadRequest, message) } func raiseNotFoundError(c *gin.Context, message string) { raiseError(c, http.StatusNotFound, message) } func raiseInternalError(c *gin.Context, message string) { c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{ "details": "Internal server error. We will we will fix it!", }) } func corsMiddleware() gin.HandlerFunc { allowHeaders := [12]string{ "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "accept", "origin", "Cache-Control", "X-Requested-With", "x-timezone", "Access-Control-Allow-Origin", "Access-Control-Max-Age", } return func(c *gin.Context) { allowOrigin := "*" c.Writer.Header().Set("Access-Control-Allow-Origin", allowOrigin) c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") c.Writer.Header().Set("Access-Control-Allow-Headers", strings.Join(allowHeaders[:], ", ")) c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE") if c.Request.Method == "OPTIONS" { c.AbortWithStatus(http.StatusNoContent) return } c.Next() } }