Skip to content

Instantly share code, notes, and snippets.

@jgensler8
Created May 12, 2018 18:29
Show Gist options
  • Save jgensler8/dce6c01cf2342d642070380c8d5764d7 to your computer and use it in GitHub Desktop.
Save jgensler8/dce6c01cf2342d642070380c8d5764d7 to your computer and use it in GitHub Desktop.
var buffer = require('buffer');
var path = require('path')
var storage = require('@google-cloud/storage');
var stream = require("stream");
const projectId = 'vastorchard';
var gcs = storage({
projectId: projectId
});
const gcs_bucket_name = 'mushroom-images';
var gcs_bucket = gcs.bucket(gcs_bucket_name);
exports.eventToMessage = function(event) {
var b = new buffer.Buffer(event.data.data, 'base64');
console.log("Message String: ", b.toString('ascii'))
return JSON.parse(b.toString('ascii'))
};
exports.uploadImageToBucket = function(image, image_name, gcs_bucket, gcs_bucket_prefix) {
var gcs_file = path.join(gcs_bucket_prefix, image_name);
console.log("Uploading", gcs_file, "to", gcs_bucket_name)
return gcs_bucket.file(gcs_file).save(image)
};
exports.uploadImagesToBucket = function(images, gcs_bucket, gcs_bucket_prefix) {
var uploads = images.map(function(imageb64, index) {
var prefix = path.join(gcs_bucket_prefix, "" + index);
return exports.uploadImageToBucket(imageb64, "" + index + ".jpeg" , gcs_bucket, prefix)
});
return Promise.all(uploads);
};
/**
* Triggered from a message on a Cloud Pub/Sub topic.
*
* @param {!Object} event The Cloud Functions event.
* @param {!Function} The callback function.
*/
exports.subscribe = (event, callback) => {
message = exports.eventToMessage(event);
if(message.type == "Heartbeat") {
console.log("Telemetry Event. Nothing to do...")
} else if (message.type == "Image") {
var deviceID = "Chromebook";
var time = "" + Date.now();
var gcs_bucket_prefix = path.join(deviceID, time);
exports.uploadImagesToBucket(message.imageb64, gcs_bucket, gcs_bucket_prefix)
}
callback();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment