package handler

import (
	"acme-mana-server-go/vo"
	"github.com/gin-gonic/gin"
	"github.com/go-acme/lego/v4/log"
)

func GlobalPanicHandler() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		defer func() {
			if err := recover(); err != nil {
				//debug.PrintStack()
				log.Infof("panic: %v", err)
				ctx.JSON(500, vo.Fail(err.(error).Error()))
				ctx.Abort()
			}
		}()
		ctx.Next()
	}
}

func GlobalErrorHandler() gin.HandlerFunc {
	return func(c *gin.Context) {
		c.Next()
		if len(c.Errors) > 0 {
			log.Printf("error: %v", c.Errors)
			c.JSON(500, vo.Fail(c.Errors.String()))
			c.Abort()
		}
	}
}