UNPKG

restaurants

Version:

Search a service and get a list of restaurants.

60 lines (47 loc) 1.54 kB
/** * Dependencies */ var OAuth = require('oauth').OAuth , stringify = require('querystring').stringify , findAll = require('./find-all'); /** * Yelp Constants */ var CONSUMER_KEY = process.env.YELP_CONSUMER_KEY , COMSUMER_SECRET = process.env.YELP_CONSUMER_SECRET , TOKEN = process.env.YELP_TOKEN , TOKEN_SECRET = process.env.YELP_TOKEN_SECRET , ENDPOINT = 'http://api.yelp.com/v2/search' , oauth = null , MAX_LIMIT = 20 , MAX_OFFSET = 480; /** * Expose `search` */ module.exports = function(lat, lng, radius, all, callback) { if (!CONSUMER_KEY) throw new Error('Environment variable YELP_CONSUMER_KEY must be set.'); if (!COMSUMER_SECRET) throw new Error('Environment variable YELP_CONSUMER_SECRET must be set.'); if (!TOKEN) throw new Error('Environment variable YELP_TOKEN must be set.'); if (!TOKEN_SECRET) throw new Error('Environment variable YELP_TOKEN_SECRET must be set.'); var query = { term: 'restaurants' , radius_filter: radius , ll: lat + ',' + lng }; oauth = new OAuth(null, null, CONSUMER_KEY, COMSUMER_SECRET, '1.0', null, 'HMAC-SHA1'); 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; oauth.get(ENDPOINT + '?' + stringify(query), TOKEN, TOKEN_SECRET, function(err, data, res) { callback(err, JSON.parse(data).businesses); }); }