package aliyun

import (
	"fmt"
	"github.com/aliyun/alibaba-cloud-sdk-go/services/sts"
	"openapi/pkg/constant"
	"openapi/pkg/infrastructure/log"
)

func DefaultSts() (interface{}, error) {
	//构建一个阿里云客户端, 用于发起请求。
	//构建阿里云客户端时,需要设置AccessKey ID和AccessKey Secret。
	client, err := sts.NewClientWithAccessKey(constant.RegionID, constant.AccessKeyID, constant.AccessKeySecret)
	if err != nil {
		return nil, err
	}

	//构建请求对象。
	request := sts.CreateAssumeRoleRequest()
	request.Scheme = "https"

	//设置参数。 指定角色的ARN。格式:acs:ram::$accountID:role/$roleName/$RoleSessionName 。  mmm-go@1373671070046453.onaliyun.com
	// 配置用户 - ram角色权限-oss授权
	// $accountID  用户的阿里云账号
	// $RoleArn    点到ram角色 具体的权限详情  格式 格式:acs:ram::$accountID:role/$roleName/$RoleSessionName
	request.RoleArn = fmt.Sprintf("acs:ram::1373671070046453:role/role-oss-sts")
	// 会话名称
	request.RoleSessionName = "role-oss-sts-session"

	//发起请求,并得到响应。
	response, e := client.AssumeRole(request)
	if e != nil {
		err = e
		log.Error(e.Error())
	}
	return map[string]interface{}{
		"accessKeySecret": response.Credentials.AccessKeySecret,
		"expiration":      response.Credentials.Expiration,
		"accessKeyId":     response.Credentials.AccessKeyId,
		"securityToken":   response.Credentials.SecurityToken,
	}, nil
}