-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathapp.js
More file actions
118 lines (95 loc) · 3.48 KB
/
Copy pathapp.js
File metadata and controls
118 lines (95 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// Bringing in my environment file so I can grab my API info.
require('dotenv').config();
const IotClient = require('azure-iothub').Client,
IotMessage = require('azure-iot-common').Message,
iotClient = IotClient.fromConnectionString(process.env.IOT_CONN_STRING),
fs = require('fs'),
express = require('express'),
app = module.exports.app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server, { perMessageDeflate:false}),
multer = require('multer'),
upload = multer({ dest: 'uploads/' }),
port = process.env.PORT || 3000,
azure = require('azure-storage'),
blobService = azure.createBlobService(process.env.AZURE_STORAGE_CONNECTION_STRING),
tmp = require('tmp'),
path = require('path');
// Grabbed this from azure blob storage
let baseUrlPath = 'https://tinygallery.blob.core.windows.net/pixelart/';
server.listen(port);
// set the view engine to ejs
app.set('view engine', 'ejs');
app.use('/public', express.static('public'));
app.get('/', function (req, res) {
// We're connecting to azure file service, pulling down the images that are currently saved, and displaying them.
blobService.listBlobsSegmented('pixelart', null, function (err, result) {
console.log(err);
console.log(result);
let images = [];
result.entries.forEach((blob) => {
let fullPath = baseUrlPath + blob.name;
console.log(fullPath);
images.push(fullPath);
})
res.render('pages/index', {
images: images
});
});
});
// Opening socket connection, logging messages to the console on success / error.
iotClient.open( err => {
if (err) {
console.error('*** Could not connect: ' + err.message);
} else {
console.log('IOT client connected');
io.on('connection', function (socket) {
console.log('socket.io client connected');
socket.on('artPiece', function (artPiece) {
console.log('received artPiece "' + artPiece + '"');
let message = new IotMessage(artPiece);
console.log('Sending message: ' + message.getData());
iotClient.send(process.env.IOT_DEVICE_ID, message, printResultFor('send'));
});
});
}
});
// upload for images
app.post('/upload', upload.single('galleryIcon'), function (req, res) {
let savedFile = req.file.path + ".gif";
fs.renameSync(req.file.path, savedFile);
console.log('File saved to "' + savedFile + '"');
blobService.createContainerIfNotExists('pixelart', {
publicAccessLevel: 'blob'
}, (error, result, response) => {
console.log(error);
if (!error) {
blobService.createBlockBlobFromLocalFile('pixelart', path.basename(savedFile), savedFile, (error, result, response) => {
if (!error) {
// file uploaded
console.log('file uploaded');
fs.unlink('./' + savedFile, (err) => {
if (err) {
console.log("failed to delete local image:" + err);
} else {
console.log('successfully deleted local image');
}
});
}
});
}
});
res.send('youre doing great');
});
let printResultFor = op => {
return (err, res) => {
if (err) {
console.log(op + ' error: ' + err.toString());
} else {
console.log(op + ' status: ' + res.constructor.name);
}
};
}
let handleError = error => {
console.log(error);
}