async stat()

in src/AzureStorageFS.ts [102:134]


    async stat(uri: vscode.Uri): Promise<vscode.FileStat> {
        let ctime: number = 0;
        let mtime: number = 0;
        let size: number = 0;

        return await callWithTelemetryAndErrorHandling('stat', async (context) => {
            context.telemetry.suppressIfSuccessful = true;

            if (uri.path.endsWith('/')) {
                // Ignore trailing forward slashes
                // https://github.com/microsoft/vscode-azurestorage/issues/576
                uri = uri.with({ path: uri.path.slice(0, -1) });
            }

            const treeItem: AzureStorageTreeItem = await this.lookup(uri, context);
            const fileType: vscode.FileType = treeItem instanceof DirectoryTreeItem || treeItem instanceof FileShareTreeItem || treeItem instanceof BlobDirectoryTreeItem || treeItem instanceof BlobContainerTreeItem ? vscode.FileType.Directory : vscode.FileType.File;
            let props: (BlobGetPropertiesResponse & FileGetPropertiesResponse) | undefined;

            if (treeItem instanceof BlobTreeItem) {
                const blockBlobClient: BlockBlobClient = createBlockBlobClient(treeItem.root, treeItem.container.name, treeItem.blobPath);
                props = await blockBlobClient.getProperties();
            } else if (treeItem instanceof FileTreeItem) {
                const fileClient: ShareFileClient = createFileClient(treeItem.root, treeItem.shareName, treeItem.directoryPath, treeItem.fileName);
                props = await fileClient.getProperties();
            }

            ctime = props?.createdOn?.valueOf() || props?.fileCreatedOn?.valueOf() || 0;
            mtime = props?.lastModified?.valueOf() || 0;
            size = props?.contentLength || 0;

            return { type: fileType, ctime, mtime, size };
        }) || { type: vscode.FileType.Unknown, ctime, mtime, size };
    }