@azure/service-bus
Version:
Azure Service Bus SDK for JavaScript
42 lines • 2.01 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
import { parseConnectionString } from "@azure/core-amqp";
/**
* Parses given connection string into the different properties applicable to Azure Service Bus.
* The properties are useful to then construct a ServiceBusClient.
* @param connectionString - The connection string associated with the Shared Access Policy created
* for the Service Bus namespace, queue or topic.
*/
export function parseServiceBusConnectionString(connectionString) {
const parsedResult = parseConnectionString(connectionString);
if (!parsedResult.Endpoint) {
throw new Error("Connection string should have an Endpoint key.");
}
if (parsedResult.SharedAccessSignature) {
if (parsedResult.SharedAccessKey || parsedResult.SharedAccessKeyName) {
throw new Error("Connection string cannot have both SharedAccessSignature and SharedAccessKey keys.");
}
}
else if (parsedResult.SharedAccessKey && !parsedResult.SharedAccessKeyName) {
throw new Error("Connection string with SharedAccessKey should have SharedAccessKeyName.");
}
else if (!parsedResult.SharedAccessKey && parsedResult.SharedAccessKeyName) {
throw new Error("Connection string with SharedAccessKeyName should have SharedAccessKey as well.");
}
const output = {
fullyQualifiedNamespace: (parsedResult.Endpoint.match(".*://([^/]*)") || [])[1],
endpoint: parsedResult.Endpoint,
};
if (parsedResult.EntityPath) {
output.entityPath = parsedResult.EntityPath;
}
if (parsedResult.SharedAccessSignature) {
output.sharedAccessSignature = parsedResult.SharedAccessSignature;
}
if (parsedResult.SharedAccessKey && parsedResult.SharedAccessKeyName) {
output.sharedAccessKey = parsedResult.SharedAccessKey;
output.sharedAccessKeyName = parsedResult.SharedAccessKeyName;
}
return output;
}
//# sourceMappingURL=connectionStringUtils.js.map