UNPKG

restaurants

Version:

Search a service and get a list of restaurants.

73 lines (62 loc) 1.44 kB
/** * Dependencies */ var doWhilst = require('async').doWhilst , get = require('superagent').get , nameToAbbr = require('./states').nameToAbbr; /** * OpenTable Constants */ var ENDPOINT = 'http://opentable.heroku.com/api/restaurants'; /** * Expose search function */ module.exports = function(address, all, callback) { var query = { page: 1 }; if (address.state) query.state = nameToAbbr[address.state]; if (address.city) query.city = address.city; if (address.zip && !isNaN(address.zip)) query.zip = address.zip; if (address.street) query.street = address.street; if (all) { var data = [] , last_data = []; doWhilst( function(next) { last_data = null; getRestaurants(query, function(err, restaurants) { if (err) { next(err); } else { data = data.concat(restaurants); last_data = restaurants; query.page++; next(); } }); } , function() { return last_data && last_data.length > 0; } , function(err) { callback(err, data); }); } else { getRestaurants(query, callback); } }; /** * Get the restaurants for a query */ function getRestaurants(query, callback) { get(ENDPOINT) .query(query) .end(function(err, res) { if (err) { callback(err); } else { callback(err, res.body.restaurants); } }); }