Running node.js code in 2 mouse clicks using haiku-http

Hero Image

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:

http://haiku.cloudapp.net/?x-haiku-handler=https://raw.github.com/tjanczuk/haiku-http/master/samples/haikus/hello.js

   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:

http://haiku.cloudapp.net/?x-haiku-handler=https://raw.github.com/tjanczuk/haiku-http/master/samples/haikus/request.js&word=war

Peace:

http://haiku.cloudapp.net/?x-haiku-handler=https://raw.github.com/tjanczuk/haiku-http/master/samples/haikus/request.js&word=peace

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:

http://haiku.cloudapp.net/?x-haiku-handler=https://raw.github.com/tjanczuk/haiku-http/master/samples/haikus/mongo.js

Only documents for ‘app1.com’ host:

http://haiku.cloudapp.net/?x-haiku-handler=https://raw.github.com/tjanczuk/haiku-http/master/samples/haikus/mongo.js&host=app1.com

var query = require('url').parse(req.url, true).query  
var mongoUrl = query['db'] || 'mongodb://arr:arr@staff.mongohq.com: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!


ArrowPrevious
NextArrow

Most Recent

24 January 2022
Run Node.js from Google Sheets

Import data from any API or data source to Google Sheets using Node.js, NPM, and Fusebit Connectors.

21 January 2022
Linear and Discord Slash Commands

Learn how to build an interactive Slash Command for a Discord bot that lets users create a new issue in Linear.

19 January 2022
Add Slash Commands to Your Discord Bot!

Slash Commands are an extremely powerful way to provide rich interactivity for members of your Discord server, all you have to do is type “/” and you're ready to use your favorite bot.