mirror of https://github.com/pelias/api.git
Harish Krishna
10 years ago
6 changed files with 425 additions and 1 deletions
@ -0,0 +1,36 @@
|
||||
|
||||
var query = require('../query/search'), |
||||
backend = require('../src/backend'); |
||||
|
||||
function controller( req, res, next ){ |
||||
|
||||
// backend command
|
||||
var cmd = { |
||||
index: 'pelias', |
||||
body: query( req.clean ) |
||||
}; |
||||
|
||||
// query backend
|
||||
backend().client.search( cmd, function( err, data ){ |
||||
|
||||
var docs = []; |
||||
|
||||
// handle backend errors
|
||||
if( err ){ return next( err ); } |
||||
|
||||
if( data && data.hits && data.hits.total){ |
||||
docs = data.hits.hits.map( function( hit ){ |
||||
return hit._source; |
||||
}); |
||||
} |
||||
|
||||
// respond
|
||||
return res.status(200).json({ |
||||
date: new Date().getTime(), |
||||
body: docs |
||||
}); |
||||
}); |
||||
|
||||
} |
||||
|
||||
module.exports = controller; |
@ -0,0 +1,349 @@
|
||||
# valid search query |
||||
|
||||
*Generated: Wed Sep 17 2014 16:05:27 GMT-0400 (EDT)* |
||||
## Request |
||||
```javascript |
||||
{ |
||||
"protocol": "http:", |
||||
"host": "localhost", |
||||
"method": "GET", |
||||
"port": 3100, |
||||
"path": "/search?input=z&lat=0&lon=0" |
||||
} |
||||
``` |
||||
|
||||
## Response |
||||
```javascript |
||||
Status: 200 |
||||
{ |
||||
"x-powered-by": "mapzen", |
||||
"charset": "utf8", |
||||
"cache-control": "public,max-age=60", |
||||
"server": "Pelias/0.0.0", |
||||
"access-control-allow-origin": "*", |
||||
"access-control-allow-methods": "GET", |
||||
"access-control-allow-headers": "X-Requested-With,content-type", |
||||
"access-control-allow-credentials": "true", |
||||
"content-type": "application/json; charset=utf-8", |
||||
"content-length": "4459", |
||||
"etag": "W/\"PY7aB5FehG8OpkYGve7zQg==\"", |
||||
"date": "Wed, 17 Sep 2014 20:05:27 GMT", |
||||
"connection": "close" |
||||
} |
||||
``` |
||||
```javascript |
||||
{ |
||||
"date": 1410984327401, |
||||
"body": [ |
||||
{ |
||||
"name": { |
||||
"default": "Lazy C-Z Reservoir" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Texas", |
||||
"admin2": "Brazoria County", |
||||
"center_point": { |
||||
"lat": "29.23763", |
||||
"lon": "-95.32676" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"lazy c-z reservoir" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4705663", |
||||
"geo": "-95.32676,29.23763" |
||||
}, |
||||
"output": "Lazy C-Z Reservoir, Brazoria County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Z Loggans Bar" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Alabama", |
||||
"admin2": "Hale County", |
||||
"center_point": { |
||||
"lat": "32.89596", |
||||
"lon": "-87.80501" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"z loggans bar" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4098848", |
||||
"geo": "-87.80501,32.89596" |
||||
}, |
||||
"output": "Z Loggans Bar, Hale County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Z Loggans Landing (historical)" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Alabama", |
||||
"admin2": "Greene County", |
||||
"center_point": { |
||||
"lat": "32.89929", |
||||
"lon": "-87.80418" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"z loggans landing (historical)" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4098849", |
||||
"geo": "-87.80418,32.89929" |
||||
}, |
||||
"output": "Z Loggans Landing (historical), Greene County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Piney Z Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Leon County", |
||||
"center_point": { |
||||
"lat": "30.44353", |
||||
"lon": "-84.19184" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"piney z lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4168700", |
||||
"geo": "-84.19184,30.44353" |
||||
}, |
||||
"output": "Piney Z Lake, Leon County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "H Z Smith Lake" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Bulloch County", |
||||
"center_point": { |
||||
"lat": "32.47721", |
||||
"lon": "-81.83116" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"h z smith lake" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4198672", |
||||
"geo": "-81.83116,32.47721" |
||||
}, |
||||
"output": "H Z Smith Lake, Bulloch County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "J Z Miller House" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Texas", |
||||
"admin2": "Bell County", |
||||
"center_point": { |
||||
"lat": "31.06324", |
||||
"lon": "-97.45945" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"j z miller house" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4700378", |
||||
"geo": "-97.45945,31.06324" |
||||
}, |
||||
"output": "J Z Miller House, Bell County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Z Kingsley Grant" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Florida", |
||||
"admin2": "Duval County", |
||||
"center_point": { |
||||
"lat": "30.24191", |
||||
"lon": "-81.62204" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"z kingsley grant" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4178927", |
||||
"geo": "-81.62204,30.24191" |
||||
}, |
||||
"output": "Z Kingsley Grant, Duval County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "L-Z Bravo Airport" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Missouri", |
||||
"admin2": "Monroe County", |
||||
"center_point": { |
||||
"lat": "39.63615", |
||||
"lon": "-92.16712" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"l-z bravo airport" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4393970", |
||||
"geo": "-92.16712,39.63615" |
||||
}, |
||||
"output": "L-Z Bravo Airport, Monroe County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Z L Madden Elementary School" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "South Carolina", |
||||
"admin2": "Spartanburg County", |
||||
"center_point": { |
||||
"lat": "34.97207", |
||||
"lon": "-81.95149" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"z l madden elementary school" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4601756", |
||||
"geo": "-81.95149,34.97207" |
||||
}, |
||||
"output": "Z L Madden Elementary School, Spartanburg County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "H Z Smith Lake Dam" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Georgia", |
||||
"admin2": "Bulloch County", |
||||
"center_point": { |
||||
"lat": "32.47684", |
||||
"lon": "-81.8315" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"h z smith lake dam" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4198673", |
||||
"geo": "-81.8315,32.47684" |
||||
}, |
||||
"output": "H Z Smith Lake Dam, Bulloch County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "J Z George High School" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Mississippi", |
||||
"admin2": "Carroll County", |
||||
"center_point": { |
||||
"lat": "33.52095", |
||||
"lon": "-89.92064" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"j z george high school" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4431378", |
||||
"geo": "-89.92064,33.52095" |
||||
}, |
||||
"output": "J Z George High School, Carroll County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Colonel Z Williams Landing (historical)" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Alabama", |
||||
"admin2": "Russell County", |
||||
"center_point": { |
||||
"lat": "32.0646", |
||||
"lon": "-85.05604" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"colonel z williams landing (historical)" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4056398", |
||||
"geo": "-85.05604,32.0646" |
||||
}, |
||||
"output": "Colonel Z Williams Landing (historical), Russell County, United States" |
||||
} |
||||
}, |
||||
{ |
||||
"name": { |
||||
"default": "Z M Jack Stell Field Airport", |
||||
"alt0": "CRT", |
||||
"alt1": "KCRT" |
||||
}, |
||||
"admin0": "United States", |
||||
"admin1": "Arkansas", |
||||
"admin2": "Ashley County", |
||||
"center_point": { |
||||
"lat": "33.17269", |
||||
"lon": "-91.88504" |
||||
}, |
||||
"suggest": { |
||||
"input": [ |
||||
"z m jack stell field airport", |
||||
"crt", |
||||
"kcrt" |
||||
], |
||||
"payload": { |
||||
"id": "geoname/4107205", |
||||
"geo": "-91.88504,33.17269" |
||||
}, |
||||
"output": "Z M Jack Stell Field Airport, Ashley County, United States" |
||||
} |
||||
} |
||||
] |
||||
} |
||||
``` |
||||
|
||||
## Tests |
||||
|
||||
### ✓ 200 ok |
||||
```javascript |
||||
response.statusCode.should.equal 200 |
||||
``` |
||||
|
||||
### ✓ valid response |
||||
```javascript |
||||
now = new Date().getTime() |
||||
should.exist json |
||||
should.not.exist json.error |
||||
should.exist json.date |
||||
json.date.should.be.within now-2000, now+2000 |
||||
should.exist json.body |
||||
json.body.should.be.instanceof Array |
||||
``` |
||||
|
@ -0,0 +1,22 @@
|
||||
var logger = require('../src/logger'); |
||||
|
||||
// Build pelias search query
|
||||
function generate( params ){ |
||||
|
||||
var cmd = { |
||||
"query": { |
||||
"query_string": { |
||||
"query": params.input, |
||||
"fields": ['name.default'], |
||||
"default_operator": 'OR' |
||||
} |
||||
}, |
||||
"size": 30 |
||||
}; |
||||
|
||||
logger.log( 'cmd', JSON.stringify( cmd, null, 2 ) ); |
||||
return cmd; |
||||
|
||||
} |
||||
|
||||
module.exports = generate; |
@ -0,0 +1,14 @@
|
||||
#> valid search query |
||||
path: '/search?input=z&lat=0&lon=0' |
||||
|
||||
#? 200 ok |
||||
response.statusCode.should.equal 200 |
||||
|
||||
#? valid response |
||||
now = new Date().getTime() |
||||
should.exist json |
||||
should.not.exist json.error |
||||
should.exist json.date |
||||
json.date.should.be.within now-2000, now+2000 |
||||
should.exist json.body |
||||
json.body.should.be.instanceof Array |
Loading…
Reference in new issue