dropbox-v2-api
Dropbox API v2 wrapper for nodejs.
The dropbox-v2-api
package interface is generated automatically - it's based on Dropbox endpoints description JSON file which is a mirror of Dropbox API HTTP endpoints description, retrived from official documentaion webpage .
Why this package?
Get started
$ npm i - s dropbox - v2 - api
const dropboxV2Api = require ( ' dropbox-v2-api ' ) ;
Auth
const dropbox = dropboxV2Api . authenticate ( {
token : ' your token '
} ) ;
dropbox ( {
resource : ' users/get_account ' ,
parameters : {
' account_id ' : ' dbid:AAH4f99T0taONIb-OurWxbNQ6ywGRopQngc '
}
} , ( err , result , response ) => {
if ( err ) { return console . log ( err ) ; }
console . log ( result ) ;
} ) ;
const dropbox = dropboxV2Api . authenticate ( {
client_id : ' APP_KEY ' ,
client_secret : ' APP_SECRET ' ,
redirect_uri : ' REDIRECT_URI '
} ) ;
const authUrl = dropbox . generateAuthUrl ( ) ;
dropbox . getToken ( code , ( err , result , response ) => {
} ) ;
Full API showcase
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 documentation
parameters
(object? ) optional parameters, depends on resource
field
readStream
(readable stream? ) Upload-type requests might contains readStream
field, which is readable stream
For Download-type requests, the function dropbox
returns readable stream.
Upload and Download examples
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 ) => {
} ) ;
or, using streams:
const dropboxUploadStream = dropbox ( {
resource : ' files/upload ' ,
parameters : {
path : ' /dropbox/path/to/file.js '
}
} , ( err , result , response ) => {
} ) ;
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 ) => {
} )
. pipe ( fs . createWriteStream ( ' ./image.jpg ' ) ) ;
download & upload
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 ) => {
} ) ;
downloadStream . pipe ( uploadStream ) ;
API call examples
get_current_account see docs
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 ;
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_v2 ' ,
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 ) ;
} ) ;
}