package feishu

import (
	"net/http"
)

type Client interface {
	GetRootFolder() (*RootFolderResp, error)
	CreateSheet(req *CreateSheetReq) (*CreateSheetResp, error)
}

func NewClient(appId, appSecret string) *clientImpl {
	return &clientImpl{
		transport: &HttpTransport{
			HttpClient: http.DefaultClient,
			Authenticator: &TenantTokenAuthenticator{
				appId:     appId,
				appSecret: appSecret,
			},
		},
	}
}

type clientImpl struct {
	transport *HttpTransport
}

func (c *clientImpl) GetRootFolder() (*RootFolderResp, error) {
	rootFolder := &RootFolderResp{}
	return rootFolder, c.transport.callGET("https://open.feishu.cn/open-apis/drive/explorer/v2/root_folder/meta", rootFolder)
}

func (c *clientImpl) CreateSheet(req *CreateSheetReq) (*CreateSheetResp, error) {
	ret := &CreateSheetResp{}
	return ret, c.transport.callPOST("https://open.feishu.cn/open-apis/sheets/v3/spreadsheets", req, ret)
}
