-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathuntappd.js
72 lines (65 loc) · 2.17 KB
/
untappd.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
var config = require('./config');
var requestJson = require('request-json');
var client = requestJson.createClient(config.untappd.urlPrefix);
module.exports = {
search: function(searchTerm, callback) {
search(searchTerm, callback);
},
beer: function(beerId, callback) {
// Feeling lucky
if (isNaN(beerId)) {
search(beerId, function(beers) {
if(typeof beers !== 'undefined') {
beerById(beers[0].id, callback);
} else {
callback(undefined);
}
});
} else {
beerById(beerId, callback);
}
},
featured: function(callback) {
// No featured or beer of the week
callback(undefined);
}
};
var apiParameters = function() {
return 'client_id=' + config.untappd.clientId + '&client_secret=' + config.untappd.clientSecret;
}
var search = function(searchTerm, callback) {
client.get('search/beer?q=' + searchTerm + '&' + apiParameters(),
function(err, brewRes, body) {
var beers = undefined;
if (typeof(body.response) !== 'undefined' && typeof(body.response.beers) !== 'undefined' && typeof(body.response.beers.items) !== 'undefined') {
var beersJson = body.response.beers.items;
beers = new Array(beersJson.length);
for(var i = 0;i < beersJson.length;i++) {
var beerData = beersJson[i];
beers[i] = {
name: beerData.beer.beer_name + ' - ' + beerData.brewery.brewery_name,
id: beerData.beer.bid
};
}
}
callback(beers);
}
);
}
var beerById = function(beerId, callback) {
client.get('beer/info/' + beerId + '?' + apiParameters(),
function(err, brewRes, body) {
var beer = undefined;
if (typeof(body.response) !== 'undefined' && typeof(body.response.beer) !== 'undefined') {
var beerData = body.response.beer;
beer = {
name: beerData.beer_name + ' - ' + beerData.brewery.brewery_name,
link: config.untappd.beerLinkPrefix + beerData.bid,
description: 'Rating: ' + beerData.rating_score + ' | ABV: ' + beerData.beer_abv + ' | ' + beerData.beer_description,
imageUrl: beerData.beer_label
};
}
callback(beer);
}
);
}