@buttercup/dropbox-client

Dropbox client library

Usage no npm install needed!

<script type="module">
  import buttercupDropboxClient from 'https://cdn.skypack.dev/@buttercup/dropbox-client';
</script>

README

Dropbox Client

Dropbox client library for Buttercup

Buttercup npm version Build Status

About

Dropbox is an integral part of the Buttercup platform as it's used by a huge amount of users to store all kinds of data - including Buttercup vault files. Having a functional, portable and reliable Dropbox client interface is critical to the platform's stability, and currently the official Dropbox SDK is lacking in terms of quality and stability.

This library is a barebones HTTP client that makes requests directly to Dropbox's HTTP API using a token (handled externally - this library will not be responsible for fetching them). The result is a tiny, portable script that is reliable and simple to understand. It uses cowl to perform requests, which is designed to work similarly across multiple platforms.

Installation

Simply run npm install @buttercup/dropbox-client --save to install.

Usage

Authorisation

You can generate Dropbox authorisation URLs by using generateAuthorisationURL:

const { generateAuthorisationURL } = require("@buttercup/dropbox-client");

const url = generateAuthorisationURL("client-id", "https://redir.example.com");
// open `url`

Client

Use the createClient method to create a client interface:

const { createClient } = require("@buttercup/dropbox-client");

const client = createClient("my-token");

You can then use the client adapter to make requests like for directory contents:

client
    .getDirectoryContents("/Documents")
    .then(contents => {
        // [ {
        //     name: "My directory",
        //     path: "/Documents/My directory",
        //     type: "directory"
        // }, {
        //     name: "results.pdf",
        //     path: "/Documents/results.pdf",
        //     type: "file"
        // } ]
    });

You can also read and write files using getFileContents and putFileContents, respectively. Check out the API documentation for more information.

Fs

An fs-like interface is also available:

const { createClient, createFsInterface } = require("@buttercup/dropbox-client");

const client = createClient("my-token");
const dfs = createFsInterface(client);

dfs.readdir("/photos", (err, items) => {
    // array of file names
});

Read the fs API documentation for more information on the available methods.