ebay-ruby 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18523b3ec4ff1f6d4bac8c6dbeb4d2570ece325e963ed4540aded51bcbef8be9
4
- data.tar.gz: 4db3fedd2023ff5c49d0a6e1369188325d1e61b798dc77b63c1cd51ee9b3baa6
3
+ metadata.gz: d9fbfdf33fe78c10cfdeee697936f0f9eb31a8541a3f0b993d37058539227ac3
4
+ data.tar.gz: 1fee63caeec5e67ec429050c970bb4717089d5a6f3c150342e7babb9c735a787
5
5
  SHA512:
6
- metadata.gz: 5e6cf632c7006f51393878a5af01057e9cec95678ddc7e7565e528f4c015ec2a19a70e55b1ddd8f67e4a5f5e40e00e8e2c858811178faf214084f65f934bdcf3
7
- data.tar.gz: 138a8d6fa3f982ed664cc4340ea9d47802fb4a4c8b3cc9dd5fcbfee050198c4916bda43521947831e78422bee8fd06f7db979e8934b998e7bfd153fb16151995
6
+ metadata.gz: cbea01c20e390702353ef7970d08c43fc067efb26a760f89e0884f91b29310795c7bc3bdcd2495e0638d588332a5ed4b927863a2394cac8fe8fa75d287960dcb
7
+ data.tar.gz: d759fdf30c035ab2d9934ececd8228d05d2ad9a7eadbfb2128c287af4b5db10b063e4d1b8f8f6198b39a68bda2fb370271ea6bb657ba13722f1a0f5a9bbe74b7
data/lib/ebay/browse.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'http'
3
+ require 'base64'
4
4
 
5
5
  require 'ebay/config'
6
- require 'ebay/sandboxable'
6
+ require 'ebay/requestable'
7
7
 
8
8
  module Ebay
9
9
  # Using the Browse API, you can create a rich selection of items for your
@@ -13,10 +13,9 @@ module Ebay
13
13
  #
14
14
  # @see https://developer.ebay.com/api-docs/buy/browse/overview.html
15
15
  class Browse
16
- include Sandboxable
16
+ include Requestable
17
17
 
18
- SANDBOX_ENDPOINT = 'https://api.sandbox.ebay.com/buy/browse/v1'
19
- PRODUCTION_ENDPOINT = 'https://api.ebay.com/buy/browse/v1'
18
+ self.endpoint = 'https://api.ebay.com/buy/browse/v1'
20
19
 
21
20
  # @return [String]
22
21
  attr_reader :campaign_id
@@ -56,20 +55,21 @@ module Ebay
56
55
  # @return [HTTP::Response]
57
56
  def search(**params)
58
57
  url = build_url('item_summary', 'search')
59
- HTTP.headers(build_headers).get(url, params: params)
58
+ http.headers(build_headers).get(url, params: params)
60
59
  end
61
60
 
62
61
  # Searches for eBay items based on a image and retrieves their summaries
63
62
  #
64
- # @param [String] image the Base64 string of the image
63
+ # @param [File] image
65
64
  # @param [Hash] params
66
65
  # @return [HTTP::Response]
67
66
  def search_by_image(image, **params)
68
67
  url = build_url('item_summary', 'search_by_image')
69
68
  headers = build_headers.update('CONTENT-TYPE' => 'application/json')
70
- body = JSON.dump(image: image)
69
+ encoded_string = Base64.encode64(image.read)
70
+ body = JSON.dump(image: encoded_string)
71
71
 
72
- HTTP.headers(headers).post(url, params: params, body: body)
72
+ http.headers(headers).post(url, params: params, body: body)
73
73
  end
74
74
 
75
75
  # Retrieves the details of a specific item
@@ -81,7 +81,7 @@ module Ebay
81
81
  url = build_url('item', item_id)
82
82
  params.update(item_id: item_id)
83
83
 
84
- HTTP.headers(build_headers).get(url, params: params)
84
+ http.headers(build_headers).get(url, params: params)
85
85
  end
86
86
 
87
87
  # Retrieves the details of a specific item using its legacy item ID
@@ -93,7 +93,7 @@ module Ebay
93
93
  url = build_url('item', 'get_item_by_legacy_id')
94
94
  params.update(legacy_item_id: legacy_item_id)
95
95
 
96
- HTTP.headers(build_headers).get(url, params: params)
96
+ http.headers(build_headers).get(url, params: params)
97
97
  end
98
98
 
99
99
  # Retrieves the details of the individual items in an item group
@@ -104,7 +104,7 @@ module Ebay
104
104
  url = build_url('item', 'get_items_by_item_group')
105
105
  params = { item_group_id: item_group_id }
106
106
 
107
- HTTP.headers(build_headers).get(url, params: params)
107
+ http.headers(build_headers).get(url, params: params)
108
108
  end
109
109
 
110
110
  # Retrieves the details of the individual items in an item group
@@ -119,7 +119,7 @@ module Ebay
119
119
  'CONTENT-TYPE' => 'application/json')
120
120
  body = JSON.dump('compatibilityProperties' => compatibility_properties)
121
121
 
122
- HTTP.headers(headers).post(url, body: body)
122
+ http.headers(headers).post(url, body: body)
123
123
  end
124
124
 
125
125
  def add_item
@@ -141,7 +141,6 @@ module Ebay
141
141
  private
142
142
 
143
143
  def build_url(*resources, operation)
144
- endpoint = sandbox? ? SANDBOX_ENDPOINT : PRODUCTION_ENDPOINT
145
144
  [endpoint, *resources, operation].join('/')
146
145
  end
147
146
 
data/lib/ebay/finding.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'http'
4
-
5
3
  require 'ebay/config'
6
- require 'ebay/sandboxable'
4
+ require 'ebay/requestable'
7
5
 
8
6
  module Ebay
9
7
  # The Finding API lets you search for and browse items listed on eBay and
@@ -12,10 +10,9 @@ module Ebay
12
10
  # @see https://developer.ebay.com/Devzone/finding/Concepts/MakingACall.html
13
11
  # @see https://developer.ebay.com/Devzone/finding/CallRef/index.html
14
12
  class Finding
15
- include Sandboxable
13
+ include Requestable
16
14
 
17
- SANDBOX_ENDPOINT = 'https://svcs.sandbox.ebay.com/services/search/FindingService/v1'
18
- PRODUCTION_ENDPOINT = 'https://svcs.ebay.com/services/search/FindingService/v1'
15
+ self.endpoint = 'https://svcs.ebay.com/services/search/FindingService/v1'
19
16
 
20
17
  # @return [String, nil]
21
18
  attr_reader :global_id
@@ -133,7 +130,6 @@ module Ebay
133
130
  private
134
131
 
135
132
  def request(operation, payload = {})
136
- url = sandbox? ? SANDBOX_ENDPOINT : PRODUCTION_ENDPOINT
137
133
  params = { 'GLOBAL-ID' => global_id,
138
134
  'MESSAGE-ENCODING' => message_encoding,
139
135
  'OPERATION-NAME' => operation,
@@ -142,7 +138,7 @@ module Ebay
142
138
  'SECURITY-APPNAME' => security_appname,
143
139
  'SERVICE-VERSION' => service_version }.compact
144
140
 
145
- HTTP.post(url, params: params, body: JSON.dump(payload))
141
+ http.post(endpoint, params: params, body: JSON.dump(payload))
146
142
  end
147
143
  end
148
144
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'http'
4
-
5
3
  require 'ebay/config'
6
- require 'ebay/sandboxable'
4
+ require 'ebay/requestable'
7
5
 
8
6
  module Ebay
9
7
  # Retrieves information about products or item listings on eBay to help you
@@ -12,10 +10,9 @@ module Ebay
12
10
  # @see https://developer.ebay.com/Devzone/merchandising/docs/Concepts/MerchandisingAPI_FormatOverview.html
13
11
  # @see https://developer.ebay.com/Devzone/merchandising/docs/CallRef/index.html
14
12
  class Merchandising
15
- include Sandboxable
13
+ include Requestable
16
14
 
17
- SANDBOX_ENDPOINT = 'https://svcs.sandbox.ebay.com/MerchandisingService'
18
- PRODUCTION_ENDPOINT = 'https://svcs.ebay.com/MerchandisingService'
15
+ self.endpoint = 'https://svcs.ebay.com/MerchandisingService'
19
16
 
20
17
  # @return [String]
21
18
  attr_reader :consumer_id
@@ -80,7 +77,6 @@ module Ebay
80
77
  private
81
78
 
82
79
  def request(operation, payload = {})
83
- endpoint = sandbox? ? SANDBOX_ENDPOINT : PRODUCTION_ENDPOINT
84
80
  params = { 'CONSUMER-ID' => consumer_id,
85
81
  'GLOBAL-ID' => global_id,
86
82
  'OPERATION-NAME' => operation,
@@ -88,7 +84,7 @@ module Ebay
88
84
  'RESPONSE-DATA-FORMAT' => response_data_format,
89
85
  'SERVICE-VERSION' => service_version }.compact
90
86
 
91
- HTTP.post(endpoint, params: params, body: JSON.dump(payload))
87
+ http.post(endpoint, params: params, body: JSON.dump(payload))
92
88
  end
93
89
  end
94
90
  end
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'http'
4
-
5
3
  require 'ebay/config'
6
- require 'ebay/sandboxable'
4
+ require 'ebay/requestable'
7
5
 
8
6
  module Ebay
9
7
  module Oauth
@@ -11,10 +9,9 @@ module Ebay
11
9
  #
12
10
  # @see https://developer.ebay.com/api-docs/static/oauth-client-credentials-grant.html
13
11
  class ClientCredentialsGrant
14
- include Sandboxable
12
+ include Requestable
15
13
 
16
- SANDBOX_ENDPOINT = 'https://api.sandbox.ebay.com/identity/v1/oauth2/token'
17
- PRODUCTION_ENDPOINT = 'https://api.ebay.com/identity/v1/oauth2/token'
14
+ self.endpoint = 'https://api.ebay.com/identity/v1/oauth2/token'
18
15
 
19
16
  # @return [String]
20
17
  attr_reader :app_id
@@ -41,15 +38,11 @@ module Ebay
41
38
  # @return [HTTP::Response]
42
39
  def request
43
40
  HTTP.basic_auth(user: app_id, pass: cert_id)
44
- .post(url, form: payload)
41
+ .post(endpoint, form: payload)
45
42
  end
46
43
 
47
44
  private
48
45
 
49
- def url
50
- sandbox? ? SANDBOX_ENDPOINT : PRODUCTION_ENDPOINT
51
- end
52
-
53
46
  def payload
54
47
  { grant_type: 'client_credentials',
55
48
  scope: 'https://api.ebay.com/oauth/api_scope' }
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'http'
4
+
5
+ module Ebay
6
+ # Adds an HTTP client and ability to switch to the eBay Sandbox environment
7
+ module Requestable
8
+ class << self
9
+ private
10
+
11
+ def included(base)
12
+ class << base
13
+ attr_accessor :endpoint
14
+ end
15
+ end
16
+ end
17
+
18
+ # @return [HTTP::Client]
19
+ attr_writer :http
20
+
21
+ # @!attribute [r] http
22
+ # @return [HTTP::Client]
23
+ def http
24
+ @http ||= HTTP::Client.new
25
+ end
26
+
27
+ # @!attribute [r] endpoint
28
+ # @return [String]
29
+ def endpoint
30
+ @endpoint ||= self.class.endpoint
31
+ end
32
+
33
+ # Switches to the eBay Sandbox environment
34
+ #
35
+ # @return [self]
36
+ def sandbox
37
+ @endpoint = endpoint.sub('ebay', 'sandbox.ebay')
38
+ self
39
+ end
40
+ end
41
+ end
data/lib/ebay/shopping.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'http'
4
-
5
3
  require 'ebay/config'
6
- require 'ebay/sandboxable'
4
+ require 'ebay/requestable'
7
5
 
8
6
  module Ebay
9
7
  # The eBay Shopping API makes it easy to search for things on eBay.
@@ -11,10 +9,9 @@ module Ebay
11
9
  # @see https://developer.ebay.com/Devzone/shopping/docs/Concepts/ShoppingAPI_FormatOverview.html
12
10
  # @see https://developer.ebay.com/Devzone/shopping/docs/CallRef/index.html
13
11
  class Shopping
14
- include Sandboxable
12
+ include Requestable
15
13
 
16
- SANDBOX_ENDPOINT = 'https://open.api.sandbox.ebay.com/shopping'
17
- PRODUCTION_ENDPOINT = 'https://open.api.ebay.com/shopping'
14
+ self.endpoint = 'https://open.api.ebay.com/shopping'
18
15
 
19
16
  # @return [String]
20
17
  attr_reader :app_id
@@ -149,7 +146,6 @@ module Ebay
149
146
  private
150
147
 
151
148
  def request(operation, payload = {})
152
- endpoint = sandbox? ? SANDBOX_ENDPOINT : PRODUCTION_ENDPOINT
153
149
  params = { 'appid' => app_id,
154
150
  'callname' => operation,
155
151
  'requestencoding' => 'JSON',
@@ -161,7 +157,7 @@ module Ebay
161
157
  'trackingid' => tracking_id,
162
158
  'trackingpartnercode' => tracking_partner_code }.compact
163
159
 
164
- HTTP.post(endpoint, params: params, body: JSON.dump(payload))
160
+ http.post(endpoint, params: params, body: JSON.dump(payload))
165
161
  end
166
162
  end
167
163
  end
data/lib/ebay/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ebay
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebay-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hakan Ensari
@@ -138,7 +138,7 @@ files:
138
138
  - lib/ebay/finding.rb
139
139
  - lib/ebay/merchandising.rb
140
140
  - lib/ebay/oauth/client_credentials_grant.rb
141
- - lib/ebay/sandboxable.rb
141
+ - lib/ebay/requestable.rb
142
142
  - lib/ebay/shopping.rb
143
143
  - lib/ebay/version.rb
144
144
  homepage: https://github.com/hakanensari/ebay-ruby
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'ebay/config'
4
-
5
- module Ebay
6
- # Allows running requests in the eBay Sandbox
7
- module Sandboxable
8
- # Runs requests in the eBay Sandbox
9
- #
10
- # @return [self]
11
- def sandbox
12
- @sandbox = true
13
- self
14
- end
15
-
16
- # @!attribute [r] sandbox?
17
- # Returns whether requests run in the eBay Sandbox
18
- #
19
- # @return [Boolean]
20
- def sandbox?
21
- @sandbox ||= false
22
- end
23
- end
24
- end