@backstage/integration
Version:
Helpers for managing integrations towards external systems
70 lines (67 loc) • 2.32 kB
JavaScript
;
const AZURE_HOST = "blob.core.windows.net";
function readAzureBlobStorageIntegrationConfig(config) {
const endpoint = config.getOptionalString("endpoint");
const accountName = config.getString("accountName");
const accountKey = config.getOptionalString("accountKey")?.trim();
const sasToken = config.getOptionalString("sasToken")?.trim();
const connectionString = config.getOptionalString("connectionString")?.trim();
const endpointSuffix = config.getOptionalString("endpointSuffix")?.trim();
let host;
let pathname;
if (endpoint) {
try {
const url = new URL(endpoint);
host = url.host;
pathname = url.pathname;
} catch {
throw new Error(
`invalid azureBlobStorage integration config, endpoint '${endpoint}' is not a valid URL`
);
}
if (pathname !== "/") {
throw new Error(
`invalid azureBlobStorage integration config, endpoints cannot contain path, got '${endpoint}'`
);
}
} else {
host = AZURE_HOST;
}
const aadCredential = config.has("aadCredential") ? {
clientId: config.getString("aadCredential.clientId"),
tenantId: config.getString("aadCredential.tenantId"),
clientSecret: config.getString("aadCredential.clientSecret")?.trim()
} : void 0;
if (accountKey && sasToken) {
throw new Error(
`Invalid Azure Blob Storage config for ${accountName}: Both account key and SAS token cannot be used simultaneously.`
);
}
if (aadCredential && (accountKey || sasToken)) {
throw new Error(
`Invalid Azure Blob Storage config for ${accountName}: Cannot use both Azure AD credentials and account keys/SAS tokens for the same account.`
);
}
return {
host,
endpoint,
accountName,
accountKey,
sasToken,
connectionString,
endpointSuffix,
aadCredential
};
}
function readAzureBlobStorageIntegrationConfigs(configs) {
const result = configs.map(readAzureBlobStorageIntegrationConfig);
if (!result.some((c) => c.host === AZURE_HOST)) {
result.push({
host: AZURE_HOST
});
}
return result;
}
exports.readAzureBlobStorageIntegrationConfig = readAzureBlobStorageIntegrationConfig;
exports.readAzureBlobStorageIntegrationConfigs = readAzureBlobStorageIntegrationConfigs;
//# sourceMappingURL=config.cjs.js.map