func()

in sdk/auth/signers/signer_ecs_ram_role.go [121:166]


func (signer *EcsRamRoleSigner) refreshCredential(response *responses.CommonResponse) (err error) {
	if response.GetHttpStatus() != http.StatusOK {
		return fmt.Errorf("refresh Ecs sts token err, httpStatus: %d, message = %s", response.GetHttpStatus(), response.GetHttpContentString())
	}
	var data interface{}
	err = json.Unmarshal(response.GetHttpContentBytes(), &data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, json.Unmarshal fail: %s", err.Error())
	}
	code, err := jmespath.Search("Code", data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, fail to get Code: %s", err.Error())
	}
	if code.(string) != "Success" {
		return fmt.Errorf("refresh Ecs sts token err, Code is not Success")
	}
	accessKeyId, err := jmespath.Search("AccessKeyId", data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, fail to get AccessKeyId: %s", err.Error())
	}
	accessKeySecret, err := jmespath.Search("AccessKeySecret", data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, fail to get AccessKeySecret: %s", err.Error())
	}
	securityToken, err := jmespath.Search("SecurityToken", data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, fail to get SecurityToken: %s", err.Error())
	}
	expiration, err := jmespath.Search("Expiration", data)
	if err != nil {
		return fmt.Errorf("refresh Ecs sts token err, fail to get Expiration: %s", err.Error())
	}
	if accessKeyId == nil || accessKeySecret == nil || securityToken == nil || expiration == nil {
		return
	}

	expirationTime, err := time.Parse("2006-01-02T15:04:05Z", expiration.(string))
	signer.credentialExpiration = int(expirationTime.Unix() - time.Now().Unix())
	signer.sessionCredential = &SessionCredential{
		AccessKeyId:     accessKeyId.(string),
		AccessKeySecret: accessKeySecret.(string),
		StsToken:        securityToken.(string),
	}

	return
}