From df5b5c8e821bd4533f4da35c0de7a28ae30b177e Mon Sep 17 00:00:00 2001 From: Peter Svensson Date: Tue, 2 Jul 2019 20:43:04 +0200 Subject: [PATCH] refactord, tidied up, added icon for storage and a new node for writing buffers to storage files --- README.md | 19 +++++++- .../firestore-add.html | 0 .../firestore-add.js | 0 .../firestore-get.html | 0 .../firestore-get.js | 0 .../firestore-query.html | 0 .../firestore-query.js | 0 .../firestore-set.html | 0 .../firestore-set.js | 0 package.json | 23 +++++----- flow-to-rtdb.html => rtdb/flow-to-rtdb.html | 0 flow-to-rtdb.js => rtdb/flow-to-rtdb.js | 0 rtdb-get.html => rtdb/rtdb-get.html | 0 rtdb-get.js => rtdb/rtdb-get.js | 0 rtdb-push.html => rtdb/rtdb-push.html | 0 rtdb-push.js => rtdb/rtdb-push.js | 0 rtdb-query.html => rtdb/rtdb-query.html | 0 rtdb-query.js => rtdb/rtdb-query.js | 0 rtdb-set.html => rtdb/rtdb-set.html | 0 rtdb-set.js => rtdb/rtdb-set.js | 0 rtdb-to-flow.html => rtdb/rtdb-to-flow.html | 0 rtdb-to-flow.js => rtdb/rtdb-to-flow.js | 0 .../storage-read.html | 2 +- storage-read.js => storage/storage-read.js | 3 -- storage/storage-write.html | 43 +++++++++++++++++ storage/storage-write.js | 46 +++++++++++++++++++ 26 files changed, 120 insertions(+), 16 deletions(-) rename firestore-add.html => firestore/firestore-add.html (100%) rename firestore-add.js => firestore/firestore-add.js (100%) rename firestore-get.html => firestore/firestore-get.html (100%) rename firestore-get.js => firestore/firestore-get.js (100%) rename firestore-query.html => firestore/firestore-query.html (100%) rename firestore-query.js => firestore/firestore-query.js (100%) rename firestore-set.html => firestore/firestore-set.html (100%) rename firestore-set.js => firestore/firestore-set.js (100%) rename flow-to-rtdb.html => rtdb/flow-to-rtdb.html (100%) rename flow-to-rtdb.js => rtdb/flow-to-rtdb.js (100%) rename rtdb-get.html => rtdb/rtdb-get.html (100%) rename rtdb-get.js => rtdb/rtdb-get.js (100%) rename rtdb-push.html => rtdb/rtdb-push.html (100%) rename rtdb-push.js => rtdb/rtdb-push.js (100%) rename rtdb-query.html => rtdb/rtdb-query.html (100%) rename rtdb-query.js => rtdb/rtdb-query.js (100%) rename rtdb-set.html => rtdb/rtdb-set.html (100%) rename rtdb-set.js => rtdb/rtdb-set.js (100%) rename rtdb-to-flow.html => rtdb/rtdb-to-flow.html (100%) rename rtdb-to-flow.js => rtdb/rtdb-to-flow.js (100%) rename storage-read.html => storage/storage-read.html (96%) rename storage-read.js => storage/storage-read.js (91%) create mode 100644 storage/storage-write.html create mode 100644 storage/storage-write.js diff --git a/README.md b/README.md index 26acbfd..9a662ad 100644 --- a/README.md +++ b/README.md @@ -106,8 +106,25 @@ If the payload defines an optional bucket property, it will override the default input: {"payload":{"bucket": "xyzzyz123.appspot.com", "path": "myFile.txt"}} -output: Buffer[] containing the binary file contents +npm publish .output: Buffer object containing the binary file contents. Can easily be converted to a string by calling toString() on the Buffer. +## storage-write +Writes the content of JavaScript Buffer object to a file path in a storage bucket. + +input: + + { + "payload": { + "bucket": "abc.appspot.com", // optional, is otherwise set as node config + "path": "foo/bar/baz.json", // optional, see above + "contents": , + "contentType": "application/json" }, // optional + "metadata": { "very":"interesting"}, // optional + "public": true, // optional + "private": false // optional + } + } + # Auth nodes diff --git a/firestore-add.html b/firestore/firestore-add.html similarity index 100% rename from firestore-add.html rename to firestore/firestore-add.html diff --git a/firestore-add.js b/firestore/firestore-add.js similarity index 100% rename from firestore-add.js rename to firestore/firestore-add.js diff --git a/firestore-get.html b/firestore/firestore-get.html similarity index 100% rename from firestore-get.html rename to firestore/firestore-get.html diff --git a/firestore-get.js b/firestore/firestore-get.js similarity index 100% rename from firestore-get.js rename to firestore/firestore-get.js diff --git a/firestore-query.html b/firestore/firestore-query.html similarity index 100% rename from firestore-query.html rename to firestore/firestore-query.html diff --git a/firestore-query.js b/firestore/firestore-query.js similarity index 100% rename from firestore-query.js rename to firestore/firestore-query.js diff --git a/firestore-set.html b/firestore/firestore-set.html similarity index 100% rename from firestore-set.html rename to firestore/firestore-set.html diff --git a/firestore-set.js b/firestore/firestore-set.js similarity index 100% rename from firestore-set.js rename to firestore/firestore-set.js diff --git a/package.json b/package.json index 851a610..489bc2d 100644 --- a/package.json +++ b/package.json @@ -21,18 +21,19 @@ "homepage": "https://github.com/psvensson/node-red-contrib-firebase-admin#readme", "node-red": { "nodes": { - "rtdb-set": "rtdb-set.js", - "rtdb-push": "rtdb-push.js", - "rtdb-get": "rtdb-get.js", - "rtdb-query": "rtdb-query.js", - "firestore-set": "firestore-set.js", - "firestore-add": "firestore-add.js", - "firestore-get": "firestore-get.js", - "firestore-query": "firestore-query.js", + "rtdb-set": "rtdb/rtdb-set.js", + "rtdb-push": "rtdb/rtdb-push.js", + "rtdb-get": "rtdb/rtdb-get.js", + "rtdb-query": "rtdb/rtdb-query.js", + "firestore-set": "firestore/firestore-set.js", + "firestore-add": "firestore/firestore-add.js", + "firestore-get": "firestore/firestore-get.js", + "firestore-query": "firestore/firestore-query.js", "firebase-config": "firebase-config.js", - "flow-to-rtdb": "flow-to-rtdb.js", - "rtdb-to-flow": "rtdb-to-flow.js", - "storage-read": "storage-read.js" + "flow-to-rtdb": "rtdb/flow-to-rtdb.js", + "rtdb-to-flow": "rtdb/rtdb-to-flow.js", + "storage-read": "storage/storage-read.js", + "storage-write": "storage/storage-write.js" } }, "dependencies": { diff --git a/flow-to-rtdb.html b/rtdb/flow-to-rtdb.html similarity index 100% rename from flow-to-rtdb.html rename to rtdb/flow-to-rtdb.html diff --git a/flow-to-rtdb.js b/rtdb/flow-to-rtdb.js similarity index 100% rename from flow-to-rtdb.js rename to rtdb/flow-to-rtdb.js diff --git a/rtdb-get.html b/rtdb/rtdb-get.html similarity index 100% rename from rtdb-get.html rename to rtdb/rtdb-get.html diff --git a/rtdb-get.js b/rtdb/rtdb-get.js similarity index 100% rename from rtdb-get.js rename to rtdb/rtdb-get.js diff --git a/rtdb-push.html b/rtdb/rtdb-push.html similarity index 100% rename from rtdb-push.html rename to rtdb/rtdb-push.html diff --git a/rtdb-push.js b/rtdb/rtdb-push.js similarity index 100% rename from rtdb-push.js rename to rtdb/rtdb-push.js diff --git a/rtdb-query.html b/rtdb/rtdb-query.html similarity index 100% rename from rtdb-query.html rename to rtdb/rtdb-query.html diff --git a/rtdb-query.js b/rtdb/rtdb-query.js similarity index 100% rename from rtdb-query.js rename to rtdb/rtdb-query.js diff --git a/rtdb-set.html b/rtdb/rtdb-set.html similarity index 100% rename from rtdb-set.html rename to rtdb/rtdb-set.html diff --git a/rtdb-set.js b/rtdb/rtdb-set.js similarity index 100% rename from rtdb-set.js rename to rtdb/rtdb-set.js diff --git a/rtdb-to-flow.html b/rtdb/rtdb-to-flow.html similarity index 100% rename from rtdb-to-flow.html rename to rtdb/rtdb-to-flow.html diff --git a/rtdb-to-flow.js b/rtdb/rtdb-to-flow.js similarity index 100% rename from rtdb-to-flow.js rename to rtdb/rtdb-to-flow.js diff --git a/storage-read.html b/storage/storage-read.html similarity index 96% rename from storage-read.html rename to storage/storage-read.html index fcc45f8..0ec3ac1 100644 --- a/storage-read.html +++ b/storage/storage-read.html @@ -11,7 +11,7 @@ }, inputs:1, outputs:1, - icon: "firebase-admin-icon.png", + icon: "storage.png", label: function() { return this.name||"storage-read"; } diff --git a/storage-read.js b/storage/storage-read.js similarity index 91% rename from storage-read.js rename to storage/storage-read.js index febafe1..0c4b1a3 100644 --- a/storage-read.js +++ b/storage/storage-read.js @@ -17,9 +17,6 @@ module.exports = function(RED) { this.path = config.path } - console.log('------------------------------- rtdg-get config') - console.dir(config) - //console.log('configuring storage-read to listen for messages') node.on('input', function(msg) { if(msg && msg.payload){ diff --git a/storage/storage-write.html b/storage/storage-write.html new file mode 100644 index 0000000..bb4980b --- /dev/null +++ b/storage/storage-write.html @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/storage/storage-write.js b/storage/storage-write.js new file mode 100644 index 0000000..d01a822 --- /dev/null +++ b/storage/storage-write.js @@ -0,0 +1,46 @@ + +module.exports = function(RED) { + + function FirebaseAdmin(config) { + RED.nodes.createNode(this, config); + var node = this; + + + if(config.cred){ + let c = RED.nodes.getNode(config.cred) + this.admin = c.admin + this.storage = c.storage + this.bucket = config.bucket || c.bucket + this.path = config.path + } + + //console.log('configuring storage-write to listen for messages') + node.on('input', function(msg) { + if(msg && msg.payload){ + let path = msg.payload.path || this.path + let bucket = msg.payload.bucket || this.bucket + let contents = msg.payload.contents + let options ={ + contentType: msg.payload.contentType || 'auto', + metadata: msg.payload.metadata || {}, + private: msg.payload.private || true, + public: msg.payload.public || true, + } + console.log('storage-write writing file to bucket "'+bucket+'" path "'+path+'"') + console.dir(msg.payload) + const myBucket = this.storage.bucket(bucket); + const file = myBucket.file(path); + file.save(contents, options, function(err) { + if (!err) { + // File written successfully. + } else { + console.log('cloud storage write error: '+err) + } + }); + } + }.bind(this)); + + + } + RED.nodes.registerType("storage-write", FirebaseAdmin); +} \ No newline at end of file