Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Functional web framework.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 tests
Octocat-spinner-32 README.mkd
Octocat-spinner-32 handlebars.js
Octocat-spinner-32 index.js
Octocat-spinner-32 package.json
Octocat-spinner-32 rfc822.js
README.mkd

tako -- Functional web framework.

Install

  npm install tako

Add Sockets

  npm install socket.io

Or from source:

  git clone git://github.com/mikeal/tako.git 
  cd tako
  npm link

Usage

var tako = require('tako')
  , request = require('request')
  , path = require('path')
  , app = tako()
  ;

app.route('/static/*').files(path.join(__dirname, 'static'))

app.route('/proxypass', function (req, resp) {
  req.pipe(request("http://otherserver.com"+req.url)).pipe(resp)
})

app.route('/hello.json').json({msg:'hello!'})

app.route('/plaintext').text('I like text/plain')

app.route('/')
  .html(function (req, resp) {
    request('http://me.iriscouch.com/db', {json:true}, function (e, r) {
      if (e) return resp.error(e)
      if (r.statusCode !== 200) return resp.error(r)
      resp.end('<html><head>cool</head><body>'+r.body.index+'</body></html>')
    })
  })
  .methods('GET')
  ;

// Ported example from socket.io docs to show integration
app.sockets.on('connection', function (socket) {
  app.sockets.emit('news', { will: 'be received by everyone'});
  socket.on('disconnect', function () {
    app.sockets.emit('user disconnected')
  })
})

app.httpServer.listen(80)
app.httpsServer.listen(443)

Routing multiple domains

var tako = require('../index')
  , app1 = tako()
  , app2 = tako()
  , default = tako()
  , router = tako.router()
  ;

app1.route('/name').text('app1')
app2.route('/name').text('app2')
default.route('/name').text('default')

router.host('app1.localhost', app1)
router.host('app2.localhost', app2)
router.default(default)

router.httpServer.listen(80)
router.httpsServer.listen(443)
Something went wrong with that request. Please try again.