package v1

import (
	"encoding/json"

	"github.com/gin-gonic/gin"
	"github.com/pingcap-inc/pinsights/pkg/util/jsonc"
)

type ValidateSrv interface {
	Validate(c *gin.Context, eventStr string) (*EchoData, error)
}

type validateService struct{}

var _ ValidateSrv = (*validateService)(nil)

func newValidateSrv(srv *service) *validateService {
	return &validateService{}
}

type EchoData struct {
	Challenge string `json:"challenge"`
}

func (u *validateService) Validate(c *gin.Context, eventStr string) (*EchoData, error) {
	var dd EchoData
	if err := json.Unmarshal(jsonc.ConvertJSON2Camel([]byte(eventStr)), &dd); err != nil {
		return nil, err
	}

	return &EchoData{
		Challenge: dd.Challenge,
	}, nil
}
