From f9286a5ab887b2228bd422ed90a2c24addf0243b Mon Sep 17 00:00:00 2001 From: slomo Date: Fri, 21 Jan 2011 15:00:12 +0100 Subject: added new config load2 --- .gitignore | 1 + src/nodejs/no1.js | 14 +++++++ src/nodejs/no2.js | 106 ---------------------------------------------------- src/nodejs/start.js | 105 --------------------------------------------------- 4 files changed, 15 insertions(+), 211 deletions(-) delete mode 100644 src/nodejs/no2.js delete mode 100644 src/nodejs/start.js diff --git a/.gitignore b/.gitignore index 1b91047..d8e12f4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ usr/ +*.swp diff --git a/src/nodejs/no1.js b/src/nodejs/no1.js index 1132a11..fdf40e3 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 = ''; - 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: '; - 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[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 Date: Fri, 21 Jan 2011 15:26:25 +0100 Subject: created function db_connect which wraps connection to the database --- src/nodejs/no1.js | 55 +++++++++++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/src/nodejs/no1.js b/src/nodejs/no1.js index 7be26a4..48f8b7f 100644 --- a/src/nodejs/no1.js +++ b/src/nodejs/no1.js @@ -46,23 +46,15 @@ function createNodesForWayQuery(nodes) { return "SELECT id, tstamp, version, changeset_id, hstore_to_array(tags) as tags, X(geom) as lat, Y(geom) as lon FROM nodes WHERE id = ANY('" + nodes + "');"; } - - function nodeWorldHandler(req, res, key, value) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(' key:' +key +' value:'+value+'\n'); } function nodeBboxHandler(req, res, key, value, left, bottom, right, top) { - pg.connect(connectionString, function(err,client) { - - if (err) { - console.log(err); - res.writeHead(404,{}); - res.end('\n'); - } - else { - //console.log(createNodeBboxQuery(key, value, left, bottom, right, top)); + console.log("nodeBboxHandler"); + db_connect(res, function() { + //console.log(createNodeBboxQuery(key, value, left, bottom, right, top)); var success = false; var query = client.query(createNodeBboxQuery(key, value, left, bottom, right, top)); @@ -111,33 +103,36 @@ function nodeBboxHandler(req, res, key, value, left, bottom, right, top) { .att('k',escape(temp[x])) .att('v',escape(temp[x+1])); } - //for(var x=0; x< tags.length;x++) - //console.log(tags[x]); - /*node.ele('tag') - .att('k',tags[x][0]) - .att('v',tags[x][1]); - */ + res.write(builder.toString({ pretty: true })); - //res.write(builder.toString()); - }); - } + }); }); } function wayWorldHandler(req, res, key, value) { - res.writeHead(200, {'Content-Type': 'text/plain'}); - } -function wayBboxHandler(req, res, key, value, left, bottom, right, top) { - pg.connect(connectionString, function(err,client) { + +function connectionError(err, res) { + console.log(err); + console.log("foobar"); +} + +function db_connect(res, callback) { + pg.connect(connectionString, function(err, client) { if(err) { - console.log(err); + console.log(err['message']); res.writeHead(404,{}); res.end(); + } else { + callback(); } - else { - var count = 0; + }); +} + +function wayBboxHandler(req, res, key, value, left, bottom, right, top) { + db_connect(res, function() { + var count = 0; var success = false; //console.log(createWayBboxQuery(key, value, left, bottom, right, top)); var query = client.query(createWayBboxQuery(key, value, left, bottom, right, top)); @@ -223,11 +218,7 @@ function wayBboxHandler(req, res, key, value, left, bottom, right, top) { res.write(builder.toString({pretty:'true'})); }); - - } - - }); - + }); } function relationWorldHandler(req, res, key, value) { -- cgit v1.2.3