aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslomo <steve.harrison@gmx.net>2011-01-22 13:31:32 +0100
committerslomo <steve.harrison@gmx.net>2011-01-22 13:31:32 +0100
commit1a37a20fd94a60ce686a6f1e11534b504b2e2308 (patch)
treeee9d83cbcccab110a981615a3e6ac3cba83caaae
parent35778e6742567d38d349ca358cc5068cc0db1232 (diff)
downloadosm-xapi-1a37a20fd94a60ce686a6f1e11534b504b2e2308.tar.gz
osm-xapi-1a37a20fd94a60ce686a6f1e11534b504b2e2308.tar.xz
osm-xapi-1a37a20fd94a60ce686a6f1e11534b504b2e2308.zip
the xml output works now
-rw-r--r--src/nodejs/main.js28
-rw-r--r--src/nodejs/response.js37
-rw-r--r--src/nodejs/xmlGenerator.js53
3 files changed, 78 insertions, 40 deletions
diff --git a/src/nodejs/main.js b/src/nodejs/main.js
index 1928f28..2c4cb26 100644
--- a/src/nodejs/main.js
+++ b/src/nodejs/main.js
@@ -43,11 +43,24 @@ function rowToNode(row){
'version': row.version,
'changeset': row.changeset_id,
'lat' : row.lat,
- 'lon' : row.lon
- }
+ 'lon' : row.lon,
+ };
+
+ if(row.tags != '{}') {
+ node.tags = [];
+ // FIXME: something doesnt work at all
+ temp = row.tags.replace("{","").replace("}","").split(",");
+ for(var x=0;x<temp.length;x=x+2){
+ node.tags.push({
+ 'k' : temp[x],
+ 'v' : temp[x+1]
+ });
+ }
+ }
return node;
}
+//FIXME: parsing of ways is meesed up
function rowToWay(row){
var way = {
'id' : row.id,
@@ -55,6 +68,17 @@ function rowToWay(row){
'version' : row.version,
'changeset' : row.changeset_id
};
+ if(row.tags != '{}') {
+ node.tags = [];
+ // FIXME: something doesnt work at all
+ temp = row.tags.replace("{","").replace("}","").split(",");
+ for(var x=0;x<temp.length;x=x+2){
+ node.tags.push({
+ 'k' : temp[x],
+ 'v' : temp[x+1]
+ });
+ }
+ }
return way;
}
diff --git a/src/nodejs/response.js b/src/nodejs/response.js
index 47fb170..45dcc89 100644
--- a/src/nodejs/response.js
+++ b/src/nodejs/response.js
@@ -1,3 +1,5 @@
+var xmlGen = require('./xmlGenerator');
+// FIXME: this is a total mess
exports.mkJsonRes = function mkJsonRes(res){
res.started = false;
res.atStart = function (){
@@ -29,7 +31,40 @@ exports.mkJsonRes = function mkJsonRes(res){
}
exports.mkXmlRes = function (res){
- return exports.mkJsonRes(res);
+ res.started = false;
+ res.atStart = function (){
+ if(!this.started){
+ this.writeHead(200);
+ this.write('<xml>');
+ this.started = true;
+ }
+ }
+ res.atEnd = function(){
+ if(!this.started){
+ this.atStart(pojo);
+ }
+ this.write('</xml>');
+ this.end();
+ }
+ res.putWay = function (pojo){
+ if(!this.started){
+ this.atStart(pojo);
+ }
+ this.write(xmlGen.createWay(pojo));
+ }
+
+ res.putNode = function (pojo){
+ if(!this.started){
+ this.atStart(pojo);
+ }
+ this.write(xmlGen.createNode(pojo));
+ }
+
+ res.endWith500 = function(){
+ this.writeHead(500);
+ this.end();
+ }
+ return res;
}
diff --git a/src/nodejs/xmlGenerator.js b/src/nodejs/xmlGenerator.js
index 08ea833..921056d 100644
--- a/src/nodejs/xmlGenerator.js
+++ b/src/nodejs/xmlGenerator.js
@@ -8,50 +8,29 @@ var log4js = require('log4js')(); //note the need to call the function
var log = log4js.getLogger('xmlGenerator');
log.setLevel(config.logLevel);
-function toISO8601(date) {
- //2007-03-31T00:09:22+01:00
- var pad_two = function(n) {
- return (n < 10 ? '0' : '') + n;
- };
+exports.createNode = function (node) {
+ log.debug(node);
+ var xmlNode = builder.begin('node')
+ .att('id', node.id)
+ .att('timestamp', node.timestamp)
+ .att('version', node.version)
+ .att('changeset', node.changeset)
+ .att('lat', node.lat)
+ .att('lon', node.lon);
- return [
- date.getUTCFullYear(),
- '-',
- pad_two(date.getUTCMonth() + 1),
- '-',
- pad_two(date.getUTCDate()),
- 'T',
- pad_two(date.getUTCHours()),
- ':',
- pad_two(date.getUTCMinutes()),
- ':',
- pad_two(date.getUTCSeconds()),
- '+01:00' //FIX ME
- ].join('');
-}
-
-exports.createNode = function (row) {
- log.debug(row);
- var node = builder.begin('node')
- .att('id', row.id)
- .att('timestamp', toISO8601(row.tstamp))
- .att('version', row.version)
- .att('changeset', row.changeset_id)
- .att('lat', row.lat)
- .att('lon', row.lon);
- if(row.tags != '{}') {
- var temp = row.tags.replace("{","").replace("}","").split(",");
- for(var x=0;x<temp.length;x=x+2){
- node.ele('tag')
- .att('k',escape(temp[x]))
- .att('v',escape(temp[x+1]));
+ if(node.tags) {
+ var tags = node.tags;
+ for(var x=0;x<tags.length;x=x+2){
+ xmlNode.ele('tag')
+ .att('k',escape(tags[x]))
+ .att('v',escape(tags[x+1]));
}
}
return builder.toString({ pretty: true });
};
+// FIXME: make this shit working
exports.createWay = function (row) {
- var temp;
var way = builder.begin('way')
.att('id', row.id)
.att('timestamp', toISO8601(row.tstamp))