func()

in azkustodata/kcsb.go [111:182]


func (kcsb *ConnectionStringBuilder) ConnectionString(includeSecrets bool) (string, error) {
	builder := strings.Builder{}

	writeValue := func(k string, v string) error {
		if isEmpty(v) {
			return nil
		}

		keyword, err := keywords.GetKeyword(k)
		if err != nil {
			return err
		}

		builder.WriteString(keyword.Name)
		builder.WriteRune('=')
		if keyword.Secret && !includeSecrets {
			builder.WriteString(SecretReplacement)
		} else {
			builder.WriteString(v)
		}

		builder.WriteRune(';')
		return nil
	}

	if err := writeValue(keywords.DataSource, kcsb.DataSource); err != nil {
		return "", err
	}
	if err := writeValue(keywords.InitialCatalog, kcsb.InitialCatalog); err != nil {
		return "", err
	}
	if kcsb.AadFederatedSecurity {
		if err := writeValue(keywords.FederatedSecurity, "true"); err != nil {
			return "", err
		}
	}
	if err := writeValue(keywords.ApplicationClientId, kcsb.ApplicationClientId); err != nil {
		return "", err
	}
	if err := writeValue(keywords.UserId, kcsb.AadUserID); err != nil {
		return "", err
	}
	if err := writeValue(keywords.AuthorityId, kcsb.AuthorityId); err != nil {
		return "", err
	}
	if err := writeValue(keywords.ApplicationToken, kcsb.ApplicationToken); err != nil {
		return "", err
	}
	if err := writeValue(keywords.UserToken, kcsb.UserToken); err != nil {
		return "", err
	}
	if err := writeValue(keywords.ApplicationKey, kcsb.ApplicationKey); err != nil {
		return "", err
	}
	if kcsb.SendCertificateChain {
		if err := writeValue(keywords.ApplicationCertificateX5C, "true"); err != nil {
			return "", err
		}
	}
	if len(kcsb.ApplicationCertificateBytes) != 0 {
		if err := writeValue(keywords.ApplicationCertificateBlob, base64.StdEncoding.EncodeToString(kcsb.ApplicationCertificateBytes)); err != nil {
			return "", err
		}
	}

	s := builder.String()
	if len(s) > 0 {
		s = s[:len(s)-1] // remove trailing ';'
	}

	return s, nil
}