package middleware

import (
	"net/http"
	"strings"

	"github.com/gin-gonic/gin"
)

// CORS adds permissive demo CORS headers for any origin.
func CORS() gin.HandlerFunc {
	allowedMethods := "GET, POST, PUT, DELETE, OPTIONS"
	allowedHeaders := "Authorization, Content-Type"

	return func(c *gin.Context) {
		if c.GetHeader("Origin") != "" {
			headers := c.Writer.Header()
			headers.Set("Access-Control-Allow-Origin", "*")
			headers.Set("Access-Control-Allow-Methods", allowedMethods)
			headers.Set("Access-Control-Allow-Headers", allowedHeaders)
		}

		if strings.EqualFold(c.Request.Method, http.MethodOptions) {
			c.AbortWithStatus(http.StatusNoContent)
			return
		}

		c.Next()
	}
}
