restaurants
Version:
Search a service and get a list of restaurants.
56 lines (45 loc) • 1.12 kB
JavaScript
/**
* Dependencies
*/
var get = require('superagent').get
, findAll = require('./find-all');
/**
* Factual Constants
*/
var KEY = process.env.FACTUAL_API_KEY
, ENDPOINT = 'http://api.v3.factual.com/t/restaurants'
, MAX_LIMIT = 50
, MAX_OFFSET = 450;
/**
* Expose `search`
*/
module.exports = function(lat, lng, radius, all, callback) {
if (!KEY) throw new Error('Environment variable FACTUAL_API_KEY must be set.');
// Run the query
var query = {
geo: '{"$circle":{"$center":[' + lat + ',' + lng + '],"$meters":' + radius + '}}'
, filters: '{"category_ids":{"$nin":[355,343]}}' // exclude dessert, fast food
, KEY: KEY
};
if (all) {
findAll(query, MAX_LIMIT, MAX_OFFSET, getRestaurants, callback);
} else {
getRestaurants(query, 10, 0, callback);
}
};
/**
* Get the restaurants
*/
function getRestaurants(query, limit, offset, callback) {
query.limit = limit;
query.offset = offset;
get(ENDPOINT)
.query(query)
.end(function(err, res) {
if (err) {
callback(err, res);
} else {
callback(err, res.body.response.data);
}
});
};