gscraper 0.3.0 → 0.4.0

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.
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # GScraper - A web-scraping interface to various Google Services.
3
3
  #
4
- # Copyright (c) 2007-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ # Copyright (c) 2007-2012 Hal Brodigan (postmodern.mod3 at gmail.com)
5
5
  #
6
6
  # This program is free software; you can redistribute it and/or modify
7
7
  # it under the terms of the GNU General Public License as published by
@@ -20,5 +20,5 @@
20
20
 
21
21
  module GScraper
22
22
  # The version of GScraper
23
- VERSION = '0.3.0'
23
+ VERSION = '0.4.0'
24
24
  end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ require 'gscraper/languages'
3
+
4
+ describe GScraper::Languages do
5
+ it "should lookup the language for a locale" do
6
+ GScraper::Languages.find('es').should == 'es'
7
+ end
8
+
9
+ it "should lookup the language for locale_country" do
10
+ GScraper::Languages.find('es_AR').should == 'es'
11
+ end
12
+
13
+ it "should lookup the language for a locale@alias" do
14
+ GScraper::Languages.find('en@quot').should == 'en'
15
+ end
16
+
17
+ it "should map zh_CN* to zh-CN" do
18
+ GScraper::Languages.find('zh_CN').should == 'zh-CN'
19
+ end
20
+
21
+ it "should map zh_TW* to zh-TW" do
22
+ GScraper::Languages.find('zh_TW').should == 'zh-TW'
23
+ end
24
+
25
+ it "should auto-detect the native language" do
26
+ GScraper::Languages.native.should_not be_nil
27
+ end
28
+ end
@@ -50,7 +50,8 @@ describe GScraper::Search::AJAXQuery do
50
50
 
51
51
  it "should have a default 'hl' query-param" do
52
52
  hl = @uri.query_params['hl']
53
- hl.should == GScraper::Search::AJAXQuery::DEFAULT_LANGUAGE
53
+
54
+ hl.should_not be_empty
54
55
  end
55
56
 
56
57
  it "should have a default 'gss' query-param of '.com'" do
@@ -3,6 +3,35 @@ require 'spec_helper'
3
3
  require 'gscraper/search/query'
4
4
 
5
5
  describe GScraper::Search::Query do
6
+ it "should have a default host of www.google.com" do
7
+ query = GScraper::Search::Query.new
8
+
9
+ query.search_host.should == 'www.google.com'
10
+ end
11
+
12
+ it "should allow using alternate hosts" do
13
+ alternate_host = 'www.google.com.ar'
14
+ query = GScraper::Search::Query.new(
15
+ :search_host => alternate_host
16
+ )
17
+
18
+ query.search_host.should == alternate_host
19
+ end
20
+
21
+ it "should use random hosts if load balancing is enabled" do
22
+ query = GScraper::Search::Query.new(:load_balance => true)
23
+
24
+ host1 = query.search_host
25
+ host2 = query.search_host
26
+
27
+ host1.should_not == host2
28
+ end
29
+
30
+ it "should have a default language" do
31
+ query = GScraper::Search::Query.new
32
+
33
+ query.language.should_not be_nil
34
+ end
6
35
 
7
36
  it "should support basic queries" do
8
37
  expr = 'ruby -blog'
@@ -11,7 +11,9 @@ describe GScraper::Search::WebQuery do
11
11
  include Helpers
12
12
 
13
13
  before(:all) do
14
- @query = GScraper::Search::WebQuery.new(:query => Helpers::DEFAULT_QUERY)
14
+ @query = GScraper::Search::WebQuery.new(
15
+ :query => Helpers::DEFAULT_QUERY
16
+ )
15
17
  @page = @query.first_page
16
18
  @links = @query.sponsored_links
17
19
  end
@@ -30,6 +32,24 @@ describe GScraper::Search::WebQuery do
30
32
  @uri.class.should == URI::HTTP
31
33
  end
32
34
 
35
+ it "should have a default host of www.google.com" do
36
+ @uri.host.should == 'www.google.com'
37
+ end
38
+
39
+ it "should allow using alternate hosts" do
40
+ other_host = 'www.google.com.ar'
41
+ other_query = GScraper::Search::WebQuery.new(
42
+ :search_host => other_host,
43
+ :query => Helpers::DEFAULT_QUERY
44
+ )
45
+
46
+ other_query.search_url.host.should == other_host
47
+ end
48
+
49
+ it "should have a path of /search" do
50
+ @uri.path.should == '/search'
51
+ end
52
+
33
53
  it "should have a 'q' query-param" do
34
54
  @uri.query_params['q'].should == Helpers::DEFAULT_QUERY
35
55
  end
@@ -1,12 +1,2 @@
1
- require 'rubygems'
2
- require 'bundler'
3
-
4
- begin
5
- Bundler.setup(:runtime, :test)
6
- rescue Bundler::BundlerError => e
7
- STDERR.puts e.message
8
- STDERR.puts "Run `bundle install` to install missing gems"
9
- exit e.status_code
10
- end
11
-
12
- require 'spec'
1
+ gem 'rspec', '~> 2.4'
2
+ require 'rspec'
metadata CHANGED
@@ -1,142 +1,141 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gscraper
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 0
9
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Postmodern
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-07-02 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: json_pure
22
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-04-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 4
30
- - 0
31
- version: 1.4.0
20
+ - !ruby/object:Gem::Version
21
+ version: '1.6'
32
22
  type: :runtime
33
23
  prerelease: false
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: mechanize
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.6'
30
+ - !ruby/object:Gem::Dependency
31
+ name: uri-query_params
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
34
+ requirements:
40
35
  - - ~>
41
- - !ruby/object:Gem::Version
42
- segments:
43
- - 1
44
- - 0
45
- - 0
46
- version: 1.0.0
36
+ - !ruby/object:Gem::Version
37
+ version: '0.5'
47
38
  type: :runtime
48
39
  prerelease: false
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: bundler
52
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
53
41
  none: false
54
- requirements:
42
+ requirements:
55
43
  - - ~>
56
- - !ruby/object:Gem::Version
57
- segments:
58
- - 0
59
- - 9
60
- - 19
61
- version: 0.9.19
62
- type: :development
44
+ - !ruby/object:Gem::Version
45
+ version: '0.5'
46
+ - !ruby/object:Gem::Dependency
47
+ name: mechanize
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
54
+ type: :runtime
63
55
  prerelease: false
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: rake
67
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rubygems-tasks
64
+ requirement: !ruby/object:Gem::Requirement
68
65
  none: false
69
- requirements:
66
+ requirements:
70
67
  - - ~>
71
- - !ruby/object:Gem::Version
72
- segments:
73
- - 0
74
- - 8
75
- - 7
76
- version: 0.8.7
68
+ - !ruby/object:Gem::Version
69
+ version: '0.1'
77
70
  type: :development
78
71
  prerelease: false
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: jeweler
82
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.1'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
83
81
  none: false
84
- requirements:
82
+ requirements:
85
83
  - - ~>
86
- - !ruby/object:Gem::Version
87
- segments:
88
- - 1
89
- - 4
90
- - 0
91
- version: 1.4.0
84
+ - !ruby/object:Gem::Version
85
+ version: '2.4'
92
86
  type: :development
93
87
  prerelease: false
94
- version_requirements: *id005
95
- - !ruby/object:Gem::Dependency
96
- name: rspec
97
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '2.4'
94
+ - !ruby/object:Gem::Dependency
95
+ name: yard
96
+ requirement: !ruby/object:Gem::Requirement
98
97
  none: false
99
- requirements:
98
+ requirements:
100
99
  - - ~>
101
- - !ruby/object:Gem::Version
102
- segments:
103
- - 1
104
- - 3
105
- - 0
106
- version: 1.3.0
100
+ - !ruby/object:Gem::Version
101
+ version: '0.6'
107
102
  type: :development
108
103
  prerelease: false
109
- version_requirements: *id006
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '0.6'
110
110
  description: GScraper is a web-scraping interface to various Google Services.
111
111
  email: postmodern.mod3@gmail.com
112
112
  executables: []
113
-
114
113
  extensions: []
115
-
116
- extra_rdoc_files:
114
+ extra_rdoc_files:
115
+ - COPYING.txt
117
116
  - ChangeLog.md
118
117
  - README.md
119
- files:
118
+ files:
120
119
  - .gitignore
121
- - .specopts
120
+ - .rspec
122
121
  - .yardopts
123
122
  - COPYING.txt
124
123
  - ChangeLog.md
125
- - Gemfile
126
124
  - README.md
127
125
  - Rakefile
126
+ - gemspec.yml
128
127
  - gscraper.gemspec
129
128
  - lib/gscraper.rb
130
- - lib/gscraper/extensions.rb
131
- - lib/gscraper/extensions/uri.rb
132
- - lib/gscraper/extensions/uri/http.rb
133
- - lib/gscraper/extensions/uri/query_params.rb
134
129
  - lib/gscraper/gscraper.rb
135
130
  - lib/gscraper/has_pages.rb
131
+ - lib/gscraper/hosts.rb
132
+ - lib/gscraper/languages.rb
136
133
  - lib/gscraper/licenses.rb
137
134
  - lib/gscraper/page.rb
138
135
  - lib/gscraper/search.rb
139
136
  - lib/gscraper/search/ajax_query.rb
137
+ - lib/gscraper/search/exceptions.rb
138
+ - lib/gscraper/search/exceptions/blocked.rb
140
139
  - lib/gscraper/search/page.rb
141
140
  - lib/gscraper/search/query.rb
142
141
  - lib/gscraper/search/result.rb
@@ -145,63 +144,46 @@ files:
145
144
  - lib/gscraper/sponsored_ad.rb
146
145
  - lib/gscraper/sponsored_links.rb
147
146
  - lib/gscraper/version.rb
148
- - spec/extensions/uri/http_spec.rb
149
- - spec/extensions/uri/query_params_spec.rb
150
147
  - spec/gscraper_spec.rb
151
148
  - spec/has_pages_examples.rb
152
149
  - spec/has_sponsored_links_examples.rb
153
150
  - spec/helpers/query.rb
154
151
  - spec/helpers/uri.rb
152
+ - spec/languages_spec.rb
155
153
  - spec/page_has_results_examples.rb
156
154
  - spec/search/ajax_query_spec.rb
157
155
  - spec/search/page_has_results_examples.rb
158
156
  - spec/search/query_spec.rb
159
157
  - spec/search/web_query_spec.rb
160
158
  - spec/spec_helper.rb
161
- has_rdoc: yard
162
- homepage: http://github.com/postmodern/gscraper
163
- licenses:
159
+ homepage: https://github.com/postmodern/gscraper
160
+ licenses:
164
161
  - GPL-2
165
162
  post_install_message:
166
163
  rdoc_options: []
167
-
168
- require_paths:
164
+ require_paths:
169
165
  - lib
170
- required_ruby_version: !ruby/object:Gem::Requirement
166
+ required_ruby_version: !ruby/object:Gem::Requirement
171
167
  none: false
172
- requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- hash: 734300353
176
- segments:
177
- - 0
178
- version: "0"
179
- required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
173
  none: false
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- segments:
185
- - 0
186
- version: "0"
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
187
178
  requirements: []
188
-
189
179
  rubyforge_project:
190
- rubygems_version: 1.3.7
180
+ rubygems_version: 1.8.23
191
181
  signing_key:
192
182
  specification_version: 3
193
- summary: GScraper is a web-scraping interface to various Google Services.
194
- test_files:
195
- - spec/extensions/uri/http_spec.rb
196
- - spec/extensions/uri/query_params_spec.rb
183
+ summary: Web-scraping interface to various Google Services.
184
+ test_files:
197
185
  - spec/gscraper_spec.rb
198
- - spec/has_pages_examples.rb
199
- - spec/has_sponsored_links_examples.rb
200
- - spec/helpers/query.rb
201
- - spec/helpers/uri.rb
202
- - spec/page_has_results_examples.rb
186
+ - spec/languages_spec.rb
203
187
  - spec/search/ajax_query_spec.rb
204
- - spec/search/page_has_results_examples.rb
205
188
  - spec/search/query_spec.rb
206
189
  - spec/search/web_query_spec.rb
207
- - spec/spec_helper.rb