Skip to content

Commit fc34ce8

Browse files
committed
Add dropbox query node.
1 parent abdcdad commit fc34ce8

File tree

2 files changed

+87
-1
lines changed

2 files changed

+87
-1
lines changed

dropbox/dropbox.html

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,48 @@
6565
})();
6666
</script>
6767

68+
<script type="text/x-red" data-template-name="dropbox">
69+
<div class="form-row">
70+
<label for="node-input-dropbox"><i class="fa fa-user"></i> Dropbox</label>
71+
<input type="text" id="node-input-dropbox">
72+
</div>
73+
<div class="form-row node-input-filename">
74+
<label for="node-input-filename"><i class="fa fa-file"></i> Filename</label>
75+
<input type="text" id="node-input-filename" placeholder="Filename">
76+
</div>
77+
<div class="form-row">
78+
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
79+
<input type="text" id="node-input-name" placeholder="Name">
80+
</div>
81+
</script>
82+
83+
<script type="text/x-red" data-help-name="dropbox">
84+
<p>Dropbox input node. Downloads content from Dropbox. The
85+
filename on Dropbox is taken from the node <b>filename</b>
86+
property or the <b>msg.filename</b> property. The downloaded
87+
content is sent as <b>msg.payload</b> property. If the download
88+
fails <b>msg.error</b> will contain an error object.</p>
89+
</script>
90+
91+
<script type="text/javascript">
92+
RED.nodes.registerType('dropbox',{
93+
category: 'storage-input',
94+
color:"#C0DEED",
95+
defaults: {
96+
dropbox: {type:"dropbox-config",required:true},
97+
filename: {value:""},
98+
name: {value:""}
99+
},
100+
inputs: 1,
101+
outputs: 1,
102+
icon: "dropbox.png",
103+
align: "right",
104+
label: function() {
105+
return this.name||this.filename||'Dropbox';
106+
}
107+
});
108+
</script>
109+
68110
<script type="text/x-red" data-template-name="dropbox out">
69111
<div class="form-row">
70112
<label for="node-input-dropbox"><i class="fa fa-user"></i> Dropbox</label>
@@ -96,7 +138,7 @@
96138
dropbox: {type:"dropbox-config",required:true},
97139
filename: {value:""},
98140
localFilename: {value:""},
99-
name: {value:"Dropbox"}
141+
name: {value:""}
100142
},
101143
inputs:1,
102144
outputs:0,

dropbox/dropbox.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,48 @@ module.exports = function(RED) {
3030
}
3131
});
3232

33+
function DropboxQueryNode(n) {
34+
RED.nodes.createNode(this,n);
35+
this.filename = n.filename || "";
36+
this.dropboxConfig = RED.nodes.getNode(n.dropbox);
37+
var credentials = this.dropboxConfig ? this.dropboxConfig.credentials : {};
38+
var node = this;
39+
if (credentials.appkey && credentials.appsecret &&
40+
credentials.accesstoken) {
41+
var dropbox = new Dropbox.Client({
42+
//uid: credentials.uid,
43+
key: credentials.appkey,
44+
secret: credentials.appsecret,
45+
token: credentials.accesstoken,
46+
});
47+
node.on("input", function(msg) {
48+
var filename = this.filename || msg.filename;
49+
if (filename === "") {
50+
node.warn("No filename specified");
51+
return;
52+
}
53+
msg.filename = filename;
54+
node.status({fill:"blue",shape:"dot",text:"downloading"});
55+
dropbox.readFile(filename, function(err, data) {
56+
if (err) {
57+
node.warn("download failed " + err.toString());
58+
delete msg.payload;
59+
msg.error = err;
60+
} else {
61+
msg.payload = data;
62+
delete msg.error;
63+
}
64+
node.status({});
65+
node.send(msg);
66+
});
67+
});
68+
} else {
69+
node.warn("Missing dropbox credentials");
70+
}
71+
}
72+
RED.nodes.registerType("dropbox",DropboxQueryNode);
73+
74+
3375
function DropboxOutNode(n) {
3476
RED.nodes.createNode(this,n);
3577
this.filename = n.filename || "";
@@ -93,6 +135,8 @@ module.exports = function(RED) {
93135
}
94136
});
95137
});
138+
} else {
139+
node.warn("Missing dropbox credentials");
96140
}
97141
}
98142
RED.nodes.registerType("dropbox out",DropboxOutNode);

0 commit comments

Comments
 (0)