google_play_scraper 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,10 @@ class GooglePlayScraper::Parser
13
13
  def results
14
14
  doc = Nokogiri::HTML(raw_html)
15
15
 
16
+ unless doc.css('.card').any?
17
+ raise 'Could not parse app store results page'
18
+ end
19
+
16
20
  results = []
17
21
 
18
22
  doc.css('.card').each do |app_container|
@@ -5,7 +5,7 @@ class GooglePlayScraper::Search
5
5
 
6
6
  include GooglePlayScraper::SearchOptions
7
7
 
8
- attr_reader :query, :options
8
+ attr_reader :query, :options, :google_play_reachable
9
9
 
10
10
  GOOGLE_PLAY_SEARCH_URL = GooglePlayScraper::GOOGLE_PLAY_BASE_URL + "/store/search"
11
11
 
@@ -20,6 +20,7 @@ class GooglePlayScraper::Search
20
20
  def initialize(query, options = {})
21
21
  @options = DEFAULT_OPTIONS.merge(options)
22
22
  @options['q'] = query
23
+ @google_play_reachable = true
23
24
  end
24
25
 
25
26
  def run
@@ -28,11 +29,20 @@ class GooglePlayScraper::Search
28
29
  http.use_ssl = true
29
30
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
30
31
 
31
- request = Net::HTTP::Get.new(uri.request_uri)
32
- response = http.request(request)
32
+ results = []
33
33
 
34
- parser = GooglePlayScraper::Parser.new(response.body)
35
- parser.results
34
+ begin
35
+ request = Net::HTTP::Get.new(uri.request_uri)
36
+ response = http.request(request)
37
+ response.value
38
+
39
+ parser = GooglePlayScraper::Parser.new(response.body)
40
+ results = parser.results
41
+ rescue
42
+ @google_play_reachable = false
43
+ end
44
+
45
+ results
36
46
  end
37
47
 
38
48
  def build_uri
@@ -1,3 +1,3 @@
1
1
  module GooglePlayScraper
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -12,6 +12,7 @@ describe GooglePlayScraper::Search do
12
12
  results.first.logo_url.should == 'https://lh6.ggpht.com/M9q_Zs_CRt2rbA41nTMhrPqiBxhUEUN8Z1f_mn9m89_TiHbIbUF8hjnc_zwevvLsRIJy=w340'
13
13
  results.first.logo_url_small.should == 'https://lh6.ggpht.com/M9q_Zs_CRt2rbA41nTMhrPqiBxhUEUN8Z1f_mn9m89_TiHbIbUF8hjnc_zwevvLsRIJy=w170'
14
14
  results.first.url.should == 'https://play.google.com/store/apps/details?id=com.rovio.angrybirds'
15
+ search.google_play_reachable.should be_true
15
16
  end
16
17
 
17
18
  it 'should be able to search for the sparq.me scanner' do
@@ -24,6 +25,7 @@ describe GooglePlayScraper::Search do
24
25
  results.first.logo_url.should == 'https://lh3.ggpht.com/m8vHSrnD8kqMpYkgyQDxWpren2Pi5Vn-Eemj-xyHwcGUsbsi0rcYy0dR5Qzi5B566ig=w340'
25
26
  results.first.logo_url_small.should == 'https://lh3.ggpht.com/m8vHSrnD8kqMpYkgyQDxWpren2Pi5Vn-Eemj-xyHwcGUsbsi0rcYy0dR5Qzi5B566ig=w170'
26
27
  results.first.url.should == 'https://play.google.com/store/apps/details?id=com.sparqcode.sparqeye.android'
28
+ search.google_play_reachable.should be_true
27
29
  end
28
30
 
29
31
  it 'should be able to find keek' do
@@ -36,6 +38,36 @@ describe GooglePlayScraper::Search do
36
38
  results.first.logo_url.should == 'https://lh3.ggpht.com/SJSSPnOXBAQuz3miopva-ECfwz7YZJkaeTnIGPIYXxF6TCQ393_p1DAEtiEtfeUhDoOu=w340'
37
39
  results.first.logo_url_small.should == 'https://lh3.ggpht.com/SJSSPnOXBAQuz3miopva-ECfwz7YZJkaeTnIGPIYXxF6TCQ393_p1DAEtiEtfeUhDoOu=w170'
38
40
  results.first.url.should == 'https://play.google.com/store/apps/details?id=com.keek'
41
+ search.google_play_reachable.should be_true
42
+ end
43
+
44
+ context 'error cases' do
45
+ after(:each) {
46
+ pre_value = GooglePlayScraper::Search::GOOGLE_PLAY_SEARCH_URL
47
+ GooglePlayScraper::Search.send(:remove_const, :GOOGLE_PLAY_SEARCH_URL)
48
+ GooglePlayScraper::Search.const_set(:GOOGLE_PLAY_SEARCH_URL, pre_value)
49
+ }
50
+ it 'should return empty results and indicate when google play returns an invalid http code' do
51
+ GooglePlayScraper::Search.send(:remove_const, :GOOGLE_PLAY_SEARCH_URL)
52
+ GooglePlayScraper::Search.const_set(:GOOGLE_PLAY_SEARCH_URL, 'http://www.google.com/asdfasdfasdfasdfasdf')
53
+
54
+ search = GooglePlayScraper::Search.new('Angry Birds')
55
+ results = search.run
56
+
57
+ results.size.should == 0
58
+ search.google_play_reachable.should be_false
59
+ end
60
+
61
+ it 'should return empty resulta nd indicate when it cannot parse the google play results' do
62
+ GooglePlayScraper::Search.send(:remove_const, :GOOGLE_PLAY_SEARCH_URL)
63
+ GooglePlayScraper::Search.const_set(:GOOGLE_PLAY_SEARCH_URL, 'http://www.google.com')
64
+
65
+ search = GooglePlayScraper::Search.new('Angry Birds')
66
+ results = search.run
67
+
68
+ results.size.should == 0
69
+ search.google_play_reachable.should be_false
70
+ end
39
71
  end
40
72
  end
41
73
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_play_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-16 00:00:00.000000000 Z
12
+ date: 2013-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri