implemented send image to the goImgServer and save the url in the user avatar

This commit is contained in:
arnaucode
2017-06-21 20:01:55 +02:00
parent ef2ac0666f
commit 3f2ec7a6e3
4 changed files with 333 additions and 214 deletions

View File

@@ -15,6 +15,8 @@ app.set('superSecret', config.secret); // secret variable
var crypto = require('crypto'); var crypto = require('crypto');
/* */ /* */
var request = require('request');
//POST - Insert a new User in the DB //POST - Insert a new User in the DB
exports.signup = function(req, res) { exports.signup = function(req, res) {
@@ -73,7 +75,9 @@ exports.login = function(req, res) {
// if user is found and password is right // if user is found and password is right
// create a token // create a token
var token = jwt.sign({foo: 'bar'}, app.get('superSecret'), { var token = jwt.sign({
foo: 'bar'
}, app.get('superSecret'), {
//expiresInMinutes: 1440 // expires in 24 hours //expiresInMinutes: 1440 // expires in 24 hours
//expiresIn: '60m' //expiresIn: '60m'
}); });
@@ -110,29 +114,37 @@ exports.getAllUsers = function(req, res) {
}); });
}; };
exports.getUserById = function(req, res) { exports.getUserById = function(req, res) {
userModel.findOne({_id: req.params.userid}) userModel.findOne({
_id: req.params.userid
})
.lean() .lean()
.populate('travels', 'title from to date type') .populate('travels', 'title from to date type')
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'User not found.'}); res.json({
success: false,
message: 'User not found.'
});
} else if (user) { } else if (user) {
res.status(200).jsonp(user); res.status(200).jsonp(user);
} }
}); });
}; };
exports.getUserByToken = function(req, res) { exports.getUserByToken = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({
'token': req.headers['x-access-token']
})
.lean() .lean()
.populate('travels', 'title from to date') .populate('travels', 'title from to date')
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'User not found.'}); res.json({
success: false,
message: 'User not found.'
});
} else if (user) { } else if (user) {
res.status(200).jsonp(user); res.status(200).jsonp(user);
@@ -141,19 +153,15 @@ exports.getUserByToken = function (req, res) {
}; };
exports.getTravelsByUserId = function(req, res) { exports.getTravelsByUserId = function(req, res) {
travelModel.find( travelModel.find({
{
user: req.params.userid user: req.params.userid
} })
)
.lean() .lean()
.exec(function(err, travels) { .exec(function(err, travels) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
travelModel.find( travelModel.find({
{
joins: req.params.userid joins: req.params.userid
} })
)
.lean() .lean()
.exec(function(err, joins) { .exec(function(err, joins) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
@@ -165,35 +173,50 @@ exports.getTravelsByUserId = function (req, res) {
}); });
}; };
exports.getUserLikes = function(req, res) { exports.getUserLikes = function(req, res) {
userModel.findOne({_id: req.params.userid}) userModel.findOne({
_id: req.params.userid
})
.lean() .lean()
.populate('likes', 'username avatar description') .populate('likes', 'username avatar description')
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'User not found.'}); res.json({
success: false,
message: 'User not found.'
});
} else if (user) { } else if (user) {
res.status(200).jsonp(user.likes); res.status(200).jsonp(user.likes);
} }
}); });
}; };
exports.getNotifications = function(req, res) { exports.getNotifications = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({
'token': req.headers['x-access-token']
})
.lean() .lean()
.populate('notifications') .populate('notifications')
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'User not found.'}); res.json({
success: false,
message: 'User not found.'
});
} else if (user) { } else if (user) {
//res.status(200).jsonp(user.notifications); //res.status(200).jsonp(user.notifications);
notificationModel.find({'user': user._id}) notificationModel.find({
'user': user._id
})
.lean() .lean()
.exec(function(err, notifications) { .exec(function(err, notifications) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!notifications) { if (!notifications) {
res.json({success: false, message: 'No pendent notifications.'}); res.json({
success: false,
message: 'No pendent notifications.'
});
} else if (notifications) { } else if (notifications) {
res.status(200).jsonp(notifications); res.status(200).jsonp(notifications);
@@ -203,17 +226,64 @@ exports.getNotifications = function (req, res) {
}); });
}; };
exports.updateUser = function (req, res) { function getRandomInt(min, max) {
userModel.update({'token': req.headers['x-access-token']}, req.body, min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}
function postImage(req, res, filename, fileImg) {
url = "http://127.0.0.1:3050/image";
var importFile = function(fileImg) {
var decodedFile = new Buffer(fileImg, 'base64');
var r = request.post(url, function(err, httpResponse, body) {
if (err) {
console.log(err);
}
//console.log(body);
updateUserWithNewImages(req, res, body);
});
var form = r.form();
form.append('file', decodedFile, {
filename: filename + '.png'
});
}
importFile(fileImg);
}
function updateUserWithNewImages(req, res, imgUrl){
//adding random number to the url, to force ionic reload the image
req.body.avatar = imgUrl+ "?" + getRandomInt(1, 9999);
userModel.update({
'token': req.headers['x-access-token']
}, req.body,
function(err) { function(err) {
if (err) return console.log(err); if (err) return console.log(err);
exports.getUserByToken(req, res); exports.getUserByToken(req, res);
}); });
}
exports.updateUser = function(req, res) {
if (req.body.newAvatar) {
urlImg = postImage(req, res, "avatar_"+req.body.username, req.body.newAvatar);
}
/*if (req.body.newFaircoin) {
urlImg = postImage(req, res, "fairdir_"+req.body.username,req.body.newFaircoin);
}*/
if (!req.body.newAvatar){
updateUserWithNewImages(req, res, req.body.avatar);
}
/*userModel.update({
'token': req.headers['x-access-token']
}, req.body,
function(err) {
if (err) return console.log(err);
exports.getUserByToken(req, res);
});*/
}; };
//DELETE - Delete a user with specified ID //DELETE - Delete a user with specified ID
exports.deleteUser = function(req, res) { exports.deleteUser = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({
'token': req.headers['x-access-token']
})
.exec(function(err, user) { .exec(function(err, user) {
user.remove(function(err) { user.remove(function(err) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
@@ -222,21 +292,31 @@ exports.deleteUser = function(req, res) {
}); });
}; };
exports.likeUser = function(req, res) { exports.likeUser = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({
'token': req.headers['x-access-token']
})
.exec(function(err, userL) { .exec(function(err, userL) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!userL) { if (!userL) {
res.json({success: false, message: 'no user with that token, login again'}); res.json({
success: false,
message: 'no user with that token, login again'
});
} else if (userL) { } else if (userL) {
userModel.findOne({ userModel.findOne({
_id: req.params.userid, _id: req.params.userid,
likes: {'$ne': userL._id} likes: {
'$ne': userL._id
}
}) })
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'Like not posible, user not exist, or like was already done'}); res.json({
success: false,
message: 'Like not posible, user not exist, or like was already done'
});
} else if (user) { } else if (user) {
//res.status(200).jsonp(user); //res.status(200).jsonp(user);
var notification = new notificationModel({ var notification = new notificationModel({
@@ -265,11 +345,16 @@ exports.likeUser = function(req, res) {
}); });
}; };
exports.unlikeUser = function(req, res) { exports.unlikeUser = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({
'token': req.headers['x-access-token']
})
.exec(function(err, userL) { .exec(function(err, userL) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!userL) { if (!userL) {
res.json({success: false, message: 'no user with that token, login again'}); res.json({
success: false,
message: 'no user with that token, login again'
});
} else if (userL) { } else if (userL) {
userModel.findOne({ userModel.findOne({
@@ -279,7 +364,10 @@ exports.unlikeUser = function(req, res) {
.exec(function(err, user) { .exec(function(err, user) {
if (err) return res.send(500, err.message); if (err) return res.send(500, err.message);
if (!user) { if (!user) {
res.json({success: false, message: 'Unlike not posible'}); res.json({
success: false,
message: 'Unlike not posible'
});
} else if (user) { } else if (user) {
//res.status(200).jsonp(user); //res.status(200).jsonp(user);
var notification = new notificationModel({ var notification = new notificationModel({

View File

@@ -20,7 +20,8 @@
"jsonwebtoken": "latest", "jsonwebtoken": "latest",
"method-override": "^2.1.2", "method-override": "^2.1.2",
"mongoose": "latest", "mongoose": "latest",
"mongoose-unique-validator": "^1.0.2",
"morgan": "latest", "morgan": "latest",
"mongoose-unique-validator": "^1.0.2" "request": "^2.81.0"
} }
} }

View File

@@ -18,10 +18,13 @@ mongoose.connect(config.database, function(err, res) {
app.set('superSecret', config.secret); // secret variable app.set('superSecret', config.secret); // secret variable
// Middlewares // Middlewares
app.use(bodyParser.urlencoded({ /*app.use(bodyParser.urlencoded({
extended: false extended: false
})); }));
app.use(bodyParser.json()); app.use(bodyParser.json());*/
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(methodOverride()); app.use(methodOverride());
// use morgan to log requests to the console // use morgan to log requests to the console

27
testSendImage.js Normal file
View File

@@ -0,0 +1,27 @@
var request = require('request');
function postImage(fileImg) {
url = "http://127.0.0.1:3050/image";
//var fileImg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
var fileImg = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
var importFile = function(aux, fileImg) {
var decodedFile = new Buffer(fileImg, 'base64');
var r = request.post(url, function(err, httpResponse, body) {
if (err) {
console.log(err);
}
console.log(body);
console.log(aux);
});
var form = r.form();
form.append('file', decodedFile, {
filename: 'temp.png'
});
return (r);
}
a = importFile("a",fileImg);
}
postImage("girada.png");