Skip to content

Instantly share code, notes, and snippets.

@iwillwen
Last active December 30, 2015 19:08
Show Gist options
  • Save iwillwen/7871716 to your computer and use it in GitHub Desktop.
Save iwillwen/7871716 to your computer and use it in GitHub Desktop.

Revisions

  1. iwillwen revised this gist Dec 9, 2013. 1 changed file with 16 additions and 2 deletions.
    18 changes: 16 additions & 2 deletions app_express.js
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,6 @@
    var express = require('express');
    var redis = require('redis');
    var getRawBody = require('raw-body')

    var client = redis.createClient();

    @@ -16,6 +17,19 @@ app.use(express.cookieParser('webjs'));
    app.use(express.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }));
    app.use(express.compiler({ enable: [ 'less' ] }));
    app.use(express.compress());
    app.use(function(req, res, next) {
    getRawBody(req, {
    length: req.headers['content-length'],
    limit: '1mb',
    encoding: 'utf8'
    }, function (err, string) {
    if (err)
    return next(err)

    req.body = string
    next()
    })
    })

    app.get('/', function(req, res) {
    res.send('Hello World!');
    @@ -43,7 +57,7 @@ app.get('/get/:key': function(req, res, next) {
    }
    });
    app.put('/set/:key', function(req, res, next) {
    app.get('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
    app.get('redisClient').set(req.params.key, req.body, function(err) {
    if (err) {
    return next(err);
    }
    @@ -61,7 +75,7 @@ app.post('/incr/:key', function(req, res, next) {
    });
    })
    app.post('/append/:key', function(req, res, next) {
    app.get('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
    app.get('redisClient').append(req.params.key, req.body, function(err, length) {
    if (err) {
    return next(err);
    }
  2. iwillwen revised this gist Dec 9, 2013. 3 changed files with 183 additions and 2 deletions.
    3 changes: 1 addition & 2 deletions app.js
    Original file line number Diff line number Diff line change
    @@ -20,7 +20,7 @@ web.run(process.argv[2] || 8080)
    web.cookieParser('webjs'),
    web.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }),
    web.compiler({ enable: [ 'less' ] }),
    // web.compress(),
    web.compress(),
    function(req, res, next) {
    // Response Pipeline

    @@ -78,7 +78,6 @@ web.run(process.argv[2] || 8080)
    }
    })
    .put('/set/:key', function(req, res) {
    console.log(req);
    web.meta('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
    if (err) {
    return res.sendError(err);
    110 changes: 110 additions & 0 deletions app_1.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,110 @@
    var web = require('webjs');
    var redis = require('redis');

    var client = redis.createClient();

    // express style
    var app = web.create();
    app
    .config({
    'views': __dirname + '/views',
    'view engine': 'ejs', // jade, etc.
    'foo': 'bar',
    'redisClient': client,
    'readonly': false
    })
    .use(
    // Faster Middleware
    '/static', web.static(__dirname + '/assets'),
    // Normal Middlewares
    web.query(),
    web.cookieParser('webjs'),
    web.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }),
    web.compiler({ enable: [ 'less' ] }),
    // web.compress(),
    function(req, res, next) {
    // Response Pipeline

    var startTime = process.hrtime();
    res.on('pipelining', function() {
    var diff = process.hrtime(startTime);

    console.log(
    '%s %s - %d %s',
    req.method.toUpperCase(), req.url, res.statusCode, (diff[0] * 1e9 + diff[1]) / 1e6 + 'ms'
    );
    });

    next();
    }
    )
    .get({
    '/': function(req, res) {
    res.send('Hello World!');
    },
    '/echo/:msg': function(req, res) {
    res.send(req.params.msg);
    },
    '/view/:view': function(req, res) {
    res.render(req.params.view, {
    view: req.params.view
    });

    // /view/foo => render /views/foo.ejs
    },
    '/ping': function(req, res) {
    res.long();

    (function loop(arr) {
    if (arr.length > 0) {
    res.send(arr.shift());
    setTimeout(function() {
    loop(arr);
    }, 500);
    } else {
    res.end();
    }
    })(['p', 'o', 'n', 'g', '!']);
    },
    '/get/:key': function(req, res) {
    web.meta('redisClient').get(req.params.key, function(err, value) {
    if (err) {
    return res.sendError(err);
    }

    value = value || 'no such key';

    res.send(value);
    });
    }
    })
    .put('/set/:key', function(req, res) {
    web.meta('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
    if (err) {
    return res.sendError(err);
    }

    res.send('OK');
    });
    })
    .post({
    '/incr/:key': function(req, res) {
    web.meta('redisClient').incr(req.params.key, function(err, currValue) {
    if (err) {
    return res.sendError(err);
    }

    res.send(currValue);
    });
    },
    '/append/:key': function(req, res) {
    web.meta('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
    if (err) {
    return res.sendError(err);
    }

    res.send(length);
    });
    }
    })
    .listen(8080);
    72 changes: 72 additions & 0 deletions app_express.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,72 @@
    var express = require('express');
    var redis = require('redis');

    var client = redis.createClient();

    // express style
    var app = express.create();

    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
    app.set('foo', 'bar');
    app.set('redisClient', client);
    app.use('/static', express.static(__dirname + '/assets'));
    app.use(express.query());
    app.use(express.cookieParser('webjs'));
    app.use(express.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }));
    app.use(express.compiler({ enable: [ 'less' ] }));
    app.use(express.compress());

    app.get('/', function(req, res) {
    res.send('Hello World!');
    });
    app.get('/echo/:msg', function(req, res) {
    res.send(req.params.msg);
    });
    app.get('/view/:view', function(req, res) {
    res.render(req.params.view, {
    view: req.params.view
    });

    // /view/foo => render /views/foo.ejs
    });
    app.get('/get/:key': function(req, res, next) {
    app.get('redisClient').get(req.params.key, function(err, value) {
    if (err) {
    return next(err);
    }

    value = value || 'no such key';

    res.send(value);
    });
    }
    });
    app.put('/set/:key', function(req, res, next) {
    app.get('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
    if (err) {
    return next(err);
    }

    res.send('OK');
    });
    });
    app.post('/incr/:key', function(req, res, next) {
    app.get('redisClient').incr(req.params.key, function(err, currValue) {
    if (err) {
    return next(err);
    }

    res.send(currValue);
    });
    })
    app.post('/append/:key', function(req, res, next) {
    app.get('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
    if (err) {
    return next(err);
    }

    res.send(length);
    });
    });
    app.listen(8080);
  3. iwillwen revised this gist Dec 9, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion app.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    var web = require('webjs');
    var redis = require('redis');

    var client = redis.createClient(6379, '127.0.0.1');
    var client = redis.createClient();

    // webjs style
    web.run(process.argv[2] || 8080)
  4. iwillwen created this gist Dec 9, 2013.
    109 changes: 109 additions & 0 deletions app.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,109 @@
    var web = require('webjs');
    var redis = require('redis');

    var client = redis.createClient(6379, '127.0.0.1');

    // webjs style
    web.run(process.argv[2] || 8080)
    .config({
    'views': __dirname + '/views',
    'view engine': 'ejs', // jade, etc.
    'foo': 'bar',
    'redisClient': client,
    'readonly': false
    })
    .use(
    // Faster Middleware
    '/static', web.static(__dirname + '/assets'),
    // Normal Middlewares
    web.query(),
    web.cookieParser('webjs'),
    web.session({ secret: 'webjs', maxAge: 5 * 60 * 1000 }),
    web.compiler({ enable: [ 'less' ] }),
    // web.compress(),
    function(req, res, next) {
    // Response Pipeline

    var startTime = process.hrtime();
    res.on('pipelining', function() {
    var diff = process.hrtime(startTime);

    console.log(
    '%s %s - %d %s',
    req.method.toUpperCase(), req.url, res.statusCode, (diff[0] * 1e9 + diff[1]) / 1e6 + 'ms'
    );
    });

    next();
    }
    )
    .get({
    '/': function(req, res) {
    res.send('Hello World!');
    },
    '/echo/:msg': function(req, res) {
    res.send(req.params.msg);
    },
    '/view/:view': function(req, res) {
    res.render(req.params.view, {
    view: req.params.view
    });

    // /view/foo => render /views/foo.ejs
    },
    '/ping': function(req, res) {
    res.long();

    (function loop(arr) {
    if (arr.length > 0) {
    res.send(arr.shift());
    setTimeout(function() {
    loop(arr);
    }, 500);
    } else {
    res.end();
    }
    })(['p', 'o', 'n', 'g', '!']);
    },
    '/get/:key': function(req, res) {
    web.meta('redisClient').get(req.params.key, function(err, value) {
    if (err) {
    return res.sendError(err);
    }

    value = value || 'no such key';

    res.send(value);
    });
    }
    })
    .put('/set/:key', function(req, res) {
    console.log(req);
    web.meta('redisClient').set(req.params.key, req.body().toString() /* Raw body */, function(err) {
    if (err) {
    return res.sendError(err);
    }

    res.send('OK');
    });
    })
    .post({
    '/incr/:key': function(req, res) {
    web.meta('redisClient').incr(req.params.key, function(err, currValue) {
    if (err) {
    return res.sendError(err);
    }

    res.send(currValue);
    });
    },
    '/append/:key': function(req, res) {
    web.meta('redisClient').append(req.params.key, req.body().toString(), function(err, length) {
    if (err) {
    return res.sendError(err);
    }

    res.send(length);
    });
    }
    });