Skip to content

Commit

Permalink
abstract logic into said controllers
Browse files Browse the repository at this point in the history
  • Loading branch information
samccone committed Apr 7, 2013
1 parent 837f2b3 commit 64ea88b
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 131 deletions.
27 changes: 23 additions & 4 deletions controllers/comments.js
@@ -1,4 +1,5 @@
var mongoose = require('mongoose');
var mongoose = require('mongoose');
var sanitize = require('validator').sanitize;

function findByFrameID(id, cb) {
global.models.Comment.find({
Expand All @@ -8,9 +9,27 @@ function findByFrameID(id, cb) {
.exec(cb);
}

function create(obj, cb) {
var comment = new global.models.Comment(obj);
comment.save(cb)
function create(req, res) {
req.check('comment', "comment can not be blank").notEmpty();
req.sanitize('comment').escape();

if (req.validationErrors()) {
res.render('/frames/'+req.body.frameID, {errors: req.validationErrors()});
} else {
var comment = new global.models.Comment({
text: req.body.comment,
_frame: req.body.frameID,
_user: req.user
});

comment.save(function(err, model) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
res.redirect('/frames/'+req.body.frameID);
}
});
}
}

module.exports = {
Expand Down
102 changes: 95 additions & 7 deletions controllers/frames.js
@@ -1,16 +1,92 @@
var s3Upload = require('../util/images/upload_to_s3');
var s3Upload = require('../util/images/upload_to_s3');

module.exports = {
find: find,
create: create
function getRecent(req, res) {
global.models.frame.find({}, function(err, d) {
if (err) {
res.render('home', {
errors: err
});
} else {
res.render('home', {
frames: d
});
}
});
}

function show(req, res) {
require('./controllers').Comments.findByFrameID(req.params.id, function(err, comments) {
if (err) {
res.render('home', {errors: err});
} else {
global.models.frame.findOne({_id: req.params.id})
.populate('_user')
.exec(function(err, d) {
if (err) {
res.render('home', {errors: err});
} else {
if (d) {
res.render('frames/show', {data: d, comments: comments, user: req.user});
} else {
res.redirect('/');
}
}
});
}
});
}

function remove(req, res) {
global.models.frame.findOne({_id: req.params.id})
.populate('_user')
.exec(function(err, d) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
if (d._user.email == req.user.email) {
global.models.frame.remove({_id: req.params.id}, function(err) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
res.redirect('/');
}
});
} else {
res.render('/frames/'+req.body.frameID, {errors: "you can not delete this"});
}
}
});
}


function find(query, cb) {
global.models.frame.find(query, cb);
function create(req, res) {
req.check('title', 'frame requires a title').notEmpty();
validUpload = isValidUpload(req);

if (req.validationErrors() || !validUpload) {
if (!validUpload) {
res.render('frames/new', {errors: "a valid image is required"});
} else {
res.render('frames/new', {errors: req.validationErrors()});
}
} else {
uploadToS3({
title: req.body.title,
caption: req.body.caption,
upload: req.files.image,
_user: req.user
}, function(err, obj) {
if (err) {
res.render('frames/new', {errors: err});
} else {
res.redirect('/');
}
});
}
}

function create(obj, cb) {

function uploadToS3(obj, cb) {
s3Upload({
path: obj.upload.path,
fileName: encodeURIComponent(obj.upload.name)
Expand All @@ -24,3 +100,15 @@ function create(obj, cb) {
}
});
}

function isValidUpload(req) {
var validType = ~["image/png", "image/jpg", "image/jpeg"].indexOf(req.files.image.type);
return Boolean(validType);
}

module.exports = {
getRecent: getRecent,
create: create,
remove: remove,
show: show
}
4 changes: 2 additions & 2 deletions package.json
@@ -1,13 +1,13 @@
{
"name": "ffframe",
"version": "0.0.0-4",
"version": "0.0.0-5",
"description": "social pj",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"domains": [
"domains": [
"ffframe.com",
"www.ffframe.com"
],
Expand Down
126 changes: 8 additions & 118 deletions router/routes.js
@@ -1,129 +1,19 @@
var controllers = require('../controllers/controllers');
var _ = require('underscore');
var sanitize = require('validator').sanitize;

module.exports = function(server, passport) {
server.get("/", loggedIn, function(req, res) {
controllers.Frames.find({}, function(err, d) {
if (err) {
res.render('home', {
errors: err
});
} else {
res.render('home', {
frames: d
});
}
});
});
server.get("/", loggedIn, controllers.Frames.getRecent);

server.get('/auth/google', passport.authenticate('google'));
server.get('/auth/google/return', passport.authenticate('google', {failureRedirect: '/login'}), function(req, res) { res.redirect('/'); });

server.get('/auth/google/return', passport.authenticate('google', {failureRedirect: '/login'}), function(req, res) {
res.redirect('/');
});
server.get('/login', function(req, res) { res.render('login/login'); });

server.get('/login', function(req, res) {
res.render('login/login');
});
server.get("/frames/new", loggedIn, function(req, res) { res.render('frames/new'); });
server.get("/frames/:id/delete", loggedIn, controllers.Frames.remove);
server.get("/frames/:id", loggedIn, controllers.Frames.show);
server.post('/frames/new', loggedIn, controllers.Frames.create);

server.get("/frames/new", loggedIn, function(req, res) {
res.render('frames/new');
});

server.get("/frames/:id/delete", loggedIn, function(req, res) {
global.models.frame.findOne({_id: req.params.id})
.populate('_user')
.exec(function(err, d) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
if (d._user.email == req.user.email) {
global.models.frame.remove({_id: req.params.id}, function(err) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
res.redirect('/');
}
});
} else {
res.render('/frames/'+req.body.frameID, {errors: "you can not delete this"});
}
}
});
});

server.get("/frames/:id", loggedIn, function(req, res) {
controllers.Comments.findByFrameID(req.params.id, function(err, comments) {
if (err) {
res.render('home', {errors: err});
} else {
global.models.frame.findOne({_id: req.params.id})
.populate('_user')
.exec(function(err, d) {
if (err) {
res.render('home', {errors: err});
} else {
if (d) {
res.render('frames/show', {data: d, comments: comments, user: req.user});
} else {
res.redirect('/');
}
}
});
}
});
});

server.post('/frames/new', loggedIn, function(req, res) {
req.check('title', 'frame requires a title').notEmpty();
validUpload = isValidUpload(req);
if (req.validationErrors() || !validUpload) {
if (!validUpload) {
res.render('frames/new', {errors: "a valid image is required"});
} else {
res.render('frames/new', {errors: req.validationErrors()});
}
} else {
controllers.Frames.create({
title: req.body.title,
caption: req.body.caption,
upload: req.files.image,
_user: req.user
}, function(err, obj) {
if (err) {
res.render('frames/new', {errors: err});
} else {
res.redirect('/');
}
});
}
});

server.post('/comments/new', function(req, res) {
req.check('comment', "comment can not be blank").notEmpty();
if (req.validationErrors()) {
res.render('/frames/'+req.body.frameID, {errors: req.validationErrors()});
} else {
req.sanitize('comment').escape();
controllers.Comments.create({
text: req.body.comment,
_frame: req.body.frameID,
_user: req.user
}, function(err, model) {
if (err) {
res.render('/frames/'+req.body.frameID, {errors: err});
} else {
res.redirect('/frames/'+req.body.frameID);
}
});
}
});
}

function isValidUpload(req) {
var validType = ~["image/png", "image/jpg", "image/jpeg"].indexOf(req.files.image.type);
return Boolean(validType);
server.post('/comments/new', controllers.Comments.create);
}

function loggedIn(req, res, done) {
Expand Down

0 comments on commit 64ea88b

Please sign in to comment.