package response

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"regexp"
	_ "regexp"
)

const (
	APIERROR    = 400
	APIERROR401 = 401
	APIERROR402 = 402
	APIERROR403 = 403
	APIERROR404 = 404
	APISUCCESS  = 200
)

func ApiResult(code int, data interface{}, msg string, c *gin.Context) {
	// 开始时间
	c.JSON(http.StatusOK, Response{
		code,
		data,
		msg,
	})
}

func ApiOk(c *gin.Context) {
	Result(APISUCCESS, map[string]interface{}{}, "操作成功", c)
}

func ApiOkWithMessage(message string, c *gin.Context) {
	Result(APISUCCESS, map[string]interface{}{}, message, c)
}

func ApiOkWithData(data interface{}, c *gin.Context) {
	Result(APISUCCESS, data, "请求成功", c)
}

func ApiOkWithDetailed(data interface{}, message string, c *gin.Context) {
	Result(APISUCCESS, data, message, c)
}

func ApiFail(c *gin.Context) {
	Result(APIERROR, map[string]interface{}{}, "请求失败", c)
}

func ApiFailWithMessage(errorCode int, message string, c *gin.Context) {
	res := regexp.MustCompile("[\u4e00-\u9fa5]").FindAllStringSubmatch(message, -1)

	var result string
	for _, i := range res {
		result += i[0]
	}

	Result(errorCode, map[string]interface{}{}, result, c)
}

func ApiFailWithDetailed(data interface{}, message string, c *gin.Context) {
	Result(APIERROR, data, message, c)
}
