package pay

import (
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk"
	"golib.gaore.com/GaoreGo/gaore-common-sdk-go/sdk/requests"
)

const (
	VERSION = "2024-06-03"
)

var HOST requests.Host = requests.Host{
	Default: "pay.gaore.com",
	Func: func(s string) string {
		var a = map[string]string{
			requests.RELEASE: "pay.gaore.com",
			requests.PRE:     "pay.gaore.com",
			requests.TEST:    "pay.gaore.com",
		}
		return a[s]
	},
}

type Client struct {
	sdk.Client
}

func NewClient() (client *Client, err error) {
	client = new(Client)
	err = client.Init()
	return
}

func (c *Client) ComplaintReply(req *ComplaintReplyRequest) (response *ComplaintReplyResponse, err error) {
	response = CreateComplaintReplyResponse()
	err = c.DoAction(req, response)
	return
}

func (c *Client) ComplaintComplete(req *ComplaintCompleteRequest) (response *ComplaintCompleteResponse, err error) {
	response = CreateComplaintCompleteResponse()
	err = c.DoAction(req, response)
	return
}

func (c *Client) ComplaintUpload(req *ComplaintUploadRequest) (response *ComplaintUploadResponse, err error) {
	response = CreateComplaintUploadResponse()
	err = c.DoAction(req, response)
	return
}

func (c *Client) ComplaintNotifyUrl(req *ComplaintNotifyUrlRequest) (response *ComplaintNotifyUrlResponse, err error) {
	response = CreateComplaintNotifyUrlResponse()
	err = c.DoAction(req, response)
	return
}