export function createAzCopyRemoteLocation()

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 };
}