package sso

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

const (
	VERSION = "2020-08-07"
)

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

type Client struct {
	sdk.Client
}

func (c *Client) CodeAuth(req *CodeAuthRequest) (response *CodeAuthResponse, err error) {
	response = CreateCodeAuthResponse()
	err = c.DoAction(req, response)
	return
}

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

func (c *Client) RefreshToken(req *RefreshTokenRequest) (response *RefreshTokenResponse, err error) {
	response = CreateRefreshTokenResponse()
	err = c.DoAction(req, response)
	return
}

func (c *Client) SearchUser(req *SearchUserRequest) (response *SearchUserResponse, err error) {
	response = CreateSearchUserResponse()
	err = c.DoAction(req, response)
	return
}

func NewClientWithAccessKey(accesskey, secrect, source string) (client *Client, err error) {
	client = &Client{}
	err = client.InitWithAccessKey(accesskey, secrect, source)
	return
}