aboutsummaryrefslogtreecommitdiffstats
path: root/src/nodejs
diff options
context:
space:
mode:
authorMark Engel <mark.c.engel@gmail.com>2011-01-21 15:26:47 +0100
committerMark Engel <mark.c.engel@gmail.com>2011-01-21 15:26:47 +0100
commitef31bee06ce4517e83de01f9f13f6c96a77a0b5f (patch)
treee05d91688134e6363d983c67ee43fe28e86ead01 /src/nodejs
parent6ed48d9e3c9ee669d25323fb547acaeff2194437 (diff)
parent3278c8de34e026421a7908dbdc5c96f8226bc0ca (diff)
downloadosm-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.js14
-rw-r--r--src/nodejs/no2.js106
-rw-r--r--src/nodejs/start.js105
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/')