
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
@buttercup/dropbox-client
Advanced tools
Dropbox client library for Buttercup
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 fetch
(cross-fetch) to perform requests, which will obviously work in a reproducible fassion across environments.
Simply run npm install @buttercup/dropbox-client --save
to install.
The latest version (v2) requires an ESM environment to run. It is not available to standard CommonJS projects.
You can generate Dropbox authorisation URLs by using generateAuthorisationURL
:
import { generateAuthorisationURL } from "@buttercup/dropbox-client";
const url = generateAuthorisationURL("client-id", "https://redir.example.com");
// open `url`
Use the DropboxClient
class to create a client interface:
import { generateAuthorisationURL } from "@buttercup/dropbox-client";
const client = new DropboxClient("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.
You can enable compatibility mode for browser-based environments where CORS may break requests:
const client = new DropboxClient("my-token", { compat: true });
In some browser environments the "CORS hack" Content-Type header can fail, so this can be disabled by specifying false
for the compatCorsHack
property:
const client = new DropboxClient("my-token", {
compat: true,
compatCorsHack: false
});
You can provide custom headers to all the requests the client makes by specifying the headers
option:
const client = new DropboxClient("my-token", {
headers: {
// Disable the cache (works/necessary in some environments)
"Cache-Control": "no-cache, no-store, max-age=0"
}
});
An fs
-like interface is also available:
import { generateAuthorisationURL } from "@buttercup/dropbox-client";
const client = new DropboxClient("my-token");
client.fs.readdir("/photos", (err, items) => {
// array of file names
});
Errors while performing requests against the Dropbox API will be thrown wrapped in a Layerr
error instance. It provides some extra properties with each error:
import { Layerr } from "layerr";
// ...
client.getDirectoryContents("/").catch((err) => {
const {
status,
statusText,
url
} = Layerr.info(err);
if (status === 403) {
// ...
}
});
v2.2.0
2023-11-11
layerr
FAQs
Dropbox client library
We found that @buttercup/dropbox-client demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.