mirror of
https://github.com/samsonjs/kwikemon.git
synced 2026-03-25 09:05:51 +00:00
65 lines
1.3 KiB
JavaScript
65 lines
1.3 KiB
JavaScript
// Copyright 2013 Sami Samhuri
|
|
|
|
module.exports = {
|
|
create: create
|
|
, start: start
|
|
, stop: stop
|
|
};
|
|
|
|
var http = require('http')
|
|
, paramify = require('paramify')
|
|
, kwikemon = require('./kwikemon.js')
|
|
, _server
|
|
;
|
|
|
|
function create() {
|
|
return http.createServer(handleRequest);
|
|
}
|
|
|
|
function start(port, host) {
|
|
port = port || 1111;
|
|
host = host || '127.0.0.1';
|
|
_server = create();
|
|
_server.listen(port, host);
|
|
console.log('kwikemond listening on ' + host + ':' + port);
|
|
return _server;
|
|
}
|
|
|
|
function stop() {
|
|
_server.close();
|
|
_server = null;
|
|
}
|
|
|
|
function handleRequest(req, res) {
|
|
var name = req.url.replace(/^\//, '')
|
|
, type = 'html'
|
|
, m
|
|
;
|
|
if (name == 'favicon.ico') return res.end();
|
|
if (m = name.match(/\.(json|txt)$/)) {
|
|
type = m[1];
|
|
name = name.replace(RegExp('\.' + type + '$'), '');
|
|
}
|
|
if (name) {
|
|
kwikemon.fetch(name, function(err, text) {
|
|
if (err) {
|
|
res.end('error: ' + (err.message || 'unknown'));
|
|
return;
|
|
}
|
|
res.end(text);
|
|
});
|
|
}
|
|
// all
|
|
else {
|
|
kwikemon.fetchAll(function(err, monitors) {
|
|
if (err) {
|
|
res.end('error: ' + (err.message || 'unknown'));
|
|
return;
|
|
}
|
|
Object.keys(monitors).sort().forEach(function(name) {
|
|
res.write(name + ': ' + monitors[name] + '\n');
|
|
});
|
|
res.end();
|
|
});
|
|
}
|
|
}
|