diff options
author | Mark Engel <mark.c.engel@gmail.com> | 2011-01-21 15:26:47 +0100 |
---|---|---|
committer | Mark Engel <mark.c.engel@gmail.com> | 2011-01-21 15:26:47 +0100 |
commit | ef31bee06ce4517e83de01f9f13f6c96a77a0b5f (patch) | |
tree | e05d91688134e6363d983c67ee43fe28e86ead01 /src/nodejs | |
parent | 6ed48d9e3c9ee669d25323fb547acaeff2194437 (diff) | |
parent | 3278c8de34e026421a7908dbdc5c96f8226bc0ca (diff) | |
download | osm-xapi-ef31bee06ce4517e83de01f9f13f6c96a77a0b5f.tar.gz osm-xapi-ef31bee06ce4517e83de01f9f13f6c96a77a0b5f.tar.xz osm-xapi-ef31bee06ce4517e83de01f9f13f6c96a77a0b5f.zip |
Merge branch 'master' of github.com:slomo/osm-spline-xapi
Diffstat (limited to 'src/nodejs')
-rw-r--r-- | src/nodejs/no1.js | 14 | ||||
-rw-r--r-- | src/nodejs/no2.js | 106 | ||||
-rw-r--r-- | src/nodejs/start.js | 105 |
3 files changed, 14 insertions, 211 deletions
diff --git a/src/nodejs/no1.js b/src/nodejs/no1.js index 48f8b7f..3b3f8a0 100644 --- a/src/nodejs/no1.js +++ b/src/nodejs/no1.js @@ -5,7 +5,21 @@ var builder = require('xmlbuilder'); var config = require('./config.json'); +// load config +process.argv.forEach( + function (val,index, array){ + if(val=="-c"){ + path = array[index+1]; + console.log(path[0]); + if( path[0] != '/'){ + path = __dirname + '/' + path; + } + config = require(path); + } + }); + var connectionString = config['connectionString']; + console.log("server starting..."); console.log("Connection String: " + connectionString); diff --git a/src/nodejs/no2.js b/src/nodejs/no2.js deleted file mode 100644 index 233b5e1..0000000 --- a/src/nodejs/no2.js +++ /dev/null @@ -1,106 +0,0 @@ -var users = [ - { name: 'tj' }, - { name: 'tim' } -]; - -function user(app) { - app.resource('/.:format?', { - 'get' : function(req, res, next) { - switch (req.params.format) { - case 'json': - var body = JSON.stringify(users); - res.writeHead(200, { - 'Content-Type': 'application/json', - 'Content-Length': body.length - }); - res.end(body); - break; - default: - var body = '<ul>' - + users.map(function(user) { - return '<li>' + user.name + '</li>'; - }).join('\n') - + '</ul>'; - res.writeHead(200, { - 'Content-Type': 'text/html', - 'Content-Length': body.length - }); - res.end(body); - } - } - }); - - app.resource('/:id.:format', { - 'get' : function(req, res, next) { - var user = users[req.params.id]; - if (user && req.params.format === 'json') { - user = JSON.stringify(user); - res.writeHead(200, { - 'Content-Type': 'application/json', - 'Content-Length': user.length - }); - res.end(user); - } - else { - // When true is passed, provide control - // back to middleware, skipping route - // match attemps - next(true); - } - } - }) - - app.resource('/\\[:id/:op?', { - 'get' : function(req, res) { - var body = users[req.params.id] - ? users[req.params.id].name - : 'User ' + req.params.id + ' does not exist'; - body = (req.params.op || 'view') + 'ing ' + body; - res.writeHead(200, { - 'Content-Type': 'text/html', - 'Content-Length': body.length - }); - res.end(body, 'utf8'); - } - }) -} - - -function main(app) { - app.resource('/', { - 'get' : function(req, res) { - var examples = [ - '/users', - '/users.json', - '/users/0 (or /users/0/view)', - '/users/0/edit', - '/users/0.json' - ]; - var body = 'Visit one of the following: <ul>' - + examples.map(function(str) { - return '<li>' + str + '</li>' - }).join('\n') - + '</ul>'; - res.writeHead(200, { - 'Content-Type': 'text/html', - 'Content-Length': body.length - }); - res.end(body, 'utf8'); - } - }); -} - - -var connect = require('connect'); -var resource = require('resource-router'); - -var server = connect.createServer( - connect.logger({ buffer: true }), - connect.cache(), - connect.gzip() - ); - -server.use('/users', resource(user)); -server.use(resource(main)); -server.listen(3000); -console.log('Connect server listening on port 3000'); diff --git a/src/nodejs/start.js b/src/nodejs/start.js deleted file mode 100644 index b92c757..0000000 --- a/src/nodejs/start.js +++ /dev/null @@ -1,105 +0,0 @@ -// 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.length;i++){ - bbox[i] = parseFloat(bbox[i]); - } - - if(bbox){ - filter = "WHERE longitude > " + bbox[0] + " AND longitude < " + bbox[1] + - " AND latitude > " + 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<filters.length;i++){ - filters[i]=filters[i].split(/=/); - if(filters[i][0]=="bbox"){ - bbox = filters[i][1].split(/,/); - } - else { - tag = filters[i]; - } - } - - console.log(tag); - console.log(bbox); - - getDataBaseResult(tag,bbox,res); - - res.writeHead(200, {'Content-Type': 'text/plain; charset=utf8', }); - - res.write('URL was: ' + req.url + '\n'); - res.write('type: ' + type + '\n'); - res.write('filters:\n'); - filters.forEach(function(x) { res.write(' ' + x + '\n'); }) - //res.end('\n'); - -}).listen(8124, "127.0.0.1"); - -console.log('Listening on http://127.0.0.1:8124/') |