// imports var http = require('http'), querystring = require('querystring'), pg = require('pg'), url = require('url'), querystring = require('querystring'); // config var connectionString = "pg://yves:test@localhost/xapi" function getDataBaseResult(tag,bbox,res){ pg.connect(connectionString,function(err,client){ var the_result; if(err){ console.log(err); } else { client.query(createQuery(tag,bbox),function(err,result){ if (err) { console.log(err); } else { console.log(result); res.write(result.rows); res.end("/n"); } }); } }); } function createQuery(tag,bbox){ // FIXME: validate var table = tag[0] + "#" + tag[1]; var filter = ""; // input validation for(i=0;i " + bbox[2] + " AND latitude < " + bbox[3]; } return "SELECT * FROM \"" + table + "\" " + filter + ";"; } RegExp.escape= function(s) { return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') }; var PATH_PREFIX = '/api/'; var base_url_re = new RegExp('^' + RegExp.escape(PATH_PREFIX) + '(node|way|relation|\\*)(.*)$') var filter_re = /\[(\w+=[^\]]+)\]/g; http.createServer(function (req, res) { if (!base_url_re.test(req.url)) { res.writeHead(404, {'Content-Type': 'text/plain; charset=utf8'}); res.end('Not Found\n'); } base_url_re.exec(req.url); var type = RegExp.$1, url_rest = querystring.unescape(RegExp.$2); var filters = []; while (v = filter_re.exec(url_rest)) { filters.push(v[1]); } console.log(filters); var tag; var bbox; for(i=0;i