Dropbox
This snippet provides a function to send IoT data to Dropbox.
Resources used: HTTPS x 1
Details
The send_dropbox
function can be used to POST the passed string 'payload' to Dropbox according to the specified 'fileOptions' using an app access token, over HTTPS. The result (error/response) is then passed to the callback function.
To start using this snippet, ACCESS_TOKEN
(Access Token from the Dropbox app), and CA
are required to be configured by the user.
NOTE: The provided function can handle data sizes up to 4KB. To handle larger data sizes, please refer to divided writing for https objects in the neqto.js documentation.
Click here to learn how to get a CA.
var CA = "-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----"
//=================================================================
// DROPBOX SNIPPET
//=================================================================
//=================================================================
// The following configuration are MANDATORY. Set by user.
//=================================================================
// The Access Token for authorization from the Dropbox app.
// eg. 'xxxxxxxxxxxxxxxx'
var ACCESS_TOKEN = '<YOUR_ACCESS-TOKEN>';
// Public certificate of the certificate authority that signed the Dropbox server certificate for SSL/TLS handshake.
// eg. '-----BEGIN CERTIFICATE-----\n...<CA>...\n-----END CERTIFICATE-----'
var CA = '<YOUR_CA>';
//=================================================================
/**
* Upload data to Dropbox file using Access Token.
* https://www.dropbox.com/developers/documentation/http/documentation
* @function send_dropbox
* @param {string} fileOptions - Details of the write operation, as an Object.
* @param {string} payload - Data to be sent to Dropbox, as a String.
* @param {function} callback - User callback to return the result (error/response).
* @returns {undefined}
*/
var send_dropbox = function (fileOptions, payload, callback) {
var body = payload.toString();
var options = {
"method": 'POST',
"host": 'content.dropboxapi.com',
"path": '/2/files/upload',
"headers": {
"Content-Type": 'application/octet-stream',
"Dropbox-API-Arg": JSON.stringify(fileOptions),
"Authorization": `Bearer ${ACCESS_TOKEN}`,
"Content-Length": body.length.toString()
},
"ca": CA
};
var request = https.request(options, function (response) {
response.on('end', function () {
callback(null, { "statusCode": response.statusCode, "statusMessage": response.statusMessage, "body": response.read() });
});
});
request.on('error', function () {
callback({ "errCode": request.errCode }, null);
});
request.end(body.toString(), function () {
print("[request] SUCCESS");
});
}
Function Usage Example
/*
<INSERT ABOVE SNIPPET HERE WITH SET CONFIGURATIONS>
*/
//=================================================================
log.setLevel(-1); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
//=================================================================
// MAIN SCENARIO
//=================================================================
/**
* Callback to fetch error/response from the request.
* @function callback
* @param {object} err - Error returned if the request failed. Has one property - `errCode`.
* @param {object} data - Response returned by a successfully completed request. Has three properties - `statusCode`, `statusMessage`, and `body`.
*/
var callback = function (err, data) {
if (err) {
print("[error]", err.errCode);
} else {
print("[status]", data.statusCode, data.statusMessage);
print("[response]", data.body);
}
}
var fileOptions = {
// "property_group": '', // OPTIONAL
// "client_modified": '', // OPTIONAL
"path": '/folder/file.txt',
"mode": 'add', /* 'add', 'overwrite', 'update' */
"autorename": true, /* true, false */
"mute": false, /* false, true */
"strict_conflict": false /* false, true */
};
var payload = "Hello from NEQTO Device";
send_dropbox(fileOptions, payload, callback);
The company names and product names mentioned above are registered trademarks or trademarks of their respective companies.
Updated: 2023-04-14