Skip to content

Instantly share code, notes, and snippets.

@shinecita
Created March 14, 2013 16:29
Show Gist options
  • Save shinecita/5162819 to your computer and use it in GitHub Desktop.
Save shinecita/5162819 to your computer and use it in GitHub Desktop.
Model.resizeAvatar = function (user, done) {
var src = user.facebook.avatar
, filename = user._id.toString()
, url = '/avatars/' + filename;
if(src.indexOf('http') == -1 || src.indexOf('https') == -1) {
src = 'http:'+src;
};
debug("avatar :", user.facebook.avatar)
debug("avatar src:", src)
request(src, {encoding: null}, function(err, res, picture) {
debug("Requested src", res.statusCode)
if (err) return done(err);
debug("resizing image srcData...")
im.resize({
srcData: picture,
width: 200,
height: "200^",
customArgs: [
"-gravity", "center",
"-extent", "200x200"
]
}, function(err, stdout, stderr){
debug("Image resized result:err, stdout, stderr:", err, stdout, stderr)
if (err) return done(err);
debug("Uploading to s3..", url)
var upload = s3Client.put(url, {
'Content-Length': stdout.length,
'Content-Type': 'image/jpeg',
'x-amz-acl': 'public-read'
});
if (err) return done(err);
upload.on('response', function (res) {
if (200 == res.statusCode) {
user.facebook.avatar = upload.url
User
.save(user, function(err) {
if (err) return done(err);
User.byId(user._id, done);
});
} else {
done(new Error('Error Uploading'));
}
});
upload.end(stdout, 'binary');
});
});
}
Model.createFacebookMarker = function (user, done) {
var filename = user._id.toString();
debug("resizing avatar...")
User.resizeAvatar(user, function(err, user) {
debug("Avatar resized...", err)
if (err) return done(err);
debug("... ok")
debug("Generating Marker..")
generateMarker(user.facebook.avatar, user._id.toString(), function (err, markerUrl) {
debug("... Generating Marker...ok.", err, markerUrl)
if (err) return done(err);
user.markerUrl = markerUrl+ "?" + Date.now();
debug("... Saving User...")
User
.save(user, function(err) {
debug("... ok.", err)
if (err) return done(err);
User.byId(user._id, done);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment