initial implementation

This commit is contained in:
2019-05-06 18:23:41 +02:00
parent 0ae92d70cf
commit f3d0a430eb
2 changed files with 52 additions and 3 deletions
+50 -3
View File
@@ -3,22 +3,69 @@ var moment = require('moment');
var express = require('express');
require('express-async-errors');
var bodyParser = require('body-parser');
var multer = require('multer');
var storage = multer.memoryStorage();
var upload = multer({ storage: storage });
var request = require('request');
var app = express();
var fs = require('fs');
var md5 = require('md5');
var gm = require('gm');
var env = process.env.NODE_ENV || 'development';
var config = require('../config/vnc-avatarservice.js')[env];
console.log(moment().format("LTS") + ' Using configuration', config);
var servicePort = config.servicePort;
var outputDir = "";
if (config.outputDir.endsWith("/")) {
outputDir = config.outputDir;
} else {
outputDir = config.outputDir + "/";
}
app.use(bodyParser.json()); // for parsing application/json
var defaultresolution = config.defaultresolution;
var resolutions = config.resolutions;
if (resolutions.indexOf(defaultresolution) == -1) {
resolutions.push(defaultresolution);
}
// app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.json( { type: 'application/*+json' }));
app.use(bodyParser.raw( { type: 'image/*' }));
app.use(logger('dev'));
// function store
function resizeAndSave(buf, jidhash) {
if (resolutions.length > 0) {
for (var i = 0; i < resolutions.length; i++) {
var reso = resolutions[i];
var outFileName = outputDir + jidhash + '.jpg';
if (reso != defaultresolution) {
outFileName = outputDir + jidhash + '-' + parseInt(reso) + '.jpg';
}
gm(buf, 'image.png').resize(reso,reso).write(outFileName, function (err){
if (err) return handle(err);
console.log("wrote to " + outFileName);
});
}
}
}
app.post('/notify', async function (req, res) {
app.put('/avatarupload/:jid', async function (req, res) {
var jid = req.params.jid;
if (jid.indexOf("@") == -1) {
res.status(500).json('invalid jid/mail');
} else {
var jidhash = md5(jid);
var uploadedImageBuffer = req.body;
resizeAndSave(uploadedImageBuffer, jidhash);
res.json(jidhash);
}
});
var server = app.listen(servicePort, function () {
+2
View File
@@ -16,8 +16,10 @@
"express-async-errors": "3.1.1",
"fs": "^0.0.1-security",
"gm": "^1.23.1",
"md5": "^2.2.1",
"moment": "2.24.0",
"morgan": "1.9.1",
"multer": "^1.4.1",
"request": "2.88.0"
}
}