aboutsummaryrefslogtreecommitdiffstats
path: root/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2014-07-20 11:24:09 -0700
committerAdam Soltys <[email protected]>2014-07-20 11:40:36 -0700
commit51daca704f27e59462c6d8b1731867007c8fd273 (patch)
treee573e97c4704710ff1fd8dbd5ff033504847890a /routes
parent9b8d66d8a7c9417132358ac2b0f0dbfa4fcd9fcd (diff)
downloadcoinos-server-51daca704f27e59462c6d8b1731867007c8fd273.tar.gz
coinos-server-51daca704f27e59462c6d8b1731867007c8fd273.zip
Precompile all coffeescript
Diffstat (limited to 'routes')
-rw-r--r--routes/calculator.js41
-rw-r--r--routes/sessions.js34
-rw-r--r--routes/transactions.js48
-rw-r--r--routes/users.js130
4 files changed, 253 insertions, 0 deletions
diff --git a/routes/calculator.js b/routes/calculator.js
new file mode 100644
index 00000000..834d9bbc
--- /dev/null
+++ b/routes/calculator.js
@@ -0,0 +1,41 @@
+(function() {
+ exports["new"] = function(req, res) {
+ return res.render('calculator/setup');
+ };
+
+ exports.sweep = function(req, res) {
+ return res.render('calculator/sweep', {
+ layout: 'layout'
+ });
+ };
+
+ exports.show = function(req, res) {
+ return res.render('calculator/show', {
+ layout: 'layout'
+ });
+ };
+
+ exports.ticker = function(req, res) {
+ var fs;
+ fs = require('fs');
+ return fs.readFile("./public/js/rates.json", function(err, data) {
+ var e, exchange, _base, _base1, _base2;
+ (_base = req.query).currency || (_base.currency = 'CAD');
+ (_base1 = req.query).symbol || (_base1.symbol = 'quadrigacx');
+ (_base2 = req.query).type || (_base2.type = 'bid');
+ try {
+ exchange = JSON.parse(data)[req.query.currency][req.query.symbol]['rates'][req.query.type].toString();
+ } catch (_error) {
+ e = _error;
+ exchange = "0";
+ }
+ res.writeHead(200, {
+ 'Content-Length': exchange.length,
+ 'Content-Type': 'text/plain'
+ });
+ res.write(exchange);
+ return res.end();
+ });
+ };
+
+}).call(this);
diff --git a/routes/sessions.js b/routes/sessions.js
new file mode 100644
index 00000000..f038b484
--- /dev/null
+++ b/routes/sessions.js
@@ -0,0 +1,34 @@
+(function() {
+ module.exports = function(passport) {
+ return {
+ "new": function(req, res) {
+ return res.render('sessions/new');
+ },
+ create: function(req, res, next) {
+ return passport.authenticate('local', function(err, user, info) {
+ if (err) {
+ return next(err);
+ }
+ if (!user) {
+ return res.render('sessions/new', {
+ badpw: true
+ });
+ }
+ return req.login(user, function(err) {
+ var url;
+ if (err) {
+ return next(err);
+ }
+ url = "/" + user.username + "/edit";
+ return res.redirect(url);
+ });
+ })(req, res, next);
+ },
+ destroy: function(req, res) {
+ req.logout();
+ return res.redirect('/login');
+ }
+ };
+ };
+
+}).call(this);
diff --git a/routes/transactions.js b/routes/transactions.js
new file mode 100644
index 00000000..97fc5659
--- /dev/null
+++ b/routes/transactions.js
@@ -0,0 +1,48 @@
+(function() {
+ var db;
+
+ db = require('../redis');
+
+ module.exports = {
+ json: function(req, res) {
+ var r, user;
+ user = req.params.user;
+ r = {
+ 'transactions': []
+ };
+ return db.lrange("" + user + ":transactions", 0, -1, function(err, transactions) {
+ var i, process;
+ process = function(err, t) {
+ r.transactions.push(t);
+ if (i >= transactions.length) {
+ res.write(JSON.stringify(r));
+ return res.end();
+ } else {
+ return db.hgetall("" + user + ":transactions:" + transactions[i++], process);
+ }
+ };
+ i = 0;
+ return db.hgetall("" + user + ":transactions:" + transactions[i++], process);
+ });
+ },
+ create: function(req, res) {
+ var user;
+ user = req.params.user;
+ return db.incr('transactions', function(err, id) {
+ return db.hmset("" + user + ":transactions:" + id, req.body, function() {
+ return db.rpush("" + user + ":transactions", id, function() {
+ res.write(JSON.stringify(req.body));
+ return res.end();
+ });
+ });
+ });
+ },
+ index: function(req, res) {
+ return res.render('transactions/index', {
+ user: req.params.user,
+ layout: 'layout'
+ });
+ }
+ };
+
+}).call(this);
diff --git a/routes/users.js b/routes/users.js
new file mode 100644
index 00000000..137d5bb9
--- /dev/null
+++ b/routes/users.js
@@ -0,0 +1,130 @@
+(function() {
+ var bcrypt, db;
+
+ db = require("../redis");
+
+ bcrypt = require('bcrypt');
+
+ module.exports = function(sessions) {
+ return {
+ exists: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ if (obj != null) {
+ res.write('true');
+ } else {
+ res.write('false');
+ }
+ return res.end();
+ });
+ },
+ json: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ delete obj['password'];
+ res.writeHead(200, {
+ "Content-Type": "application/json"
+ });
+ res.write(JSON.stringify(obj));
+ return res.end();
+ });
+ },
+ index: function(req, res) {
+ return;
+ return db.keys('*', function(err, obj) {
+ res.write(JSON.stringify(obj));
+ return res.end();
+ });
+ },
+ list: function(req, res) {
+ return res.render('users/index', {
+ layout: 'layout'
+ });
+ },
+ show: function(req, res) {
+ return db.hgetall("user:" + req.params.user, function(err, obj) {
+ if (obj) {
+ return res.render('calculator/show', {
+ user: req.params.user,
+ layout: 'layout'
+ });
+ } else {
+ return res.render('sessions/new', {
+ notice: true
+ });
+ }
+ });
+ },
+ "new": function(req, res) {
+ return res.render('users/new', {
+ js: (function() {
+ return global.js;
+ }),
+ css: (function() {
+ return global.css;
+ })
+ });
+ },
+ create: function(req, res) {
+ var errormsg, userkey;
+ errormsg = "";
+ userkey = "user:" + req.body.username;
+ return db.hgetall(userkey, function(err, obj) {
+ if (obj) {
+ return res.redirect(req.body.username);
+ } else {
+ if (req.body.confirm !== req.body.password) {
+ errormsg += "Passwords must match";
+ return res.render('users/new', {
+ js: (function() {
+ return global.js;
+ }),
+ css: (function() {
+ return global.css;
+ }),
+ error: errormsg
+ });
+ }
+ return bcrypt.hash(req.body.password, 12, function(err, hash) {
+ db.sadd("users", userkey);
+ return db.hmset(userkey, {
+ username: req.body.username,
+ password: hash,
+ email: req.body.email
+ }, function() {
+ req.headers['referer'] = "/" + req.body.username + "/edit";
+ return sessions.create(req, res);
+ });
+ });
+ }
+ });
+ },
+ edit: function(req, res) {
+ return res.render('calculator/setup', {
+ user: req.params.user,
+ layout: 'layout'
+ });
+ },
+ update: function(req, res) {
+ if (!(req.params.user === req.user.username || req.user.username === 'admin' || req.user.username === 'ben')) {
+ return;
+ }
+ if (req.body.password === '') {
+ delete req.body.password;
+ }
+ return db.hmset("user:" + req.params.user, req.body, function() {
+ if (req.body.password == null) {
+ return res.redirect("/" + req.params.user);
+ } else {
+ return bcrypt.hash(req.body.password, 12, function(err, hash) {
+ return db.hmset("user:" + req.params.user, {
+ password: hash
+ }, function() {
+ return res.redirect("/" + req.params.user);
+ });
+ });
+ }
+ });
+ }
+ };
+ };
+
+}).call(this);