Security News
CISA Brings KEV Data to GitHub
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
dropbox-v2-api
Advanced tools
The API is generated programmatically, based on endpoints description JSON fetched from official docs.
$ npm i -s dropbox-v2-api
const dropboxV2Api = require('dropbox-v2-api');
// create session ref:
const dropbox = dropboxV2Api.authenticate({
token: 'your token'
});
// use session ref to call API, i.e.:
dropbox({
resource: 'users/get_account',
parameters: {
'account_id': 'dbid:AAH4f99T0taONIb-OurWxbNQ6ywGRopQngc'
}
}, (err, result, response) => {
if (err) { return console.log(err); }
console.log(result);
});
//set credentials
const dropbox = dropboxV2Api.authenticate({
client_id: 'APP_KEY',
client_secret: 'APP_SECRET',
redirect_uri: 'REDIRECT_URI',
token_access_type: 'offline', // if you need an offline long-living refresh token
state: 'OPTIONAL_STATE_VALUE'
});
//generate and visit authorization sevice
const authUrl = dropbox.generateAuthUrl();
//after redirection, you should receive code
dropbox.getToken(code, (err, result, response) => {
// you are authorized now!
//
// ...then you can refresh your token! (flow for token_access_type='offline')
dropbox.refreshToken(response.refresh_token, (err, result, response) => {
//token is refreshed!
});
});
//
dropbox({
resource: (string),
parameters: (object?),
readStream: (readable stream object?)
}, (err, result, response) => {
if (err) { return console.log('err:', err); }
console.log(result);
console.log(response.headers);
});
resource
(string) represent API target. It contains Dropbox's namespace and method name. eg. 'users/get_account'
, 'users/get_space_usage'
, 'files/upload'
, 'files/list_folder/longpoll'
, 'sharing/share_folder'
more at official documentationparameters
(object?) optional parameters, depends on resource
fieldreadStream
(readable stream?) Upload-type requests might contains readStream
field, which is readable streamFor Download-type requests, the function dropbox
returns readable stream.
Upload-type requests might contains readStream
field, which is readable stream
dropbox({
resource: 'files/upload',
parameters: {
path: '/dropbox/path/to/file.js'
},
readStream: fs.createReadStream('path/to/file.js')
}, (err, result, response) => {
//upload completed
});
or, using streams:
const dropboxUploadStream = dropbox({
resource: 'files/upload',
parameters: {
path: '/dropbox/path/to/file.js'
}
}, (err, result, response) => {
//upload completed
});
fs.createReadStream('path/to/file.js').pipe(dropboxUploadStream);
Download-type requests return writableStream
dropbox({
resource: 'files/download',
parameters: {
path: '/dropbox/image.jpg'
}
}, (err, result, response) => {
//download completed
})
.pipe(fs.createWriteStream('./image.jpg'));
Problems with downloading? More here
You can easely use streams:
const downloadStream = dropbox({
resource: 'files/download',
parameters: { path: '/source/file/path' }
});
const uploadStream = dropbox({
resource: 'files/upload',
parameters: { path: '/target/file/path' }
}, (err, result, response) => {
//upload finished
});
downloadStream.pipe(uploadStream);
dropbox({
resource: 'users/get_current_account'
}, (err, result, response) => {
if (err) { return console.log('err:', err); }
console.log(result);
});
dropbox({
resource: 'files/get_metadata',
parameters: {
path: '/dropbox/path/to/file.js',
include_media_info: false
}
}, (err, result, response) => {
if(err){ return console.log('err:', err); }
console.log(result);
});
const CHUNK_LENGTH = 100;
//create read streams, which generates set of 100 (CHUNK_LENGTH) characters of values: 1 and 2
const firstUploadChunkStream = () => utils.createMockedReadStream('1', CHUNK_LENGTH);
const secondUploadChunkStream = () => utils.createMockedReadStream('2', CHUNK_LENGTH);
sessionStart((sessionId) => {
sessionAppend(sessionId, () => {
sessionFinish(sessionId);
});
});
function sessionStart(cb) {
dropbox({
resource: 'files/upload_session/start',
parameters: {
close: false
},
readStream: firstUploadChunkStream()
}, (err, result, response) => {
if (err) { return console.log('sessionStart error: ', err) }
console.log('sessionStart result:', result);
cb(result.session_id);
});
}
function sessionAppend(sessionId, cb) {
dropbox({
resource: 'files/upload_session/append',
parameters: {
cursor: {
session_id: sessionId,
offset: CHUNK_LENGTH
},
close: false,
},
readStream: secondUploadChunkStream()
}, (err, result, response) => {
if(err){ return console.log('sessionAppend error: ', err) }
console.log('sessionAppend result:', result);
cb();
});
}
function sessionFinish(sessionId) {
dropbox({
resource: 'files/upload_session/finish',
parameters: {
cursor: {
session_id: sessionId,
offset: CHUNK_LENGTH * 2
},
commit: {
path: "/result.txt",
mode: "add",
autorename: true,
mute: false
}
}
}, (err, result, response) => {
if (err) { return console.log('sessionFinish error: ', err) }
console.log('sessionFinish result:', result);
});
}
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
You can increase your default memory limit for an app:
$ NODE_OPTIONS=--max_old_space_size= 4096 node app.js
where 4096
stands for 4GB.
FAQs
NodeJS Dropbox v2 API wrapper
The npm package dropbox-v2-api receives a total of 2,781 weekly downloads. As such, dropbox-v2-api popularity was classified as popular.
We found that dropbox-v2-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.