package cs

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

const (
	VERSION = "2025-06-10"
)

var HOST = requests.Host{
	Default: "cs",
}

type Client struct {
	sdk.Client
}

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

func (client *Client) GetFaq(req *GetFaqRequest) (resp *GetFaqResponse, err error) {
	resp = CreateGetFaqResponse()
	err = client.DoAction(req, resp)
	return
}

func (client *Client) GetUserInfo(req *GetUserInfoRequest) (resp *GetUserInfoResponse, err error) {
	resp = CreateGetUserInfoResponse()
	err = client.DoAction(req, resp)
	return
}

func (client *Client) GetCsUserRoleList(req *GetUserRoleListRequest) (resp *GetUserRoleListResponse, err error) {
	resp = CreateGetUserRoleListResponse()
	err = client.DoAction(req, resp)
	return
}

func (client *Client) GetUserServerList(req *GetUserServerListRequest) (resp *GetUserServerListResponse, err error) {
	resp = CreateGetUserServerListResponse()
	err = client.DoAction(req, resp)
	return
}

func (client *Client) SendSmsCode(req *SendSmsRequest) (resp *SendSmsResponse, err error) {
	resp = CreateSendSmsResponse()
	err = client.DoAction(req, resp)
	return
}

func (client *Client) Upload(req *UploadRequest) (resp *UploadResponse, err error) {
	// check file stream
	if req.FileStream == nil {
		err = errors.New("stream is empty")
		return
	}
	// 必须设置content
	req.SetContent(req.FileStream)
	resp = CreateUploadResponse()
	err = client.DoAction(req, resp)
	return
}