in src/commands/azCopy/azCopyLocations.ts [28:52]
export function createAzCopyRemoteLocation(treeItem: BlobTreeItem | BlobDirectoryTreeItem | BlobContainerTreeItem | FileTreeItem | DirectoryTreeItem | FileShareTreeItem, path: string, isFolder?: boolean): IRemoteSasLocation {
if (isFolder && !path.endsWith(posix.sep)) {
path += posix.sep;
}
let resourceUri: string;
if (treeItem instanceof BlobTreeItem || treeItem instanceof BlobDirectoryTreeItem || treeItem instanceof BlobContainerTreeItem) {
const containerClient: ContainerClient = createBlobContainerClient(treeItem.root, treeItem.container.name);
resourceUri = containerClient.url;
} else {
const shareClient: ShareClient = createShareClient(treeItem.root, treeItem.shareName);
resourceUri = shareClient.url;
}
const accountSASSignatureValues: AccountSASSignatureValues = {
expiresOn: new Date(Date.now() + threeDaysInMS),
permissions: AccountSASPermissions.parse('rwl'), // read, write, list
services: 'bf', // blob, file
resourceTypes: 'co' // container, object
};
const sasToken: string = treeItem.root.generateSasToken(accountSASSignatureValues);
// Ensure path begins with '/' to transfer properly
path = path[0] === posix.sep ? path : `${posix.sep}${path}`;
return { type: 'RemoteSas', sasToken, resourceUri, path, useWildCard: !!isFolder };
}