restaurants
Version:
Search a service and get a list of restaurants.
60 lines (47 loc) • 1.54 kB
JavaScript
/**
* 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);
});
}