package aliyun

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

/*
	设置参数。 指定角色的ARN。格式:acs:ram::$accountID:role/$roleName/$RoleSessionName 。  mmm-go@1373671070046453.onaliyun.com
	配置用户 - ram角色权限-oss授权
	$accountID  用户的阿里云账号
	$RoleArn    点到ram角色 具体的权限详情  格式 格式:acs:ram::$accountID:role/$roleName/$RoleSessionName

	1.使用授权账号(mmm-go@1373671070046453.onaliyun.com)登录
	2.RAM访问控制->RAM角色管理->添加权限->为权限设置 oss访问权限
	3.查看角色详情-》ARN( acs:ram::1373671070046453:role/role-oss-sts )需要配置给程序使用
	4.RAM访问控制->用户(mmm-go@1373671070046453.onaliyun.com)->给用户设置角色
*/

/*
	1.前端sts上传需要设置bucket跨域,bucket->权限管理->跨域设置
*/
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"
	request.RoleArn = constant.RoleArn
	// 会话名称
	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,
		"bucket":          constant.BuckName,
		"endpoint":        constant.OssEndPoint,
	}, nil
}