eshopworks-rboss 0.1.2 → 0.1.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.
- data/History.txt +3 -0
- data/README.textile +24 -5
- data/TODO.txt +1 -2
- data/lib/boss/api.rb +1 -1
- data/lib/boss/result_collection.rb +6 -5
- data/lib/boss/result_factory.rb +26 -26
- data/lib/boss/version.rb +1 -1
- data/rboss.gemspec +2 -2
- data/spec/boss/result_collection_spec.rb +3 -2
- data/spec/boss/result_factory_spec.rb +5 -5
- metadata +2 -2
data/History.txt
CHANGED
data/README.textile
CHANGED
@@ -71,9 +71,13 @@ h2. USAGE:
|
|
71
71
|
config.format = 'xml'
|
72
72
|
config.count = 5
|
73
73
|
end
|
74
|
+
|
75
|
+
#Access general search result information
|
76
|
+
results = api.search('monkeys', :count => 5)
|
77
|
+
puts results.totalhits
|
74
78
|
</code></pre>
|
75
79
|
|
76
|
-
h3. Global Search Options
|
80
|
+
h3. Global Search Options (applies to news/images/web search)
|
77
81
|
|
78
82
|
<pre><code>
|
79
83
|
api.search('monkeys') do |config|
|
@@ -87,10 +91,23 @@ h3. Global Search Options
|
|
87
91
|
end
|
88
92
|
</pre></code>
|
89
93
|
|
94
|
+
h3. Global Search Results data (applies to news/images/web search results)
|
95
|
+
|
96
|
+
<pre><code>
|
97
|
+
results = api.search('monkeys', :count => 1)
|
98
|
+
puts results.deephits #approximate count that includes duplicates
|
99
|
+
puts results.totalhits #approximate count that excludes duplicates
|
100
|
+
puts results.responsecode #response code return by Yahoo webservice
|
101
|
+
puts results.start #the first numeric result to display
|
102
|
+
puts results.count #Indicates how many results to show per page
|
103
|
+
puts results.nextpage #link to what would be the next page of search results
|
104
|
+
</pre></code>
|
105
|
+
|
90
106
|
h3. Web Search Result
|
91
107
|
|
92
108
|
<pre><code>
|
93
|
-
|
109
|
+
#We filter here to exclude certain types of content
|
110
|
+
results = api.search_web('monkeys', :filter => '-porn')
|
94
111
|
results.each do |web|
|
95
112
|
puts web.abstract
|
96
113
|
puts web.date
|
@@ -105,7 +122,8 @@ h3. Web Search Result
|
|
105
122
|
h3. News Search Result
|
106
123
|
|
107
124
|
<pre><code>
|
108
|
-
|
125
|
+
#We retrieve documents by age (possible options: [1-30]d )
|
126
|
+
results = api.search_news('monkeys', :age => '7d')
|
109
127
|
results.each do |news|
|
110
128
|
puts news.abstract
|
111
129
|
puts news.clickurl
|
@@ -122,7 +140,9 @@ h3. News Search Result
|
|
122
140
|
h3. Image Search Result
|
123
141
|
|
124
142
|
<pre><code>
|
125
|
-
|
143
|
+
#Add constraint on dimension (possible options: 'small', 'medium', 'large', 'wallpaper')
|
144
|
+
#Activate the Offensive Content Reduction filter
|
145
|
+
results = api.search_images('monkeys', :dimensions => 'small', :filter => 'true')
|
126
146
|
results.each do |image|
|
127
147
|
puts image.abstract
|
128
148
|
puts image.clickurl
|
@@ -152,7 +172,6 @@ h3. Spell Search Result
|
|
152
172
|
end
|
153
173
|
</code></pre>
|
154
174
|
|
155
|
-
|
156
175
|
h2. LICENSE:
|
157
176
|
|
158
177
|
Copyright (c) 2008 eShopworks
|
data/TODO.txt
CHANGED
data/lib/boss/api.rb
CHANGED
@@ -2,13 +2,14 @@ module Boss
|
|
2
2
|
class ResultCollection
|
3
3
|
include Enumerable
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
search_data.each do |name, value|
|
7
|
-
instance_variable_set("@#{name}",value)
|
8
|
-
instance_eval("def #{name}\n @#{name}\n end")
|
9
|
-
end
|
5
|
+
def initialize
|
10
6
|
@results=[]
|
11
7
|
end
|
8
|
+
|
9
|
+
def set_instance_variable(name, value)
|
10
|
+
instance_variable_set("@#{name}",value)
|
11
|
+
instance_eval("def #{name}\n @#{name}\n end")
|
12
|
+
end
|
12
13
|
|
13
14
|
def each
|
14
15
|
@results.each { |result| yield result }
|
data/lib/boss/result_factory.rb
CHANGED
@@ -15,39 +15,39 @@ module Boss
|
|
15
15
|
|
16
16
|
json_hash = JSON.parse(data)
|
17
17
|
|
18
|
-
if json_hash.has_key? 'Error'
|
19
|
-
raise BossError, "
|
18
|
+
if json_hash.has_key? 'Error' or !json_hash.has_key? SEARCH_RESPONSE
|
19
|
+
raise BossError, "Results from webservice appear to be mangled."
|
20
20
|
end
|
21
|
-
|
22
|
-
result_collection = ResultCollection.new(json_hash[SEARCH_RESPONSE])
|
23
|
-
|
24
|
-
if has_results?(json_hash, :for => search_type)
|
25
|
-
|
26
|
-
json_hash[SEARCH_RESPONSE]["#{RESULT_SET}_#{search_type}"].each do |result|
|
27
|
-
|
28
|
-
case search_type
|
29
|
-
when SearchType::WEB
|
30
|
-
result_collection << Result::Web.new(result)
|
31
|
-
when SearchType::IMAGES
|
32
|
-
result_collection << Result::Image.new(result)
|
33
|
-
when SearchType::NEWS
|
34
|
-
result_collection << Result::News.new(result)
|
35
|
-
when SearchType::SPELL
|
36
|
-
result_collection << Result::Spell.new(result)
|
37
|
-
end
|
38
21
|
|
22
|
+
result_collection = ResultCollection.new
|
23
|
+
|
24
|
+
json_hash[SEARCH_RESPONSE].each do |key,value|
|
25
|
+
|
26
|
+
if key == "#{RESULT_SET}_#{search_type}"
|
27
|
+
|
28
|
+
json_hash[SEARCH_RESPONSE]["#{RESULT_SET}_#{search_type}"].each do |result|
|
29
|
+
|
30
|
+
case search_type
|
31
|
+
when SearchType::WEB
|
32
|
+
result_collection << Result::Web.new(result)
|
33
|
+
when SearchType::IMAGES
|
34
|
+
result_collection << Result::Image.new(result)
|
35
|
+
when SearchType::NEWS
|
36
|
+
result_collection << Result::News.new(result)
|
37
|
+
when SearchType::SPELL
|
38
|
+
result_collection << Result::Spell.new(result)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
else
|
43
|
+
result_collection.set_instance_variable(key, value)
|
39
44
|
end
|
40
|
-
end
|
41
45
|
|
46
|
+
end
|
42
47
|
result_collection
|
43
48
|
end
|
44
49
|
|
45
|
-
def has_results?(json_hash, type={})
|
46
|
-
!(json_hash[SEARCH_RESPONSE]["#{RESULT_SET}_#{type[:for]}"]).nil?
|
47
|
-
end
|
48
|
-
|
49
50
|
end
|
50
51
|
|
51
52
|
end
|
52
|
-
|
53
|
-
end
|
53
|
+
end
|
data/lib/boss/version.rb
CHANGED
data/rboss.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{rboss}
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.3"
|
4
4
|
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["Joseph Wilk"]
|
7
|
-
s.date = %q{2008-08-
|
7
|
+
s.date = %q{2008-08-22}
|
8
8
|
s.description = %q{Api wrapping Yahoo Boss search}
|
9
9
|
s.email = ["joe@eshopworks.co.uk"]
|
10
10
|
s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "TODO.txt"]
|
@@ -3,13 +3,14 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
3
3
|
describe Boss::ResultCollection do
|
4
4
|
|
5
5
|
it "should dynamically set instance values given at creation" do
|
6
|
-
collection = Boss::ResultCollection.new
|
6
|
+
collection = Boss::ResultCollection.new
|
7
|
+
collection.set_instance_variable(:totalhits, "344")
|
7
8
|
|
8
9
|
collection.totalhits.should eql("344")
|
9
10
|
end
|
10
11
|
|
11
12
|
it "should allow iterating over result collection" do
|
12
|
-
collection = Boss::ResultCollection.new
|
13
|
+
collection = Boss::ResultCollection.new
|
13
14
|
|
14
15
|
collection << 1
|
15
16
|
collection << 2
|
@@ -12,11 +12,11 @@ describe Boss::ResultFactory do
|
|
12
12
|
|
13
13
|
error_json_result = '{"Error":"true"}'
|
14
14
|
|
15
|
-
it "should
|
16
|
-
|
17
|
-
result_collection
|
18
|
-
Boss::ResultCollection.should_receive(:new).once.
|
19
|
-
|
15
|
+
it "should collect result objects in a result collection" do
|
16
|
+
result_collection = Boss::ResultCollection.new
|
17
|
+
result_collection.should_receive(:<<).once
|
18
|
+
Boss::ResultCollection.should_receive(:new).once.and_return(result_collection)
|
19
|
+
|
20
20
|
Boss::ResultFactory.build(Boss::SearchType::NEWS, news_json_result)
|
21
21
|
end
|
22
22
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eshopworks-rboss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Wilk
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-08-
|
12
|
+
date: 2008-08-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|