beeradvocate 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 202edfe8ff06b907a1ede18c66e0b968f7edf8db
4
- data.tar.gz: 8eceab449dd7654a5e68f9f1420be37b675016ee
3
+ metadata.gz: 6fb8952be83417794f9222e13296641c7d87ffb1
4
+ data.tar.gz: b8017d20a268d438c73a4694d22ebc4196e34ab1
5
5
  SHA512:
6
- metadata.gz: b40a9d2c5160968d16ff3bf349548e40f4866d3b53bfd4e221c291f37ab2768686e22fc9b67b1d243ebcc4a2ab7e9e5d47b28b57ba7d57be055c83013f3bbb44
7
- data.tar.gz: 4be5c6d7ce4135bf744602cda53dbe3fcc6a75e1689fe366bd548738aa452ae889397bc48515a66c2b10b274d19d2cdef1ad53c302030dce2495b20c963c7d4f
6
+ metadata.gz: 331eb8c63e71c5c3b6369fedb03eecaace7bd7f70b80350b4057fd6ccbbb30da02e3bc25ee79663d628f0922149a9006254c5f98987ac3476260e788c1e204b9
7
+ data.tar.gz: 22bcf557a75b6b227f0b8100a83b1878aec01d8577a4d1a11b551bc7d9fd61d9c1530e7c5fb22e0afc2cd72a37f47e109ba5e846e1e8a379eac2a1fa05d2188f
data/bin/beer CHANGED
@@ -9,9 +9,15 @@ end
9
9
 
10
10
  beer_name = ARGV.join(' ')
11
11
 
12
- url = BeerAdvocate.get_url(beer_name)
12
+ unless url = BeerAdvocate.get_url(beer_name)
13
+ STDERR.puts "Couldn't get url for '#{beer_name}'"
14
+ exit 2
15
+ end
13
16
 
14
- beer_details = BeerAdvocate.get_beer_details_from_url(url)
17
+ unless beer_details = BeerAdvocate.get_beer_details_from_url(url)
18
+ STDERR.puts "Couldn't parse beer details for url '#{url}'"
19
+ exit 3
20
+ end
15
21
 
16
22
  puts JSON.pretty_generate(beer_details)
17
23
 
data/lib/beer_advocate.rb CHANGED
@@ -8,23 +8,32 @@ require 'beer_advocate/version'
8
8
  module BeerAdvocate
9
9
  class << self
10
10
 
11
- ## Given a beer name, return the URL for the top Beer Advocate beer
12
- ## search result.
13
- def get_url(beer_name)
14
- page = Nokogiri::HTML(open(
15
- "http://www.beeradvocate.com/search/?qt=beer&q=" +
11
+ ## Given a beer name, returns the URL for the top Beer Advocate beer
12
+ ## search result. Throws an exception if something goes wrong.
13
+ def get_url!(beer_name)
14
+ search_url = "http://www.beeradvocate.com/search/?qt=beer&q=" +
16
15
  URI.escape(beer_name)
17
- ))
18
16
 
19
- "http://www.beeradvocate.com" +
20
- page.css('ul li a').first.attributes['href'].text
17
+ page = Nokogiri::HTML(open(search_url))
18
+
19
+ href = page.css('ul li a').
20
+ map {|tag| tag.attributes['href'].text rescue nil}.
21
+ select {|h| h && h.match(%r{^/beer/profile})}.
22
+ first
23
+
24
+ "http://www.beeradvocate.com" + href
21
25
  end
22
26
 
27
+ ## Given a beer name, returns the URL for the top Beer Advocate beer
28
+ ## search result. Returns nil upon error.
29
+ def get_url(beer_name)
30
+ get_url!(beer_name) rescue nil
31
+ end
23
32
 
24
- ## Given a URL for a Beer Advocate beer page, return a hash containing
33
+ ## Given a URL for a Beer Advocate beer page, returns a hash containing
25
34
  ## info about the beer, including `name`, `brewery`, `style`, `abv`,
26
- ## and `score`.
27
- def get_beer_details_from_url(url)
35
+ ## and `score`. Throws an exception if something goes wrong.
36
+ def get_beer_details_from_url!(url)
28
37
  page = Nokogiri::HTML(open(url))
29
38
 
30
39
  table = page.css('#ba-content table')[1]
@@ -55,6 +64,13 @@ module BeerAdvocate
55
64
  }
56
65
  end
57
66
 
67
+ ## Given a URL for a Beer Advocate beer page, returns a hash containing
68
+ ## info about the beer, including `name`, `brewery`, `style`, `abv`,
69
+ ## and `score`. Returns nil upon error.
70
+ def get_beer_details_from_url(url)
71
+ get_beer_details_from_url!(url) rescue nil
72
+ end
73
+
58
74
  end
59
75
  end
60
76
 
@@ -1,5 +1,5 @@
1
1
  module BeerAdvocate
2
- VERSION = '0.0.2'
2
+ VERSION = '0.1.0'
3
3
  VERSION_DATE = '2015-07-02'
4
4
  end
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beeradvocate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Gamache