rebay 1.0.2 → 1.1.1
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/VERSION +1 -1
- data/config.rb +3 -0
- data/lib/rebay/finding.rb +23 -0
- data/lib/rebay/response.rb +23 -4
- data/lib/rebay/shopping.rb +54 -12
- data/rebay.gemspec +4 -3
- data/spec/finding_spec.rb +64 -0
- data/spec/response_spec.rb +65 -0
- data/spec/shopping_spec.rb +60 -0
- metadata +5 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.1
|
data/config.rb
ADDED
data/lib/rebay/finding.rb
CHANGED
@@ -8,6 +8,9 @@ module Rebay
|
|
8
8
|
raise ArgumentError unless params[:keywords] or params[:categoryId]
|
9
9
|
response = get_json_response(build_request_url('findItemsAdvanced', params))
|
10
10
|
response.trim(:findItemsAdvancedResponse)
|
11
|
+
if response.response.has_key?('searchResult') && response.response['searchResult'].has_key?('item')
|
12
|
+
response.results = response.response['searchResult']['item']
|
13
|
+
end
|
11
14
|
return response
|
12
15
|
end
|
13
16
|
|
@@ -16,6 +19,9 @@ module Rebay
|
|
16
19
|
raise ArgumentError unless params[:categoryId]
|
17
20
|
response = get_json_response(build_request_url('findItemsByCategory', params))
|
18
21
|
response.trim(:findItemsByCategoryResponse)
|
22
|
+
if response.response.has_key?('searchResult') && response.response['searchResult'].has_key?('item')
|
23
|
+
response.results = response.response['searchResult']['item']
|
24
|
+
end
|
19
25
|
return response
|
20
26
|
end
|
21
27
|
|
@@ -24,6 +30,9 @@ module Rebay
|
|
24
30
|
raise ArgumentError unless params[:keywords]
|
25
31
|
response = get_json_response(build_request_url('findItemsByKeywords', params))
|
26
32
|
response.trim(:findItemsByKeywordsResponse)
|
33
|
+
if response.response.has_key?('searchResult') && response.response['searchResult'].has_key?('item')
|
34
|
+
response.results = response.response['searchResult']['item']
|
35
|
+
end
|
27
36
|
return response
|
28
37
|
end
|
29
38
|
|
@@ -33,6 +42,9 @@ module Rebay
|
|
33
42
|
params['productId.@type'] = 'ReferenceID'
|
34
43
|
response = get_json_response(build_request_url('findItemsByProduct', params))
|
35
44
|
response.trim(:findItemsByProductResponse)
|
45
|
+
if response.response.has_key?('searchResult') && response.response['searchResult'].has_key?('item')
|
46
|
+
response.results = response.response['searchResult']['item']
|
47
|
+
end
|
36
48
|
return response
|
37
49
|
end
|
38
50
|
|
@@ -41,6 +53,9 @@ module Rebay
|
|
41
53
|
raise ArgumentError unless params[:keywords] or params[:storeName]
|
42
54
|
response = get_json_response(build_request_url('findItemsIneBayStores', params))
|
43
55
|
response.trim(:findItemsIneBayStoresResponse)
|
56
|
+
if response.response.has_key?('searchResult') && response.response['searchResult'].has_key?('item')
|
57
|
+
response.results = response.response['searchResult']['item']
|
58
|
+
end
|
44
59
|
return response
|
45
60
|
end
|
46
61
|
|
@@ -57,12 +72,20 @@ module Rebay
|
|
57
72
|
raise ArgumentError unless params[:keywords]
|
58
73
|
response = get_json_response(build_request_url('getSearchKeywordsRecommendation', params))
|
59
74
|
response.trim(:getSearchKeywordsRecommendationResponse)
|
75
|
+
if response.response.has_key?('keywords')
|
76
|
+
response.results = response.response['keywords']
|
77
|
+
end
|
60
78
|
return response
|
61
79
|
end
|
62
80
|
|
63
81
|
#http://developer.ebay.com/DevZone/finding/CallRef/getVersion.html
|
64
82
|
def get_version
|
65
83
|
response = get_json_response(build_request_url('getVersion'))
|
84
|
+
response.trim(:getVersionResponse)
|
85
|
+
if response.response.has_key?('version')
|
86
|
+
response.results = response.response['version']
|
87
|
+
end
|
88
|
+
return response
|
66
89
|
end
|
67
90
|
|
68
91
|
private
|
data/lib/rebay/response.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Rebay
|
2
2
|
class Response
|
3
3
|
attr_accessor :response
|
4
|
+
attr_accessor :results
|
4
5
|
|
5
6
|
def initialize(json_response)
|
6
7
|
@response = transform_json_response(json_response)
|
@@ -15,8 +16,18 @@ module Rebay
|
|
15
16
|
end
|
16
17
|
|
17
18
|
def trim(key)
|
18
|
-
if @response.has_key?(key)
|
19
|
-
@response = @response[key]
|
19
|
+
if @response.has_key?(key.to_s)
|
20
|
+
@response = @response[key.to_s]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def each
|
25
|
+
unless @results.nil?
|
26
|
+
if @results.class == Array
|
27
|
+
@results.each { |r| yield r }
|
28
|
+
else
|
29
|
+
yield @results
|
30
|
+
end
|
20
31
|
end
|
21
32
|
end
|
22
33
|
|
@@ -28,8 +39,16 @@ module Rebay
|
|
28
39
|
r[k] = transform_json_response(response[k])
|
29
40
|
end
|
30
41
|
return r
|
31
|
-
elsif response.class == Array
|
32
|
-
|
42
|
+
elsif response.class == Array
|
43
|
+
if response.size == 1
|
44
|
+
return transform_json_response(response[0])
|
45
|
+
else
|
46
|
+
r = Array.new
|
47
|
+
response.each do |a|
|
48
|
+
r.push(transform_json_response(a))
|
49
|
+
end
|
50
|
+
return r
|
51
|
+
end
|
33
52
|
else
|
34
53
|
return response
|
35
54
|
end
|
data/lib/rebay/shopping.rb
CHANGED
@@ -6,71 +6,113 @@ module Rebay
|
|
6
6
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindProducts.html
|
7
7
|
def find_products(params)
|
8
8
|
raise ArgumentError unless params[:categoryId] or params[:productId] or params[:queryKeywords]
|
9
|
-
get_json_response(build_request_url('FindProducts', params))
|
9
|
+
response = get_json_response(build_request_url('FindProducts', params))
|
10
|
+
if response.response.has_key?('Product')
|
11
|
+
response.results = response.response['Product']
|
12
|
+
end
|
13
|
+
return response
|
10
14
|
end
|
11
15
|
|
12
16
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindHalfProducts.html
|
13
17
|
def find_half_products(params)
|
14
18
|
raise ArgumentError unless params[:productId] or params[:queryKeywords]
|
15
|
-
get_json_response(build_request_url('FindHalfProducts', params))
|
19
|
+
response = get_json_response(build_request_url('FindHalfProducts', params))
|
20
|
+
if response.response.has_key?('Products') && response.response['Products'].has_key?('Product')
|
21
|
+
response.results = response.response['Products']['Product']
|
22
|
+
end
|
23
|
+
return response
|
16
24
|
end
|
17
25
|
|
18
26
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetSingleItem.html
|
19
27
|
def get_single_item(params)
|
20
28
|
raise ArgumentError unless params[:itemId]
|
21
|
-
get_json_response(build_request_url('GetSingleItem', params))
|
29
|
+
response = get_json_response(build_request_url('GetSingleItem', params))
|
30
|
+
if response.response.has_key?('Item')
|
31
|
+
response.results = response.response['Item']
|
32
|
+
end
|
33
|
+
return response
|
22
34
|
end
|
23
35
|
|
24
36
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetItemStatus.html
|
25
37
|
def get_item_status(params)
|
26
38
|
raise ArgumentError unless params[:itemId]
|
27
|
-
get_json_response(build_request_url('GetItemStatus', params))
|
39
|
+
response = get_json_response(build_request_url('GetItemStatus', params))
|
40
|
+
if response.response.has_key?('Item')
|
41
|
+
response.results = response.response['Item']
|
42
|
+
end
|
43
|
+
return response
|
28
44
|
end
|
29
45
|
|
30
46
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetShippingCosts.html
|
31
47
|
def get_shipping_costs(params)
|
32
48
|
raise ArgumentError unless params[:itemId]
|
33
|
-
get_json_response(build_request_url('GetShippingCosts', params))
|
49
|
+
response = get_json_response(build_request_url('GetShippingCosts', params))
|
50
|
+
return response
|
34
51
|
end
|
35
52
|
|
36
53
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetMultipleItems.html
|
37
54
|
def get_multiple_items(params)
|
38
55
|
raise ArgumentError unless params[:itemId]
|
39
|
-
get_json_response(build_request_url('GetMultipleItems', params))
|
56
|
+
response = get_json_response(build_request_url('GetMultipleItems', params))
|
57
|
+
if response.response.has_key?('Item')
|
58
|
+
response.results = response.response['Item']
|
59
|
+
end
|
60
|
+
return response
|
40
61
|
end
|
41
62
|
|
42
63
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetUserProfile.html
|
43
64
|
def get_user_profile(params)
|
44
65
|
raise ArgumentError unless params[:userId]
|
45
|
-
get_json_response(build_request_url('GetUserProfile', params))
|
66
|
+
response = get_json_response(build_request_url('GetUserProfile', params))
|
67
|
+
if response.response.has_key?('User')
|
68
|
+
response.results = response.response['User']
|
69
|
+
end
|
70
|
+
return response
|
46
71
|
end
|
47
72
|
|
48
73
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindPopularSearches.html
|
49
74
|
def find_popular_searches(params)
|
50
75
|
raise ArgumentError unless params[:categoryId]
|
51
|
-
get_json_response(build_request_url('FindPopularSearches', params))
|
76
|
+
response = get_json_response(build_request_url('FindPopularSearches', params))
|
77
|
+
if response.response.has_key?('PopularSearchResult')
|
78
|
+
response.results = response.response['PopularSearchResult']
|
79
|
+
end
|
80
|
+
return response
|
52
81
|
end
|
53
82
|
|
54
83
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindPopularItems.html
|
55
84
|
def find_popular_items(params={})
|
56
85
|
raise ArgumentError unless params[:categoryId] or params[:queryKeywords]
|
57
|
-
get_json_response(build_request_url('FindPopularItems', params))
|
86
|
+
response = get_json_response(build_request_url('FindPopularItems', params))
|
87
|
+
if response.response.has_key?('ItemArray') && response.response['ItemArray'].has_key?('Item')
|
88
|
+
response.results = response.response['ItemArray']['Item']
|
89
|
+
end
|
90
|
+
return response
|
58
91
|
end
|
59
92
|
|
60
93
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindReviewsandGuides.html
|
61
94
|
def find_reviews_and_guides(params={})
|
62
|
-
get_json_response(build_request_url('FindReviewsAndGuides', params))
|
95
|
+
response = get_json_response(build_request_url('FindReviewsAndGuides', params))
|
96
|
+
if response.response.has_key?('BuyingGuideDetails') && response.response['BuyingGuideDetails'].has_key?('BuyingGuide')
|
97
|
+
response.results = response.response['BuyingGuideDetails']['BuyingGuide']
|
98
|
+
end
|
99
|
+
return response
|
63
100
|
end
|
64
101
|
|
65
102
|
#http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetCategoryInfo.html
|
66
103
|
def get_category_info(params)
|
67
104
|
raise ArgumentError unless params[:categoryId]
|
68
|
-
get_json_response(build_request_url('GetCategoryInfo', params))
|
105
|
+
response = get_json_response(build_request_url('GetCategoryInfo', params))
|
106
|
+
if response.response.has_key?('CategoryArray') && response.response['CategoryArray'].has_key?('Category')
|
107
|
+
response.results = response.response['CategoryArray']['Category']
|
108
|
+
end
|
109
|
+
return response
|
69
110
|
end
|
70
111
|
|
71
112
|
def get_category_info_with_children(params)
|
72
113
|
params[:IncludeSelector] = 'ChildCategories'
|
73
|
-
get_category_info(params)
|
114
|
+
response = get_category_info(params)
|
115
|
+
return response
|
74
116
|
end
|
75
117
|
|
76
118
|
private
|
data/rebay.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rebay}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chuck Collins"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-05}
|
13
13
|
s.email = %q{chuck.collins@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
"README.md",
|
21
21
|
"Rakefile",
|
22
22
|
"VERSION",
|
23
|
+
"config.rb",
|
23
24
|
"init.rb",
|
24
25
|
"lib/rebay.rb",
|
25
26
|
"lib/rebay/api.rb",
|
data/spec/finding_spec.rb
CHANGED
@@ -61,6 +61,16 @@ module Rebay
|
|
61
61
|
it "should succeed" do
|
62
62
|
@finder.find_items_advanced({:keywords => 'feist'}).success?.should be_true
|
63
63
|
end
|
64
|
+
|
65
|
+
it "should iterate over results" do
|
66
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/find_items_advanced.json"))
|
67
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
68
|
+
response = @finder.find_items_advanced({:keywords => 'whatevs'})
|
69
|
+
|
70
|
+
count = 0
|
71
|
+
response.each { |r| count = count + 1 }
|
72
|
+
count.should eq(2)
|
73
|
+
end
|
64
74
|
end
|
65
75
|
|
66
76
|
context "when calling find_items_by_category" do
|
@@ -75,6 +85,16 @@ module Rebay
|
|
75
85
|
it "should succeed" do
|
76
86
|
@finder.find_items_by_category({:categoryId => 1}).success?.should be_true
|
77
87
|
end
|
88
|
+
|
89
|
+
it "should iterate over results" do
|
90
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/find_items_by_category.json"))
|
91
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
92
|
+
response = @finder.find_items_by_category({:categoryId => 1})
|
93
|
+
|
94
|
+
count = 0
|
95
|
+
response.each { |r| count = count + 1 }
|
96
|
+
count.should eq(2)
|
97
|
+
end
|
78
98
|
end
|
79
99
|
|
80
100
|
context "when calling find_items_by_product" do
|
@@ -89,6 +109,16 @@ module Rebay
|
|
89
109
|
it "should succeed" do
|
90
110
|
@finder.find_items_by_product({:productId => 53039031}).success?.should be_true
|
91
111
|
end
|
112
|
+
|
113
|
+
it "should iterate over results" do
|
114
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/find_items_by_product.json"))
|
115
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
116
|
+
response = @finder.find_items_by_product({:productId => 1})
|
117
|
+
|
118
|
+
count = 0
|
119
|
+
response.each { |r| count = count + 1 }
|
120
|
+
count.should eq(2)
|
121
|
+
end
|
92
122
|
end
|
93
123
|
|
94
124
|
context "when calling find_items_by_keywords" do
|
@@ -103,6 +133,16 @@ module Rebay
|
|
103
133
|
it "should succeed" do
|
104
134
|
@finder.find_items_by_keywords({:keywords => 'feist'}).success?.should be_true
|
105
135
|
end
|
136
|
+
|
137
|
+
it "should iterate over results" do
|
138
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/find_items_by_keywords.json"))
|
139
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
140
|
+
response = @finder.find_items_by_keywords({:keywords => 'whatevs'})
|
141
|
+
|
142
|
+
count = 0
|
143
|
+
response.each { |r| count = count + 1 }
|
144
|
+
count.should eq(2)
|
145
|
+
end
|
106
146
|
end
|
107
147
|
|
108
148
|
context "when calling find_items_in_ebay_stores" do
|
@@ -149,6 +189,18 @@ module Rebay
|
|
149
189
|
it "should succeed" do
|
150
190
|
@finder.get_search_keywords_recommendation({:keywords => 'feist'}).success?.should be_true
|
151
191
|
end
|
192
|
+
|
193
|
+
it "should iterate over results" do
|
194
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/get_search_keywords_recommendation.json"))
|
195
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
196
|
+
response = @finder.get_search_keywords_recommendation({:keywords => 'whatevs'})
|
197
|
+
|
198
|
+
count = 0
|
199
|
+
response.each { |r| count = count + 1 }
|
200
|
+
count.should eq(1)
|
201
|
+
|
202
|
+
response.results.should eq('harry potter phoenix')
|
203
|
+
end
|
152
204
|
end
|
153
205
|
|
154
206
|
context "when calling get_version" do
|
@@ -159,6 +211,18 @@ module Rebay
|
|
159
211
|
it "should succeed" do
|
160
212
|
@finder.get_version.success?.should be_true
|
161
213
|
end
|
214
|
+
|
215
|
+
it "should iterate over results" do
|
216
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/get_version.json"))
|
217
|
+
@finder.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
218
|
+
response = @finder.get_version
|
219
|
+
|
220
|
+
count = 0
|
221
|
+
response.each { |r| count = count + 1 }
|
222
|
+
count.should eq(1)
|
223
|
+
|
224
|
+
response.results.should eq('1.8.0')
|
225
|
+
end
|
162
226
|
end
|
163
227
|
end
|
164
228
|
end
|
data/spec/response_spec.rb
CHANGED
@@ -41,11 +41,76 @@ module Rebay
|
|
41
41
|
response.trim("test")
|
42
42
|
response.response.should eq("test")
|
43
43
|
end
|
44
|
+
|
45
|
+
it "should trim response with syn" do
|
46
|
+
response = Response.new({"Ack" => "Failure", "test" => "test"})
|
47
|
+
response.trim(:test)
|
48
|
+
response.response.should eq("test")
|
49
|
+
end
|
44
50
|
|
45
51
|
it "should not trim response" do
|
46
52
|
response = Response.new({"Ack" => "Failure", "test" => "test"})
|
47
53
|
response.trim(:nothing)
|
48
54
|
response.response.should eq({"Ack" => "Failure", "test" => "test"})
|
49
55
|
end
|
56
|
+
|
57
|
+
it "should set result key" do
|
58
|
+
response = Response.new({})
|
59
|
+
response.should respond_to(:results)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should provide empty iterator without a result key" do
|
63
|
+
response = Response.new({})
|
64
|
+
count = 0
|
65
|
+
response.each { |r| count = count + 1 }
|
66
|
+
count.should eq(0)
|
67
|
+
end
|
68
|
+
|
69
|
+
context "using find items advanced json" do
|
70
|
+
before(:each) do
|
71
|
+
@json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/finding/find_items_advanced.json"))
|
72
|
+
@response = Response.new(@json)
|
73
|
+
@response.trim(:findItemsAdvancedResponse)
|
74
|
+
@proper = {"ack"=>"Success", "version"=>"1.7.0", "timestamp"=>"2010-09-29T01:53:58.039Z",
|
75
|
+
"searchResult"=>{"@count"=>"2",
|
76
|
+
"item"=>[{"itemId"=>"300471157219","title"=>"Minas Tirith 1990 Tolkien fanzine journal LOTR Hobbit",
|
77
|
+
"globalId"=>"EBAY-US","primaryCategory"=>{"categoryId"=>"280","categoryName"=>"Magazine Back Issues"},
|
78
|
+
"secondaryCategory"=>{"categoryId"=>"29799","categoryName"=>"Other"},
|
79
|
+
"galleryURL"=>"http:\/\/thumbs4.ebaystatic.com\/pict\/3004711572198080_1.jpg",
|
80
|
+
"viewItemURL"=>"http:\/\/cgi.ebay.com\/Minas-Tirith-1990-Tolkien-fanzine-journal-LOTR-Hobbit-\/300471157219?pt=Magazines",
|
81
|
+
"paymentMethod"=>"PayPal","autoPay"=>"false","postalCode"=>"55403","location"=>"Minneapolis,MN,USA",
|
82
|
+
"country"=>"US","shippingInfo"=>{"shippingServiceCost"=>{"@currencyId"=>"USD","__value__"=>"2.99"},
|
83
|
+
"shippingType"=>"Flat","shipToLocations"=>"Worldwide"},
|
84
|
+
"sellingStatus"=>{"currentPrice"=>{"@currencyId"=>"USD","__value__"=>"16.99"},
|
85
|
+
"convertedCurrentPrice"=>{"@currencyId"=>"USD","__value__"=>"16.99"},
|
86
|
+
"bidCount"=>"1","sellingState"=>"Active","timeLeft"=>"P0DT0H3M56S"},
|
87
|
+
"listingInfo"=>{"bestOfferEnabled"=>"false","buyItNowAvailable"=>"false",
|
88
|
+
"startTime"=>"2010-09-22T01:57:54.000Z","endTime"=>"2010-09-29T01:57:54.000Z",
|
89
|
+
"listingType"=>"Auction","gift"=>"false"},
|
90
|
+
"condition"=>{"conditionId"=>"4000","conditionDisplayName"=>"Very Good"}},
|
91
|
+
{"itemId"=>"300471157219","title"=>"Minas Tirith 1990 Tolkien fanzine journal LOTR Hobbit",
|
92
|
+
"globalId"=>"EBAY-US","primaryCategory"=>{"categoryId"=>"280","categoryName"=>"Magazine Back Issues"},
|
93
|
+
"secondaryCategory"=>{"categoryId"=>"29799","categoryName"=>"Other"},
|
94
|
+
"galleryURL"=>"http:\/\/thumbs4.ebaystatic.com\/pict\/3004711572198080_1.jpg",
|
95
|
+
"viewItemURL"=>"http:\/\/cgi.ebay.com\/Minas-Tirith-1990-Tolkien-fanzine-journal-LOTR-Hobbit-\/300471157219?pt=Magazines",
|
96
|
+
"paymentMethod"=>"PayPal","autoPay"=>"false","postalCode"=>"55403","location"=>"Minneapolis,MN,USA",
|
97
|
+
"country"=>"US","shippingInfo"=>{"shippingServiceCost"=>{"@currencyId"=>"USD","__value__"=>"2.99"},
|
98
|
+
"shippingType"=>"Flat","shipToLocations"=>"Worldwide"},
|
99
|
+
"sellingStatus"=>{"currentPrice"=>{"@currencyId"=>"USD","__value__"=>"16.99"},
|
100
|
+
"convertedCurrentPrice"=>{"@currencyId"=>"USD","__value__"=>"16.99"},
|
101
|
+
"bidCount"=>"1","sellingState"=>"Active","timeLeft"=>"P0DT0H3M56S"},
|
102
|
+
"listingInfo"=>{"bestOfferEnabled"=>"false","buyItNowAvailable"=>"false",
|
103
|
+
"startTime"=>"2010-09-22T01:57:54.000Z","endTime"=>"2010-09-29T01:57:54.000Z",
|
104
|
+
"listingType"=>"Auction","gift"=>"false"},
|
105
|
+
"condition"=>{"conditionId"=>"4000","conditionDisplayName"=>"Very Good"}}]},
|
106
|
+
"paginationOutput"=>{"pageNumber"=>"1","entriesPerPage"=>"2","totalPages"=>"2359","totalEntries"=>"4717"},
|
107
|
+
"itemSearchURL"=>"http:\/\/shop.ebay.com\/i.html?_nkw=tolkien&_ddo=1&_ipg=2&_pgn=1"}
|
108
|
+
@response.results = @response.response['searchResult']['item']
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should trim format response correctly" do
|
112
|
+
@response.response.should eq(@proper)
|
113
|
+
end
|
114
|
+
end
|
50
115
|
end
|
51
116
|
end
|
data/spec/shopping_spec.rb
CHANGED
@@ -77,6 +77,16 @@ module Rebay
|
|
77
77
|
it "should succeed" do
|
78
78
|
@shopper.get_category_info({:categoryId => 29223}).success?.should be_true
|
79
79
|
end
|
80
|
+
|
81
|
+
it "should iterate over results" do
|
82
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/get_category_info.json"))
|
83
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
84
|
+
response = @shopper.get_category_info({:categoryId => 1})
|
85
|
+
|
86
|
+
count = 0
|
87
|
+
response.each { |r| count = count + 1 }
|
88
|
+
count.should eq(1)
|
89
|
+
end
|
80
90
|
end
|
81
91
|
|
82
92
|
context "when calling find_products" do
|
@@ -91,6 +101,16 @@ module Rebay
|
|
91
101
|
it "should succeed" do
|
92
102
|
@shopper.find_products({:queryKeywords => 'harry potter'}).success?.should be_true
|
93
103
|
end
|
104
|
+
|
105
|
+
it "should iterate over results" do
|
106
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/find_products.json"))
|
107
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
108
|
+
response = @shopper.find_products({:queryKeywords => 'whatevs'})
|
109
|
+
|
110
|
+
count = 0
|
111
|
+
response.each { |r| count = count + 1 }
|
112
|
+
count.should eq(2)
|
113
|
+
end
|
94
114
|
end
|
95
115
|
|
96
116
|
context "when calling find_half_products" do
|
@@ -105,6 +125,16 @@ module Rebay
|
|
105
125
|
it "should succeed" do
|
106
126
|
@shopper.find_half_products({:queryKeywords => 'harry potter'}).success?.should be_true
|
107
127
|
end
|
128
|
+
|
129
|
+
it "should iterate over results" do
|
130
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/find_half_products.json"))
|
131
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
132
|
+
response = @shopper.find_half_products({:queryKeywords => 'whatevs'})
|
133
|
+
|
134
|
+
count = 0
|
135
|
+
response.each { |r| count = count + 1 }
|
136
|
+
count.should eq(2)
|
137
|
+
end
|
108
138
|
end
|
109
139
|
|
110
140
|
context "when calling get_single_item" do
|
@@ -189,6 +219,16 @@ module Rebay
|
|
189
219
|
it "should succeed" do
|
190
220
|
@shopper.find_popular_searches({:categoryId => 1}).success?.should be_true
|
191
221
|
end
|
222
|
+
|
223
|
+
it "should iterate over results" do
|
224
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/find_popular_searches.json"))
|
225
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
226
|
+
response = @shopper.find_popular_searches({:categoryId => 1})
|
227
|
+
|
228
|
+
count = 0
|
229
|
+
response.each { |r| count = count + 1 }
|
230
|
+
count.should eq(1)
|
231
|
+
end
|
192
232
|
end
|
193
233
|
|
194
234
|
context "when calling find_popular_items" do
|
@@ -199,6 +239,16 @@ module Rebay
|
|
199
239
|
it "should succeed" do
|
200
240
|
@shopper.find_popular_items({:categoryId => 1}).success?.should be_true
|
201
241
|
end
|
242
|
+
|
243
|
+
it "should iterate over results" do
|
244
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/find_popular_items.json"))
|
245
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
246
|
+
response = @shopper.find_popular_items({:categoryId => 1})
|
247
|
+
|
248
|
+
count = 0
|
249
|
+
response.each { |r| count = count + 1 }
|
250
|
+
count.should eq(19)
|
251
|
+
end
|
202
252
|
end
|
203
253
|
|
204
254
|
context "when calling find_reviews_and_guides" do
|
@@ -209,6 +259,16 @@ module Rebay
|
|
209
259
|
it "should succeed" do
|
210
260
|
@shopper.find_reviews_and_guides.success?.should be_true
|
211
261
|
end
|
262
|
+
|
263
|
+
it "should iterate over results" do
|
264
|
+
json = JSON.parse(File.read(File.dirname(__FILE__) + "/json_responses/shopping/find_reviews_and_guides.json"))
|
265
|
+
@shopper.stub!(:get_json_response).and_return(Rebay::Response.new(json))
|
266
|
+
response = @shopper.find_reviews_and_guides
|
267
|
+
|
268
|
+
count = 0
|
269
|
+
response.each { |r| count = count + 1 }
|
270
|
+
count.should eq(5)
|
271
|
+
end
|
212
272
|
end
|
213
273
|
end
|
214
274
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rebay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
version: 1.1.1
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Chuck Collins
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-10-05 00:00:00 -05:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -46,6 +44,7 @@ files:
|
|
46
44
|
- README.md
|
47
45
|
- Rakefile
|
48
46
|
- VERSION
|
47
|
+
- config.rb
|
49
48
|
- init.rb
|
50
49
|
- lib/rebay.rb
|
51
50
|
- lib/rebay/api.rb
|
@@ -73,7 +72,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
72
|
requirements:
|
74
73
|
- - ">="
|
75
74
|
- !ruby/object:Gem::Version
|
76
|
-
hash: 3
|
77
75
|
segments:
|
78
76
|
- 0
|
79
77
|
version: "0"
|
@@ -82,7 +80,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
80
|
requirements:
|
83
81
|
- - ">="
|
84
82
|
- !ruby/object:Gem::Version
|
85
|
-
hash: 3
|
86
83
|
segments:
|
87
84
|
- 0
|
88
85
|
version: "0"
|