aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nodejs/no1.js64
1 files changed, 40 insertions, 24 deletions
diff --git a/src/nodejs/no1.js b/src/nodejs/no1.js
index d846276..1b71766 100644
--- a/src/nodejs/no1.js
+++ b/src/nodejs/no1.js
@@ -1,13 +1,29 @@
-
var clutch = require('clutch');
var pg = require('pg');
var builder = require('xmlbuilder');
+
+// load config
var config = require('./config.json');
+process.argv.forEach(
+ function (val,index, array){
+ if(val=="-c"){
+ path = array[index+1];
+ if( path[0] != '/'){
+ path = __dirname + '/' + path;
+ }
+ config = require(path);
+ }
+ });
+var connectionString = config['connectionString'];
+//set up logger
+var log4js = require('log4js')(); //note the need to call the function
+//log4js.addAppender(log4js.fileAppender('osm-xapi.log'), 'cheese');
-var connectionString = config['connectionString'];
-console.log("server starting...");
-console.log("Connection String: " + connectionString);
+var logger = log4js.getLogger('global');
+logger.setLevel('ALL');
+
+logger.info("server starting...");
function toISO8601(date) {
//2007-03-31T00:09:22+01:00
@@ -33,12 +49,12 @@ function toISO8601(date) {
].join('');
}
function createWayBboxQuery(key, value, left, bottom, right, top) {
- return "SELECT id,tstamp,version,changeset_id, nodes, user_id, hstore_to_array(tags) as tags FROM ways WHERE (tags @> hstore('" + key + "','" + value + "') AND linestring && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" +
+ return "SELECT id,tstamp,version,changeset_id, nodes, user_id, hstore_to_array(tags) as tags FROM ways WHERE (tags @> hstore('" + key + "','" + value + "') AND linestring && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" +
left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));";
}
function createNodeBboxQuery(key, value, left, bottom, right, top) {
- return "SELECT id, user_id,tstamp,version,changeset_id, hstore_to_array(tags) as tags, X(geom) as lat, Y(geom) as lon FROM nodes WHERE (tags @> hstore('" + key + "','" + value + "') AND geom && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" +
+ return "SELECT id, user_id,tstamp,version,changeset_id, hstore_to_array(tags) as tags, X(geom) as lat, Y(geom) as lon FROM nodes WHERE (tags @> hstore('" + key + "','" + value + "') AND geom && st_setsrid(st_makebox2d(st_setsrid(st_makepoint(" +
left + "," + bottom + "),4326), st_setsrid(st_makepoint(" + right + "," + top + "),4326)),4326));";
}
@@ -57,14 +73,14 @@ function nodeBboxHandler(req, res, key, value, left, bottom, right, top) {
console.log(createNodeBboxQuery(key, value, left, bottom, right, top));
var success = false;
var query = client.query(createNodeBboxQuery(key, value, left, bottom, right, top));
-
+
query.on('error', function(err) {
-
+
console.log(err);
res.writeHead(404,{});
res.end('\n');
});
-
+
query.on('end', function() {
//console.log("end event\n");
if(success) {
@@ -78,17 +94,17 @@ function nodeBboxHandler(req, res, key, value, left, bottom, right, top) {
//perhaps write 404? is error also raised?
}
});
-
+
query.on('row', function(row) {
-
+
if(!success) {
success = true;
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write("<xml>");
}
-
+
console.log(row);
-
+
var node = builder.begin('node')
.att('id', row.id)
.att('timetamp', toISO8601(row.tstamp))
@@ -102,7 +118,7 @@ function nodeBboxHandler(req, res, key, value, left, bottom, right, top) {
node.ele('tag')
.att('k',escape(temp[x]))
.att('v',escape(temp[x+1]));
- }
+ }
res.write(builder.toString({ pretty: true }));
});
@@ -137,13 +153,13 @@ function wayBboxHandler(req, res, key, value, left, bottom, right, top) {
var success = false;
//console.log(createWayBboxQuery(key, value, left, bottom, right, top));
var query = client.query(createWayBboxQuery(key, value, left, bottom, right, top));
-
+
query.on('error', function(err) {
console.log(err);
res.writeHead(404,{});
res.end();
});
-
+
query.on('end', function() {
if(success) {
if(count == 0) {
@@ -159,7 +175,7 @@ function wayBboxHandler(req, res, key, value, left, bottom, right, top) {
//perhaps write 404?
}
});
-
+
query.on('row', function(row) {
if(!success) {
success = true;
@@ -195,10 +211,10 @@ function wayBboxHandler(req, res, key, value, left, bottom, right, top) {
}
res.write(builder.toString({pretty:'true'}));
});
-
+
//console.log(createNodesForWayQuery(row.nodes));
}
-
+
var way = builder.begin('way')
.att('id', row.id)
.att('timetamp', toISO8601(row.tstamp))
@@ -211,19 +227,19 @@ function wayBboxHandler(req, res, key, value, left, bottom, right, top) {
.att('k',escape(temp[x]))
.att('v',escape(temp[x+1]));
}
-
+
var temp = row.nodes.replace("{","").replace("}","").split(",");
for(var x=0;x<temp.length;x++)
way.ele('nd')
.att('ref',temp[x]);
-
+
res.write(builder.toString({pretty:'true'}));
});
- });
+ });
}
function relationWorldHandler(req, res, key, value) {
-
+
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(' key:' +key +' value:'+value+'!\n');
}
@@ -246,4 +262,4 @@ myRoutes = clutch.route404([
var http = require('http');
http.createServer(myRoutes).listen(config.port, config.host);
-console.log("Started server at " + config.host + ":" + config.port );
+logger.info("Started server at " + config.host + ":" + config.port );