package middleware

import (
	"fengkuangGameServerJob/pkg/app"
	"fengkuangGameServerJob/pkg/errcode"
	"fengkuangGameServerJob/pkg/feishu"
	"github.com/gin-gonic/gin"
	"runtime/debug"
)

func Recovery() gin.HandlerFunc {
	return func(c *gin.Context) {
		defer func() {
			if err := recover(); err != nil {
				debug.PrintStack()
				msg, ok := err.(string)
				var importMsg string
				if ok {
					importMsg = msg
				} else {
					importMsg = string(debug.Stack())
				}
				feishu.NewFeiShu(feishu.DEMO).ImportanceNotify("程序崩溃通知", importMsg)
				app.Failed(c, errcode.ERROR)
				c.Abort()
			}
		}()
		c.Next()
	}
}
