Skip to content

Instantly share code, notes, and snippets.

@grimen
Last active August 29, 2015 13:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grimen/11001674 to your computer and use it in GitHub Desktop.
Save grimen/11001674 to your computer and use it in GitHub Desktop.
module.exports = function(requestData, done) {
var err = {}, responseData = {hello: "world"};
done(err, responseData)
};
var eyes = require('eyes');
var debug = require('debug');
function getParams(req){
eyes.inspect("REQ", req.method);
switch (req.method) {
case "GET":
return req.query;
break;
case "POST":
console.log(req.body);
return req.body;
break;
case "PUT":
//
break;
case "DELETE":
//
break;
default:
// noop
}
}
module.exports.HTTP = function(fn){
return function(req, res, next){
var api_req = getParams(req);
debug('HTTP')(api_req);
fn(api_req, function(err, api_res){
if (err) throw err
if(req.method === "GET"){
// res.setHeader("Cache-Control", "max-age=10"); // 10 seconds
// res.setHeader("Expires", new Date(Date.now() + 10).toUTCString());
// res.setHeader("Cache-Control", "no-store"); // 10 seconds
}
res.header('Access-Control-Allow-Origin', req.get('origin') || req.get('Origin'));
res.header("Access-Control-Allow-Credentials", true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version');
res.send(api_res);
}, req, res, next);
}
};
module.exports.WS = function(fn, socket) {
return function(api_req){
debug('WS')(api_req);
fn(api_req, function(err, api_res) {
if (err) throw err
socket.emit(api_res.type, api_res);
});
}
};
var HTTP = require("./api.services").HTTP;
var WS = require("./api.services").WS;
var Users = require("./api.controllers.users");
var http = require('express')();
var server = http.createServer(http);
var ws = require('socket.io').listen(server);
http.get('/users/', HTTP(Users.get));
ws.sockets.on('connection', function(socket) {
socket.on('/users/', WS(Users.get, socket));
});
server.listen(process.env.HTTP_PORT);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment