package http_gateway

import (
	"fmt"
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"time"
)

func corsConfig() cors.Config {
	return cors.Config{
		AllowMethods:     []string{"GET", "POST", "OPTIONS"},
		AllowHeaders:     []string{"Content-Type", "Authorization"},
		AllowCredentials: false,
		AllowAllOrigins:  true,
		MaxAge:           12 * time.Hour,
	}
}

func ginLogger(logger *zap.SugaredLogger) gin.HandlerFunc {
	return func(c *gin.Context) {
		start := time.Now()
		path := c.Request.URL.Path
		c.Next()
		cost := time.Since(start)

		logger.Infof(fmt.Sprintf(
			"HTTP Method:%v Code:%v Time:%v IP:%v Path:%v",
			c.Request.Method,
			c.Writer.Status(),
			cost,
			c.ClientIP(),
			path),
		)
	}
}
