Dropbox
このスニペットは、DropboxにIoTデータを送信する機能を提供します。
Resources used: HTTPS x 1
Details
send_dropbox
関数は、アプリのアクセストークンを使用して、指定した「fileOptions」に従って、渡された文字列「payload」をDropboxにHTTPS経由で POST します。結果(エラー/レスポンス)は、コールバック関数に渡されます。
このスニペットを使用するには、 ACCESS_TOKEN
(Dropboxアプリからアクセストークン)と CA
をユーザーが設定する必要があります。
注意: 提供されている関数では、最大4KBまでのデータを取り扱うことができます。より大きなサイズのデータを取り扱う場合は、neqto.jsドキュメントのhttpsオブジェクト、分割書き込みを参考にしてください。
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 in case of a failed request. 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);
上記に記載されている会社名、製品名は、各社の登録商標または商標です。
Updated: 2023-04-14