Code Monkey home page Code Monkey logo

vscode-file-downloader-api's Introduction

VS Code File Downloader API

This package acts as a wrapper around the VS Code File Downloader extension, which exposes an API that allows other extensions to download and manage binary dependencies.

Useful links:

Setup

Place the following in your VS Code extension's package.json file:

"extensionDependencies": [
    "mindaro-dev.file-downloader"
]

Usage

To get the API:

import { Uri } from "vscode";
import { getApi, FileDownloader } from "@microsoft/vscode-file-downloader-api";
...
const fileDownloader: FileDownloader = await getApi();

Download file:

Simplest case:

const file: Uri = await fileDownloader.downloadFile(
    Uri.parse(url),
    filename,
    context
);

With cancellation token and download progress callback:

import { Uri, CancellationTokenSource } from "vscode";
...

const cancellationTokenSource = new CancellationTokenSource();
const cancellationToken = cancellationTokenSource.token;

const progressCallback = (downloadedBytes: number, totalBytes: number | undefined) => {
    console.log(`Downloaded ${downloadedBytes}/${totalBytes} bytes`);
};

const file: Uri = await fileDownloader.downloadFile(
    Uri.parse(url),
    filename,
    context,
    cancellationToken,
    progressCallback
);

Extract .zip file into directory:

If you set shouldUnzip to true and download a .zip file, it will be automatically extracted to a folder titled filename.

const directory: Uri = await fileDownloader.downloadFile(
    Uri.parse(url),
    filename,
    context,
    /* cancellationToken */ undefined,
    /* progressCallback */ undefined,
    { shouldUnzip: true }
);

List previously downloaded files:

const downloadedFiles: Uri[] = await fileDownloader.listDownloadedItems(context);

Get a single downloaded file:

try {
    const downloadedFile: Uri = await fileDownloader.getItem(filename, context);
}
catch (error) {
    // File does not exist in downloads directory
}

or

const downloadedFile: Uri = await fileDownloader.tryGetItem(filename, context);
if (downloadedFile === undefined) {
    // File does not exist in downloads directory
}

Delete downloaded files

Delete one file:

await fileDownloader.deleteItem(filename, context);

Delete all files:

await fileDownloader.deleteAllItems(context);

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Testing changes

Do not use npm link to test changes locally. It can result in duplicate type declarations that can cause problems with TypeScript. To test changes locally, compile and pack the package:

npm run compile
npm pack

This produces a file called microsoft-vscode-file-downloader-api-X.X.X.tgz where X.X.X is the version number. Install the package in the consumer extension's root folder:

npm install ./path/to/microsoft-vscode-file-downloader-api-X.X.X.tgz

vscode-file-downloader-api's People

Contributors

daniv-msft avatar lbussell avatar microsoft-github-operations[bot] avatar microsoftopensource avatar rakeshvanga avatar ross-p-smith avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vscode-file-downloader-api's Issues

Add HTTP headers

Is there a way to add an authorization token via HTTP headers when downloading a file?

Example usage

Hi, after your help, I managed to get to the API, but now I've found myself not knowing what to do next.
The wiki site states that the simplest usage is:

const file: Uri = await fileDownloader.downloadFile(
    Uri.parse(url),
    filename,
    context
);

I should replace url, filename and context with something, and I believe it would look more or less like this:

const file: Uri = await fileDownloader.downloadFile(
    Uri.parse('https://upload.wikimedia.org/wikipedia/commons/7/77/Delete_key1.jpg'),
    'Delete_key1.jpg',
    context 
);

but I don't know what the context is. Do you have an example usage somewhere?

Error when trying to get the API

Hi,
I'm trying to use this extension to download a file, but I'm already stuck at basic usage.
According to wiki, I should use the following lines:

import { Uri } from "vscode";
import { getApi, FileDownloader } from "@microsoft/vscode-file-downloader-api";

But the second line causes an error:
Cannot find module '@microsoft/vscode-file-downloader-api' or its corresponding type declarations.
Am I doing something wrong?

Regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.