func()

in credentials/providers/profile.go [122:165]


func (provider *ProfileCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
	if provider.innerProvider == nil {
		sharedCfgPath := os.Getenv("ALIBABA_CLOUD_CREDENTIALS_FILE")
		if sharedCfgPath == "" {
			homeDir := getHomePath()
			if homeDir == "" {
				err = fmt.Errorf("cannot found home dir")
				return
			}

			sharedCfgPath = path.Join(homeDir, ".alibabacloud/credentials")
		}

		ini, err1 := ini.Load(sharedCfgPath)
		if err1 != nil {
			err = errors.New("ERROR: Can not open file" + err1.Error())
			return
		}

		provider.innerProvider, err = provider.getCredentialsProvider(ini)
		if err != nil {
			return
		}
	}

	innerCC, err := provider.innerProvider.GetCredentials()
	if err != nil {
		return
	}

	providerName := innerCC.ProviderName
	if providerName == "" {
		providerName = provider.innerProvider.GetProviderName()
	}

	cc = &Credentials{
		AccessKeyId:     innerCC.AccessKeyId,
		AccessKeySecret: innerCC.AccessKeySecret,
		SecurityToken:   innerCC.SecurityToken,
		ProviderName:    fmt.Sprintf("%s/%s", provider.GetProviderName(), providerName),
	}

	return
}