Have ideas to improve npm?Join in the discussion! »

    dropbox-v2-api-bendtech

    2.1.15 • Public • Published

    Build Status NPM Downloads NPM Downloads npm version

    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

    • using token
    // 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'
    });
    //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!
    });

    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 see docs

    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 see docs

    Download-type requests return writableStream

    dropbox({
        resource: 'files/download',
        parameters: {
            path: '/dropbox/image.jpg'
        }
    }, (err, result, response) => {
        //download completed
    })
    .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) => {
        //upload finished
    });
     
    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);
    });

    get_metadata see docs

    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);
    });

    upload_session see docs

    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_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);
        });
    }

    check test cases or examples for more examples...

    Install

    npm i dropbox-v2-api-bendtech

    DownloadsWeekly Downloads

    1

    Version

    2.1.15

    License

    ISC

    Unpacked Size

    602 kB

    Total Files

    24

    Last publish

    Collaborators

    • avatar