mirror of https://github.com/pelias/api.git
Harish Krishna
10 years ago
7 changed files with 114 additions and 208 deletions
@ -1,55 +0,0 @@ |
|||||||
|
|
||||||
var geojsonify = require('../helper/geojsonify').search; |
|
||||||
|
|
||||||
function setup( backend ){ |
|
||||||
|
|
||||||
// allow overriding of dependencies
|
|
||||||
backend = backend || require('../src/backend'); |
|
||||||
|
|
||||||
function controller( req, res, next ){ |
|
||||||
|
|
||||||
// backend command
|
|
||||||
var cmd = req.clean.ids.map( function(id) { |
|
||||||
return { |
|
||||||
index: 'pelias', |
|
||||||
type: id.type, |
|
||||||
id: id.id |
|
||||||
}; |
|
||||||
}); |
|
||||||
cmd = { |
|
||||||
index: 'pelias', |
|
||||||
type: 'geoname', |
|
||||||
ids: cmd.map(function(c){ return c.id }) |
|
||||||
} |
|
||||||
console.log('cmd:') |
|
||||||
console.log(cmd) |
|
||||||
// query backend
|
|
||||||
backend().client.mget( cmd, function( err, data ){ |
|
||||||
console.log('error:') |
|
||||||
console.log(err) |
|
||||||
var docs = []; |
|
||||||
// handle backend errors
|
|
||||||
if( err ){ return next( err ); } |
|
||||||
|
|
||||||
if( data && data.docs && Array.isArray(data.docs) && data.docs.length ){ |
|
||||||
docs = data.docs.map( function( doc ){ |
|
||||||
return doc._source; |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
// convert docs to geojson
|
|
||||||
var geojson = geojsonify( docs ); |
|
||||||
|
|
||||||
// response envelope
|
|
||||||
geojson.date = new Date().getTime(); |
|
||||||
|
|
||||||
// respond
|
|
||||||
return res.status(200).json( geojson ); |
|
||||||
}); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
return controller; |
|
||||||
} |
|
||||||
|
|
||||||
module.exports = setup; |
|
@ -1,56 +0,0 @@ |
|||||||
// validate inputs, convert types and apply defaults
|
|
||||||
// id generally looks like 'geoname/4163334' (type/id)
|
|
||||||
// so, both type and id are required fields.
|
|
||||||
|
|
||||||
function sanitize( req ){ |
|
||||||
|
|
||||||
req.clean = req.clean || {}; |
|
||||||
var params = req.query; |
|
||||||
var indeces = require('../query/indeces'); |
|
||||||
|
|
||||||
// ensure params is a valid object
|
|
||||||
if( Object.prototype.toString.call( params ) !== '[object Object]' ){ |
|
||||||
params = {}; |
|
||||||
} |
|
||||||
console.log(params) |
|
||||||
|
|
||||||
var errormessage = function(fieldname, message) { |
|
||||||
return { |
|
||||||
'error': true, |
|
||||||
'message': message || ('invalid param \''+ fieldname + '\': text length, must be >0') |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
if( params && params.ids && params.ids.length ){ |
|
||||||
req.clean.ids = []; |
|
||||||
console.log(params.ids) |
|
||||||
params.ids.split(',').forEach( function(param) { |
|
||||||
param = param.split('/'); |
|
||||||
var type= param[0]; |
|
||||||
var id = param[1]; |
|
||||||
console.log(param) |
|
||||||
// id text
|
|
||||||
if('string' !== typeof id || !id.length){ |
|
||||||
return errormessage('id'); |
|
||||||
} |
|
||||||
// type text
|
|
||||||
if('string' !== typeof type || !type.length){ |
|
||||||
return errormessage('type'); |
|
||||||
} |
|
||||||
// type text must be one of the indeces
|
|
||||||
if(indeces.indexOf(type) == -1){ |
|
||||||
return errormessage('type', 'type must be one of these values - [' + indeces.join(", ") + ']'); |
|
||||||
} |
|
||||||
req.clean.ids.push({ |
|
||||||
id: id, |
|
||||||
type: type |
|
||||||
}); |
|
||||||
}); |
|
||||||
} |
|
||||||
console.log(req.clean) |
|
||||||
return { 'error': false }; |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
// export function
|
|
||||||
module.exports = sanitize; |
|
@ -1,23 +0,0 @@ |
|||||||
|
|
||||||
var logger = require('../src/logger'), |
|
||||||
_sanitize = require('../sanitiser/_sanitize'), |
|
||||||
sanitizers = { |
|
||||||
id: require('../sanitiser/_ids') |
|
||||||
}; |
|
||||||
|
|
||||||
var sanitize = function(req, cb) { _sanitize(req, sanitizers, cb); } |
|
||||||
|
|
||||||
// export sanitize for testing
|
|
||||||
module.exports.sanitize = sanitize; |
|
||||||
|
|
||||||
// middleware
|
|
||||||
module.exports.middleware = function( req, res, next ){ |
|
||||||
sanitize( req, function( err, clean ){ |
|
||||||
if( err ){ |
|
||||||
res.status(400); // 400 Bad Request
|
|
||||||
return next(err); |
|
||||||
} |
|
||||||
req.clean = clean; |
|
||||||
next(); |
|
||||||
}); |
|
||||||
}; |
|
Loading…
Reference in new issue