package main import ( "fmt" "gopkg.in/gin-gonic/gin.v1" ) // CORS handles setting up the CORS security headers. func CORS(allowOrigin string) gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Access-Control-Allow-Origin", allowOrigin) c.Writer.Header().Set("Access-Control-Max-Age", "86400") c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PATCH, DELETE, UPDATE") c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") c.Writer.Header().Set("Access-Control-Expose-Headers", "Content-Length") c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") if c.Request.Method == "OPTIONS" { fmt.Println("OPTIONS") c.AbortWithStatus(200) } else { c.Next() } } } // Logger handles some logging. func Logger() gin.HandlerFunc { return func(c *gin.Context) { c.Header("Content-Type", "application/json") c.Next() errors := c.Errors.ByType(gin.ErrorTypeAny) if len(errors) > 0 { c.JSON(-1, errors.JSON()) return } } }