read
If you are reading this, you have obviously clicked already once to get to this post. So you only have 1 click left – use it on one of the sample links below.
Then you can experiment more with haiku-http, read about haiku-http vision and design, or get the code on GitHub.
Hello, world
Here is the ‘Hello, world’ rite of passage:
1
2
res.writeHead(200)
res.end('Hello, world!\n')
War and peace
How many times do the words “war” and “peace” appear on http://reuters.com today?
War:
Peace:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var query = require('url').parse(req.url, true).query
var word = query.word || 'the'
var request = require('request')
request('http://www.reuters.com', function (error, response, body) {
if (error || response.statusCode !== 200) {
res.writeHead(500)
res.end('Unexpected error getting http://reuters.com.\n')
}
else {
var count = 0, index = 0
while (0 !== (index = (body.indexOf(word, index) + 1)))
count++
res.writeHead(200)
res.end('Number of times the word "' + word + '" occurs on http://reuters.com is: ' + count + '\n')
}
})
Fetch data from MongoDB
Return documents from MongoDB that match search criteria.
All documents:
Only documents for ‘app1.com’ host:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var query = require('url').parse(req.url, true).query
var mongoUrl = query['db'] || 'mongodb://arr:[email protected]:10024/arr'
var filter = query['host'] ? { hosts: query['host'] } : {}
require('mongodb').connect(mongoUrl, function (err, db) {
if (notError(err))
db.collection('apps', function (err, apps) {
if (notError(err))
apps.find(filter).toArray(function (err, docs) {
if (notError(err)) {
res.writeHead(200)
res.end(JSON.stringify(docs))
}
})
})
})
function notError(err) {
if (err) {
res.writeHead(500)
res.end(err)
}
return !err
}
Time for more
Experiment more with haiku-http, read about haiku-http vision and design, or get the code on GitHub.
Comments welcome!