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 +4 -4
- data/lib/ebay/browse.rb +13 -14
- data/lib/ebay/finding.rb +4 -8
- data/lib/ebay/merchandising.rb +4 -8
- data/lib/ebay/oauth/client_credentials_grant.rb +4 -11
- data/lib/ebay/requestable.rb +41 -0
- data/lib/ebay/shopping.rb +4 -8
- data/lib/ebay/version.rb +1 -1
- metadata +2 -2
- data/lib/ebay/sandboxable.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9fbfdf33fe78c10cfdeee697936f0f9eb31a8541a3f0b993d37058539227ac3
|
4
|
+
data.tar.gz: 1fee63caeec5e67ec429050c970bb4717089d5a6f3c150342e7babb9c735a787
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 '
|
3
|
+
require 'base64'
|
4
4
|
|
5
5
|
require 'ebay/config'
|
6
|
-
require 'ebay/
|
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
|
16
|
+
include Requestable
|
17
17
|
|
18
|
-
|
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
|
-
|
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 [
|
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
|
-
|
69
|
+
encoded_string = Base64.encode64(image.read)
|
70
|
+
body = JSON.dump(image: encoded_string)
|
71
71
|
|
72
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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/
|
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
|
13
|
+
include Requestable
|
16
14
|
|
17
|
-
|
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
|
-
|
141
|
+
http.post(endpoint, params: params, body: JSON.dump(payload))
|
146
142
|
end
|
147
143
|
end
|
148
144
|
end
|
data/lib/ebay/merchandising.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/
|
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
|
13
|
+
include Requestable
|
16
14
|
|
17
|
-
|
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
|
-
|
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/
|
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
|
12
|
+
include Requestable
|
15
13
|
|
16
|
-
|
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(
|
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/
|
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
|
12
|
+
include Requestable
|
15
13
|
|
16
|
-
|
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
|
-
|
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
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.
|
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/
|
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
|
data/lib/ebay/sandboxable.rb
DELETED
@@ -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
|