package middleware

import (
	"net/http"
	"service/api/base"
	"service/api/consts"
	"time"

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

func timeoutHandler(ctx *gin.Context) {
	ctx.AbortWithStatusJSON(http.StatusGatewayTimeout, base.BaseResponse{
		Ret: consts.RetCodeFail,
		Msg: "出了个小问题,请稍后再试~",
	})
}

func TimeoutMiddleware() gin.HandlerFunc {
	return timeout.New(
		timeout.WithTimeout(3000*time.Millisecond),
		timeout.WithHandler(func(c *gin.Context) {
			c.Next()
		}),
		timeout.WithResponse(timeoutHandler),
	)
}