package service

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
	//region "github.com/huaweicloud/huaweicloud-review_service-go-v3/core/region"
	moderation "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/moderation/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/moderation/v3/model"
	moderationRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/moderation/v3/region"
	"youngee_b_api/app/vo"
)

type ContentService struct{}

// 内容审核
func (s ContentService) CheckContent(contentCheckParam *vo.ContentCheckParam) (*string, error) {
	// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；
	// 本示例以ak和sk保存在环境变量中来实现身份验证为例，运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
	ak := "CNN8MCCSJFGHL1MXCJRF"
	sk := "91arFGHyO7RrzXnZIFSPcLSC6y4P4MTKtkq3qLIy"
	projectId := "CNN8MCCSJFGHL1MXCJRF"
	eventType := "article"

	auth := basic.NewCredentialsBuilder().
		WithAk(ak).
		WithSk(sk).
		WithProjectId(projectId).
		Build()

	client := moderation.NewModerationClient(
		moderation.ModerationClientBuilder().
			WithRegion(moderationRegion.ValueOf("cn-north-4")). //把xxx替换成服务所在的区域，例如北京四：cn-north-4。
			WithCredential(auth).
			Build())

	//request := &model.RunTextModerationRequest{}
	//request.EnterpriseProjectId = &projectId
	//databody := &model.TextDetectionDataReq{
	//	Text: contentCheckParam.Summary,
	//}
	//request.Body = &model.TextDetectionReq{
	//	Data:      databody,
	//	EventType: &eventType,
	//}
	//response, err := client.RunTextModeration(request)
	//if err == nil {
	//	fmt.Printf("%+v\n", response)
	//} else {
	//	fmt.Println(err)
	//}
	request := &model.CheckImageModerationRequest{}
	var listCategoriesbody = []string{
		"porn", "terrorism",
	}
	eventType = "head_image"
	urlImageDetectionReq := "https://img-s-msn-com.akamaized.net/tenant/amp/entityid/AA1oXRBY.img?w=640&h=360&m=6"
	request.Body = &model.ImageDetectionReq{
		Url:        &urlImageDetectionReq,
		Categories: &listCategoriesbody,
		EventType:  &eventType,
	}
	response, err := client.CheckImageModeration(request)
	if err == nil {
		fmt.Printf("%+v\n", response)
	} else {
		fmt.Println(err)
	}
	result := response.Result
	fmt.Print(result)

	return nil, nil
}
