2.5.11 • Published 1 year ago

dropbox-v2-api v2.5.11

Weekly downloads
7,961
License
ISC
Repository
github
Last release
1 year ago

dropbox-v2-api

Actions Status NPM Downloads NPM Downloads npm version

The API is generated programmatically, based on endpoints description JSON fetched from official docs.

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',
    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!
    });
});
//

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

Problems with downloading? More here

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

Downloading issues

  1. 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.

check test cases or examples for more examples...

2.5.11

1 year ago

2.5.10

2 years ago

2.5.8

3 years ago

2.5.7

3 years ago

2.5.9

3 years ago

2.5.10-next.0

3 years ago

2.5.10-next.1

3 years ago

2.5.10-next.2

3 years ago

2.5.10-next.3

3 years ago

2.5.6

3 years ago

2.5.5

3 years ago

2.5.4

3 years ago

2.5.3

3 years ago

2.5.2

3 years ago

2.5.0

3 years ago

2.4.54

3 years ago

2.4.53

3 years ago

2.4.52

4 years ago

2.4.51

4 years ago

2.4.50

4 years ago

2.4.49

4 years ago

2.4.48

4 years ago

2.4.47

4 years ago

2.4.46

4 years ago

2.4.45

4 years ago

2.4.44

4 years ago

2.4.43

4 years ago

2.4.42

4 years ago

2.4.41

4 years ago

2.4.40

4 years ago

2.4.39

4 years ago

2.4.38

4 years ago

2.4.37

4 years ago

2.4.36

4 years ago

2.4.35

4 years ago

2.4.34

4 years ago

2.4.33

4 years ago

2.4.32

5 years ago

2.4.31

5 years ago

2.4.30

5 years ago

2.4.29

5 years ago

2.4.28

5 years ago

2.4.27

5 years ago

2.4.26

5 years ago

2.4.25

5 years ago

2.4.24

5 years ago

2.4.23

5 years ago

2.4.22

5 years ago

2.4.21

5 years ago

2.4.20

5 years ago

2.4.19

5 years ago

2.4.18

5 years ago

2.4.17

5 years ago

2.4.16

5 years ago

2.4.15

5 years ago

2.4.14

5 years ago

2.4.13

5 years ago

2.4.12

5 years ago

2.4.11

5 years ago

2.4.10

5 years ago

2.4.9

6 years ago

2.4.8

6 years ago

2.4.7

6 years ago

2.4.6

6 years ago

2.4.5

6 years ago

2.4.4

6 years ago

2.4.3

6 years ago

2.4.2

6 years ago

2.4.1

6 years ago

2.4.0

6 years ago

2.3.0

6 years ago

2.2.0

6 years ago

2.1.22

7 years ago

2.1.21

7 years ago

2.1.20

7 years ago

2.1.19

7 years ago

2.1.18

7 years ago

2.1.17

7 years ago

2.1.16

7 years ago

2.1.15

7 years ago

2.1.14

7 years ago

2.1.13

7 years ago

2.1.11

8 years ago

2.1.10

8 years ago

2.1.9

8 years ago

2.1.8

8 years ago

2.1.7

8 years ago

2.1.6

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.0.12

8 years ago

1.0.11

8 years ago

1.0.10

8 years ago

1.0.9

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

9 years ago

1.0.0

9 years ago