rebay 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,6 +6,4 @@ end
6
6
 
7
7
  group :development do
8
8
  gem 'rspec'
9
- gem 'bundler', '>= 1.0.0'
10
- gem 'jeweler', '>= 1.5.2'
11
9
  end
@@ -1,30 +1,20 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.1.2)
5
- git (1.2.5)
6
- jeweler (1.5.2)
7
- bundler (~> 1.0.0)
8
- git (>= 1.2.5)
9
- rake
4
+ diff-lcs (1.1.3)
10
5
  json (1.5.1)
11
- rake (0.8.7)
12
- rspec (2.5.0)
13
- rspec-core (~> 2.5.0)
14
- rspec-expectations (~> 2.5.0)
15
- rspec-mocks (~> 2.5.0)
16
- rspec-core (2.5.1)
17
- rspec-expectations (2.5.0)
18
- diff-lcs (~> 1.1.2)
19
- rspec-mocks (2.5.0)
20
- watchr (0.7)
6
+ rspec (2.12.0)
7
+ rspec-core (~> 2.12.0)
8
+ rspec-expectations (~> 2.12.0)
9
+ rspec-mocks (~> 2.12.0)
10
+ rspec-core (2.12.2)
11
+ rspec-expectations (2.12.1)
12
+ diff-lcs (~> 1.1.3)
13
+ rspec-mocks (2.12.1)
21
14
 
22
15
  PLATFORMS
23
16
  ruby
24
17
 
25
18
  DEPENDENCIES
26
- bundler (>= 1.0.0)
27
- jeweler (>= 1.5.2)
28
19
  json
29
20
  rspec
30
- watchr
data/README.md CHANGED
@@ -38,7 +38,29 @@ For my own sanity, I transform this response into a more standard ruby hash and
38
38
  You can check for success or failure of the request:
39
39
  response.success?
40
40
  response.failure?
41
-
41
+
42
+ Recent Updates
43
+ --------------
44
+ [yarmiganosca](https://github.com/yarmiganosca)
45
+
46
+ Added support for using Ebay Sandbox urls (through a configuration
47
+ variable).
48
+
49
+ Changed the way Finding and Shopping generate their base urls. Instead
50
+ of a class variable, they now call self.base_url, which reads the
51
+ sandbox configuration variable and either creates a sandbox url or a
52
+ production url.
53
+
54
+ Updated the conditions under which the Shopping Api calls raise
55
+ ArgumentErrors, involved changing the cases of the parameters (they
56
+ changed in the Ebay Api) and adding support for specifying either a
57
+ ProductID or a ProductID.type, ProductID.Value pair for searching by
58
+ ProductIDs other than Ebay ReferenceIDs.
59
+
60
+ [peppyheppy](https://github.com/peppyheppy)
61
+
62
+ Added support for dynamic siteid in both configuration and by passing in params
63
+
42
64
  MIT License
43
65
  -----------
44
66
  Copyright (c) 2010 Chuck Collins
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.3
1
+ 1.2.0
@@ -4,25 +4,46 @@ require 'uri'
4
4
 
5
5
  module Rebay
6
6
  class Api
7
+ # default site is EBAY_US, for other available sites see eBay documentation:
8
+ # http://developer.ebay.com/DevZone/merchandising/docs/Concepts/SiteIDToGlobalID.html
7
9
  EBAY_US = 0
8
-
9
- def self.app_id= app_id
10
- @@app_id = app_id
11
- end
12
-
13
- def self.app_id
14
- @@app_id
15
- end
10
+
11
+ class << self
12
+ attr_accessor :app_id, :default_site_id, :sandbox
13
+
14
+ def base_url
15
+ [base_url_prefix,
16
+ sandbox ? "sandbox" : nil,
17
+ base_url_suffix].compact.join('.')
18
+ end
19
+
20
+ def base_url_prefix
21
+ "http://svcs"
22
+ end
23
+
24
+ def base_url_suffix
25
+ "ebay.com"
26
+ end
27
+
28
+ def sandbox
29
+ @sandbox ||= false
30
+ end
16
31
 
17
- def self.configure
18
- yield self if block_given?
32
+ def default_site_id
33
+ @default_site_id || EBAY_US
34
+ end
35
+
36
+ def configure
37
+ yield self if block_given?
38
+ end
19
39
  end
20
-
40
+
21
41
  protected
42
+
22
43
  def get_json_response(url)
23
44
  Rebay::Response.new(JSON.parse(Net::HTTP.get_response(URI.parse(url)).body))
24
45
  end
25
-
46
+
26
47
  def build_rest_payload(params)
27
48
  payload = ''
28
49
  unless params.nil?
@@ -33,4 +54,4 @@ module Rebay
33
54
  return payload
34
55
  end
35
56
  end
36
- end
57
+ end
@@ -1,6 +1,9 @@
1
1
  module Rebay
2
2
  class Finding < Rebay::Api
3
- BASE_URL = 'http://svcs.ebay.com/services/search/FindingService/v1'
3
+ def self.base_url_suffix
4
+ "ebay.com/services/search/FindingService/v1"
5
+ end
6
+
4
7
  VERSION = '1.0.0'
5
8
 
6
9
  #http://developer.ebay.com/DevZone/finding/CallRef/findItemsAdvanced.html
@@ -91,9 +94,9 @@ module Rebay
91
94
 
92
95
  private
93
96
  def build_request_url(service, params=nil)
94
- url = "#{BASE_URL}?OPERATION-NAME=#{service}&SERVICE-VERSION=#{VERSION}&SECURITY-APPNAME=#{Rebay::Api.app_id}&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD"
97
+ url = "#{self.class.base_url}?OPERATION-NAME=#{service}&SERVICE-VERSION=#{VERSION}&SECURITY-APPNAME=#{Rebay::Api.app_id}&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD"
95
98
  url += build_rest_payload(params)
96
99
  return url
97
100
  end
98
101
  end
99
- end
102
+ end
@@ -1,95 +1,106 @@
1
1
  module Rebay
2
2
  class Shopping < Rebay::Api
3
- BASE_URL = 'http://open.api.ebay.com/shopping'
4
- VERSION = '677'
3
+ VERSION = '793'
4
+
5
+ class << self
6
+ def base_url_prefix
7
+ "http://open.api"
8
+ end
9
+
10
+ def base_url_suffix
11
+ "ebay.com/shopping"
12
+ end
13
+ end
5
14
 
6
15
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindProducts.html
7
16
  def find_products(params)
8
- raise ArgumentError unless params[:categoryId] or params[:productId] or params[:queryKeywords]
17
+ raise ArgumentError unless params[:CategoryID] or params[:ProductID] or params[:QueryKeywords] or
18
+ (params[:'ProductID.Value'] && params[:'ProductID.type'])
9
19
  response = get_json_response(build_request_url('FindProducts', params))
10
20
  if response.response.has_key?('Product')
11
21
  response.results = response.response['Product']
12
22
  end
13
23
  return response
14
24
  end
15
-
25
+
16
26
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindHalfProducts.html
17
27
  def find_half_products(params)
18
- raise ArgumentError unless params[:productId] or params[:queryKeywords]
28
+ raise ArgumentError unless params[:ProductID] or params[:QueryKeywords] or
29
+ (params[:'ProductID.Value'] && params[:'ProductID.type'])
19
30
  response = get_json_response(build_request_url('FindHalfProducts', params))
20
31
  if response.response.has_key?('Products') && response.response['Products'].has_key?('Product')
21
32
  response.results = response.response['Products']['Product']
22
33
  end
23
34
  return response
24
35
  end
25
-
36
+
26
37
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetSingleItem.html
27
38
  def get_single_item(params)
28
- raise ArgumentError unless params[:itemId]
39
+ raise ArgumentError unless params[:ItemID]
29
40
  response = get_json_response(build_request_url('GetSingleItem', params))
30
41
  if response.response.has_key?('Item')
31
42
  response.results = response.response['Item']
32
43
  end
33
44
  return response
34
45
  end
35
-
46
+
36
47
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetItemStatus.html
37
48
  def get_item_status(params)
38
- raise ArgumentError unless params[:itemId]
49
+ raise ArgumentError unless params[:ItemID]
39
50
  response = get_json_response(build_request_url('GetItemStatus', params))
40
51
  if response.response.has_key?('Item')
41
52
  response.results = response.response['Item']
42
53
  end
43
54
  return response
44
55
  end
45
-
56
+
46
57
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetShippingCosts.html
47
58
  def get_shipping_costs(params)
48
- raise ArgumentError unless params[:itemId]
59
+ raise ArgumentError unless params[:ItemID]
49
60
  response = get_json_response(build_request_url('GetShippingCosts', params))
50
61
  return response
51
62
  end
52
-
63
+
53
64
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetMultipleItems.html
54
65
  def get_multiple_items(params)
55
- raise ArgumentError unless params[:itemId]
66
+ raise ArgumentError unless params[:ItemID]
56
67
  response = get_json_response(build_request_url('GetMultipleItems', params))
57
68
  if response.response.has_key?('Item')
58
69
  response.results = response.response['Item']
59
70
  end
60
71
  return response
61
72
  end
62
-
73
+
63
74
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetUserProfile.html
64
75
  def get_user_profile(params)
65
- raise ArgumentError unless params[:userId]
76
+ raise ArgumentError unless params[:UserID]
66
77
  response = get_json_response(build_request_url('GetUserProfile', params))
67
78
  if response.response.has_key?('User')
68
79
  response.results = response.response['User']
69
80
  end
70
81
  return response
71
82
  end
72
-
83
+
73
84
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindPopularSearches.html
74
85
  def find_popular_searches(params)
75
- raise ArgumentError unless params[:categoryId]
86
+ raise ArgumentError unless params[:CategoryID]
76
87
  response = get_json_response(build_request_url('FindPopularSearches', params))
77
88
  if response.response.has_key?('PopularSearchResult')
78
89
  response.results = response.response['PopularSearchResult']
79
90
  end
80
91
  return response
81
92
  end
82
-
93
+
83
94
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindPopularItems.html
84
95
  def find_popular_items(params={})
85
- raise ArgumentError unless params[:categoryId] or params[:queryKeywords]
96
+ raise ArgumentError unless params[:CategoryID] or params[:QueryKeywords]
86
97
  response = get_json_response(build_request_url('FindPopularItems', params))
87
98
  if response.response.has_key?('ItemArray') && response.response['ItemArray'].has_key?('Item')
88
99
  response.results = response.response['ItemArray']['Item']
89
100
  end
90
101
  return response
91
102
  end
92
-
103
+
93
104
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/FindReviewsandGuides.html
94
105
  def find_reviews_and_guides(params={})
95
106
  response = get_json_response(build_request_url('FindReviewsAndGuides', params))
@@ -98,28 +109,28 @@ module Rebay
98
109
  end
99
110
  return response
100
111
  end
101
-
112
+
102
113
  #http://developer.ebay.com/DevZone/shopping/docs/CallRef/GetCategoryInfo.html
103
114
  def get_category_info(params)
104
- raise ArgumentError unless params[:categoryId]
115
+ raise ArgumentError unless params[:CategoryID]
105
116
  response = get_json_response(build_request_url('GetCategoryInfo', params))
106
117
  if response.response.has_key?('CategoryArray') && response.response['CategoryArray'].has_key?('Category')
107
118
  response.results = response.response['CategoryArray']['Category']
108
119
  end
109
120
  return response
110
121
  end
111
-
122
+
112
123
  def get_category_info_with_children(params)
113
124
  params[:IncludeSelector] = 'ChildCategories'
114
125
  response = get_category_info(params)
115
126
  return response
116
- end
117
-
127
+ end
128
+
118
129
  private
119
130
  def build_request_url(service, params=nil)
120
- url = "#{BASE_URL}?callname=#{service}&appid=#{Rebay::Api.app_id}&version=#{VERSION}&responseencoding=JSON&siteid=#{Rebay::Api::EBAY_US}"
121
- url += build_rest_payload(params)
131
+ url = "#{self.class.base_url}?callname=#{service}&appid=#{Rebay::Api.app_id}&version=#{VERSION}&responseencoding=JSON"
132
+ url += build_rest_payload({siteid: Rebay::Api.default_site_id}.merge(params))
122
133
  return url
123
134
  end
124
135
  end
125
- end
136
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rebay"
8
- s.version = "1.1.3"
8
+ s.version = "1.2.0"
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 = "2012-02-17"
12
+ s.date = "2013-01-03"
13
13
  s.email = "chuck.collins@gmail.com"
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE",
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  ]
34
34
  s.homepage = "http://github.com/ccollins/rebay"
35
35
  s.require_paths = ["lib"]
36
- s.rubygems_version = "1.8.11"
36
+ s.rubygems_version = "1.8.23"
37
37
  s.summary = "Client for the RESTful JSON ebay finding and shopping api"
38
38
 
39
39
  if s.respond_to? :specification_version then
@@ -41,19 +41,13 @@ Gem::Specification.new do |s|
41
41
 
42
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
43
  s.add_development_dependency(%q<rspec>, [">= 0"])
44
- s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
45
- s.add_development_dependency(%q<jeweler>, [">= 1.5.2"])
46
44
  s.add_runtime_dependency(%q<json>, [">= 0"])
47
45
  else
48
46
  s.add_dependency(%q<rspec>, [">= 0"])
49
- s.add_dependency(%q<bundler>, [">= 1.0.0"])
50
- s.add_dependency(%q<jeweler>, [">= 1.5.2"])
51
47
  s.add_dependency(%q<json>, [">= 0"])
52
48
  end
53
49
  else
54
50
  s.add_dependency(%q<rspec>, [">= 0"])
55
- s.add_dependency(%q<bundler>, [">= 1.0.0"])
56
- s.add_dependency(%q<jeweler>, [">= 1.5.2"])
57
51
  s.add_dependency(%q<json>, [">= 0"])
58
52
  end
59
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rebay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-17 00:00:00.000000000Z
12
+ date: 2013-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70147704523280 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,40 +21,28 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70147704523280
25
- - !ruby/object:Gem::Dependency
26
- name: bundler
27
- requirement: &70147704517520 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
28
25
  none: false
29
26
  requirements:
30
27
  - - ! '>='
31
28
  - !ruby/object:Gem::Version
32
- version: 1.0.0
33
- type: :development
34
- prerelease: false
35
- version_requirements: *70147704517520
29
+ version: '0'
36
30
  - !ruby/object:Gem::Dependency
37
- name: jeweler
38
- requirement: &70147704513820 !ruby/object:Gem::Requirement
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
34
  requirements:
41
35
  - - ! '>='
42
36
  - !ruby/object:Gem::Version
43
- version: 1.5.2
44
- type: :development
37
+ version: '0'
38
+ type: :runtime
45
39
  prerelease: false
46
- version_requirements: *70147704513820
47
- - !ruby/object:Gem::Dependency
48
- name: json
49
- requirement: &70147704510340 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
50
41
  none: false
51
42
  requirements:
52
43
  - - ! '>='
53
44
  - !ruby/object:Gem::Version
54
45
  version: '0'
55
- type: :runtime
56
- prerelease: false
57
- version_requirements: *70147704510340
58
46
  description:
59
47
  email: chuck.collins@gmail.com
60
48
  executables: []
@@ -97,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
85
  version: '0'
98
86
  requirements: []
99
87
  rubyforge_project:
100
- rubygems_version: 1.8.11
88
+ rubygems_version: 1.8.23
101
89
  signing_key:
102
90
  specification_version: 3
103
91
  summary: Client for the RESTful JSON ebay finding and shopping api