beyond_api 0.17.0.pre → 0.20.0.pre
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/.env.template +3 -0
- data/.rubocop.yml +35 -0
- data/CHANGELOG.md +38 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +68 -8
- data/Rakefile +4 -2
- data/beyond_api.gemspec +13 -9
- data/bin/console +2 -1
- data/lib/beyond_api/connection.rb +17 -6
- data/lib/beyond_api/error.rb +6 -6
- data/lib/beyond_api/ext.rb +16 -16
- data/lib/beyond_api/request.rb +21 -4
- data/lib/beyond_api/resources/carts.rb +52 -23
- data/lib/beyond_api/resources/categories_view.rb +16 -6
- data/lib/beyond_api/resources/newsletter_target.rb +10 -4
- data/lib/beyond_api/resources/orders.rb +152 -33
- data/lib/beyond_api/resources/payment_method_definitions.rb +11 -4
- data/lib/beyond_api/resources/product_attribute_definitions.rb +16 -4
- data/lib/beyond_api/resources/products/attachments.rb +0 -2
- data/lib/beyond_api/resources/products/availability.rb +20 -11
- data/lib/beyond_api/resources/products/cross_sells.rb +0 -1
- data/lib/beyond_api/resources/products/custom_attributes.rb +0 -1
- data/lib/beyond_api/resources/products/images.rb +35 -10
- data/lib/beyond_api/resources/products/searches.rb +62 -1
- data/lib/beyond_api/resources/products/variation_properties.rb +0 -1
- data/lib/beyond_api/resources/products/videos.rb +4 -3
- data/lib/beyond_api/resources/products.rb +32 -13
- data/lib/beyond_api/resources/products_view.rb +21 -5
- data/lib/beyond_api/resources/script_tags.rb +21 -5
- data/lib/beyond_api/resources/shipping_zones.rb +53 -12
- data/lib/beyond_api/resources/shop.rb +9 -2
- data/lib/beyond_api/resources/shops/address.rb +0 -1
- data/lib/beyond_api/resources/shops/attributes.rb +0 -1
- data/lib/beyond_api/resources/shops/images.rb +12 -9
- data/lib/beyond_api/resources/shops/legals.rb +14 -7
- data/lib/beyond_api/resources/shops/locations.rb +0 -1
- data/lib/beyond_api/resources/signers.rb +12 -3
- data/lib/beyond_api/resources/token.rb +20 -18
- data/lib/beyond_api/resources/users.rb +73 -15
- data/lib/beyond_api/resources/variations/availability.rb +17 -5
- data/lib/beyond_api/resources/variations/images.rb +60 -18
- data/lib/beyond_api/resources/variations.rb +14 -3
- data/lib/beyond_api/resources/webhook_subscriptions.rb +30 -8
- data/lib/beyond_api/session.rb +7 -1
- data/lib/beyond_api/utils.rb +55 -42
- data/lib/beyond_api/version.rb +3 -1
- data/lib/beyond_api.rb +3 -1
- data/lib/generators/beyond_api/install_generator.rb +1 -1
- metadata +61 -17
@@ -3,7 +3,7 @@
|
|
3
3
|
require "beyond_api/utils"
|
4
4
|
|
5
5
|
module BeyondApi
|
6
|
-
class WebhookSubscriptions < Base
|
6
|
+
class WebhookSubscriptions < Base
|
7
7
|
include BeyondApi::Utils
|
8
8
|
|
9
9
|
#
|
@@ -22,7 +22,10 @@ module BeyondApi
|
|
22
22
|
# session.webhook_subscriptions.activate("268a8629-55cd-4890-9013-936b9b5ea14c")
|
23
23
|
#
|
24
24
|
def activate(webhook_subscription_id)
|
25
|
-
|
25
|
+
path = "/webhook-subscriptions/#{webhook_subscription_id}/activate"
|
26
|
+
|
27
|
+
response, status = BeyondApi::Request.post(@session,
|
28
|
+
path)
|
26
29
|
|
27
30
|
handle_response(response, status, respond_with_true: true)
|
28
31
|
end
|
@@ -44,7 +47,9 @@ module BeyondApi
|
|
44
47
|
# @webhook_subscriptions = session.webhook_subscriptions.all(size: 100, page: 0)
|
45
48
|
#
|
46
49
|
def all(params = {})
|
47
|
-
|
50
|
+
path = "/webhook-subscriptions"
|
51
|
+
|
52
|
+
handle_all_request(path, :webhook_subscriptions, params)
|
48
53
|
end
|
49
54
|
|
50
55
|
#
|
@@ -74,7 +79,11 @@ module BeyondApi
|
|
74
79
|
# @webhook_subscription = session.webhook_subscriptions.create(body)
|
75
80
|
#
|
76
81
|
def create(body)
|
77
|
-
|
82
|
+
path = "/webhook-subscriptions"
|
83
|
+
|
84
|
+
response, status = BeyondApi::Request.post(@session,
|
85
|
+
path,
|
86
|
+
body)
|
78
87
|
|
79
88
|
handle_response(response, status)
|
80
89
|
end
|
@@ -93,7 +102,10 @@ module BeyondApi
|
|
93
102
|
# session.webhook_subscriptions.deactivate("a597cea4-b688-4164-8c56-b6568ea4d5aa")
|
94
103
|
#
|
95
104
|
def deactivate(webhook_subscription_id)
|
96
|
-
|
105
|
+
path = "/webhook-subscriptions/#{webhook_subscription_id}/deactivate"
|
106
|
+
|
107
|
+
response, status = BeyondApi::Request.post(@session,
|
108
|
+
path)
|
97
109
|
|
98
110
|
handle_response(response, status, respond_with_true: true)
|
99
111
|
end
|
@@ -112,7 +124,10 @@ module BeyondApi
|
|
112
124
|
# session.webhook_subscriptions.delete("c6076a5a-a8ad-443f-b20b-8a1b268b069e")
|
113
125
|
#
|
114
126
|
def delete(webhook_subscription_id)
|
115
|
-
|
127
|
+
path = "/webhook-subscriptions/#{webhook_subscription_id}"
|
128
|
+
|
129
|
+
response, status = BeyondApi::Request.delete(@session,
|
130
|
+
path)
|
116
131
|
|
117
132
|
handle_response(response, status, respond_with_true: true)
|
118
133
|
end
|
@@ -132,7 +147,10 @@ module BeyondApi
|
|
132
147
|
# @webhook_subscription = session.webhook_subscriptions.find("3d44ec71-768c-4927-9069-a96a5153e87c")
|
133
148
|
#
|
134
149
|
def find(webhook_subscription_id)
|
135
|
-
|
150
|
+
path = "/webhook-subscriptions/#{webhook_subscription_id}"
|
151
|
+
|
152
|
+
response, status = BeyondApi::Request.get(@session,
|
153
|
+
path)
|
136
154
|
|
137
155
|
handle_response(response, status)
|
138
156
|
end
|
@@ -167,7 +185,11 @@ module BeyondApi
|
|
167
185
|
# @webhook_subscription = session.webhook_subscriptions.update("6f3bc033-c2d1-4f44-80e3-1b668f6bd699", body)
|
168
186
|
#
|
169
187
|
def update(webhook_subscription_id, body)
|
170
|
-
|
188
|
+
path = "/webhook-subscriptions/#{webhook_subscription_id}"
|
189
|
+
|
190
|
+
response, status = BeyondApi::Request.put(@session,
|
191
|
+
path,
|
192
|
+
body)
|
171
193
|
|
172
194
|
handle_response(response, status)
|
173
195
|
end
|
data/lib/beyond_api/session.rb
CHANGED
@@ -26,11 +26,17 @@ module BeyondApi
|
|
26
26
|
autoload :WebhookSubscriptions, "beyond_api/resources/webhook_subscriptions"
|
27
27
|
|
28
28
|
class Session
|
29
|
+
class InvalidUriProtocolError < StandardError; end
|
30
|
+
|
29
31
|
attr_reader :api_url
|
30
32
|
attr_accessor :access_token, :refresh_token
|
31
33
|
|
32
34
|
def initialize(api_url:, access_token: nil, refresh_token: nil)
|
33
|
-
|
35
|
+
raise InvalidUriProtocolError, "Invalid URI protocol" unless api_url.start_with? "https://"
|
36
|
+
|
37
|
+
uri = URI.parse(api_url)
|
38
|
+
|
39
|
+
@api_url = "#{uri.scheme}://#{uri.host}/api"
|
34
40
|
@access_token = access_token
|
35
41
|
@refresh_token = refresh_token
|
36
42
|
end
|
data/lib/beyond_api/utils.rb
CHANGED
@@ -4,13 +4,34 @@ module BeyondApi
|
|
4
4
|
module Utils
|
5
5
|
extend self
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
def file_content_type(file_path)
|
8
|
+
case File.extname(file_path)
|
9
|
+
when ".png"
|
10
|
+
"image/png"
|
11
|
+
when ".jpg", ".jpeg"
|
12
|
+
"image/jpeg"
|
13
|
+
when ".gif"
|
14
|
+
"image/gif"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle_all_request(url, resource, params = {})
|
19
|
+
paginated_size = BeyondApi.configuration.all_pagination_size
|
20
|
+
|
21
|
+
if params[:paginated] == false
|
22
|
+
result = all_paginated(url, params.merge(page: 0, size: paginated_size))
|
23
|
+
|
24
|
+
(1..result[:page][:total_pages] - 1).each do |page|
|
25
|
+
result[:embedded][resource].concat(all_paginated(url, params.merge(page: page, size: paginated_size))[:embedded][resource])
|
26
|
+
end
|
27
|
+
|
28
|
+
result[:page][:size] = result[:page][:total_elements]
|
29
|
+
result[:page][:total_pages] = 1
|
30
|
+
result[:page][:number] = 0
|
31
|
+
|
32
|
+
result
|
12
33
|
else
|
13
|
-
|
34
|
+
all_paginated(url, params)
|
14
35
|
end
|
15
36
|
end
|
16
37
|
|
@@ -20,64 +41,56 @@ module BeyondApi
|
|
20
41
|
BeyondApi.configuration.raise_error_requests ? raise(error) : error
|
21
42
|
end
|
22
43
|
|
23
|
-
def
|
24
|
-
if
|
25
|
-
return
|
26
|
-
|
27
|
-
|
44
|
+
def handle_response(response, status, respond_with_true: false)
|
45
|
+
if status.between?(200, 299)
|
46
|
+
return true if respond_with_true
|
47
|
+
|
48
|
+
response = sanitize_response(response)
|
49
|
+
BeyondApi.configuration.object_struct_responses ? to_object_struct(response) : response
|
28
50
|
else
|
29
|
-
|
51
|
+
handle_error(response, status)
|
30
52
|
end
|
31
53
|
end
|
32
54
|
|
55
|
+
def sanitize_key(key)
|
56
|
+
key.chars.first == "_" ? key[1..-1] : key
|
57
|
+
end
|
58
|
+
|
33
59
|
def sanitize_response(hash)
|
34
60
|
{}.tap do |h|
|
35
61
|
hash.each do |key, value|
|
36
62
|
next if key == "_links" && BeyondApi.configuration.remove_response_links
|
63
|
+
|
37
64
|
key = sanitize_key(key) if BeyondApi.configuration.remove_response_key_underscores
|
38
65
|
h[key.underscore.to_sym] = transform(value)
|
39
66
|
end
|
40
67
|
end
|
41
68
|
end
|
42
69
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
paginated_size = BeyondApi.configuration.all_pagination_size
|
49
|
-
|
50
|
-
if params[:paginated] == false
|
51
|
-
result = all_paginated(url, params.merge(page: 0, size: paginated_size))
|
52
|
-
|
53
|
-
(1..result[:page][:total_pages] - 1).each do |page|
|
54
|
-
result[:embedded][resource].concat(all_paginated(url, params.merge(page: page, size: paginated_size))[:embedded][resource])
|
55
|
-
end
|
56
|
-
|
57
|
-
result[:page][:size] = result[:page][:total_elements]
|
58
|
-
result[:page][:total_pages] = 1
|
59
|
-
result[:page][:number] = 0
|
60
|
-
|
61
|
-
result
|
70
|
+
def to_object_struct(data)
|
71
|
+
if data.is_a? Hash
|
72
|
+
OpenStruct.new(data.map { |key, val| [key, to_object_struct(val)] }.to_h)
|
73
|
+
elsif data.is_a? Array
|
74
|
+
data.map { |o| to_object_struct(o) }
|
62
75
|
else
|
63
|
-
|
76
|
+
data
|
64
77
|
end
|
65
78
|
end
|
66
79
|
|
67
80
|
private
|
68
81
|
|
69
|
-
|
70
|
-
|
71
|
-
when Hash; sanitize_response(thing)
|
72
|
-
when Array; thing.map { |v| transform(v) }
|
73
|
-
else; thing
|
74
|
-
end
|
75
|
-
end
|
82
|
+
def all_paginated(url, params = {})
|
83
|
+
response, status = BeyondApi::Request.get(@session, url, params)
|
76
84
|
|
77
|
-
|
78
|
-
|
85
|
+
handle_response(response, status)
|
86
|
+
end
|
79
87
|
|
80
|
-
|
88
|
+
def transform(thing)
|
89
|
+
case thing
|
90
|
+
when Hash then sanitize_response(thing)
|
91
|
+
when Array then thing.map { |v| transform(v) }
|
92
|
+
else; thing
|
81
93
|
end
|
94
|
+
end
|
82
95
|
end
|
83
96
|
end
|
data/lib/beyond_api/version.rb
CHANGED
data/lib/beyond_api.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "beyond_api/version"
|
2
4
|
|
3
5
|
require "logger"
|
@@ -25,7 +27,7 @@ module BeyondApi
|
|
25
27
|
end
|
26
28
|
|
27
29
|
class Configuration
|
28
|
-
attr_accessor :client_id, :client_secret, :open_timeout, :timeout,
|
30
|
+
attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links,
|
29
31
|
:remove_response_key_underscores, :object_struct_responses, :raise_error_requests,
|
30
32
|
:log_headers, :log_bodies, :log_level, :all_pagination_size
|
31
33
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module BeyondApi
|
4
4
|
module Generators
|
5
5
|
class InstallGenerator < Rails::Generators::Base
|
6
|
-
source_root File.expand_path("
|
6
|
+
source_root File.expand_path("../templates", __dir__)
|
7
7
|
|
8
8
|
def copy_initializer
|
9
9
|
template "beyond_api_initializer.rb", "config/initializers/beyond_api.rb"
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beyond_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Unai Abrisketa
|
8
8
|
- Kathia Salazar
|
9
9
|
- German San Emeterio
|
10
10
|
- Kenneth Gallego
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-
|
14
|
+
date: 2021-12-03 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -27,6 +27,34 @@ dependencies:
|
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '2.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: dotenv
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '2.7'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.7'
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: faker
|
46
|
+
requirement: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '2.2'
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '2.2'
|
30
58
|
- !ruby/object:Gem::Dependency
|
31
59
|
name: rake
|
32
60
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,7 +84,21 @@ dependencies:
|
|
56
84
|
- !ruby/object:Gem::Version
|
57
85
|
version: '3.0'
|
58
86
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
87
|
+
name: rubocop
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - "~>"
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '1.20'
|
93
|
+
type: :development
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '1.20'
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: rubocop-ordered_methods
|
60
102
|
requirement: !ruby/object:Gem::Requirement
|
61
103
|
requirements:
|
62
104
|
- - "~>"
|
@@ -70,55 +112,57 @@ dependencies:
|
|
70
112
|
- !ruby/object:Gem::Version
|
71
113
|
version: '0.9'
|
72
114
|
- !ruby/object:Gem::Dependency
|
73
|
-
name:
|
115
|
+
name: rubocop-rspec
|
74
116
|
requirement: !ruby/object:Gem::Requirement
|
75
117
|
requirements:
|
76
118
|
- - "~>"
|
77
119
|
- !ruby/object:Gem::Version
|
78
|
-
version: '2.
|
120
|
+
version: '2.4'
|
79
121
|
type: :development
|
80
122
|
prerelease: false
|
81
123
|
version_requirements: !ruby/object:Gem::Requirement
|
82
124
|
requirements:
|
83
125
|
- - "~>"
|
84
126
|
- !ruby/object:Gem::Version
|
85
|
-
version: '2.
|
127
|
+
version: '2.4'
|
86
128
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
129
|
+
name: yard
|
88
130
|
requirement: !ruby/object:Gem::Requirement
|
89
131
|
requirements:
|
90
132
|
- - "~>"
|
91
133
|
- !ruby/object:Gem::Version
|
92
|
-
version: '
|
134
|
+
version: '0.9'
|
93
135
|
type: :development
|
94
136
|
prerelease: false
|
95
137
|
version_requirements: !ruby/object:Gem::Requirement
|
96
138
|
requirements:
|
97
139
|
- - "~>"
|
98
140
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
141
|
+
version: '0.9'
|
100
142
|
- !ruby/object:Gem::Dependency
|
101
143
|
name: faraday
|
102
144
|
requirement: !ruby/object:Gem::Requirement
|
103
145
|
requirements:
|
104
146
|
- - "~>"
|
105
147
|
- !ruby/object:Gem::Version
|
106
|
-
version:
|
148
|
+
version: 1.8.0
|
107
149
|
type: :runtime
|
108
150
|
prerelease: false
|
109
151
|
version_requirements: !ruby/object:Gem::Requirement
|
110
152
|
requirements:
|
111
153
|
- - "~>"
|
112
154
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
114
|
-
description:
|
115
|
-
email:
|
155
|
+
version: 1.8.0
|
156
|
+
description:
|
157
|
+
email:
|
116
158
|
executables: []
|
117
159
|
extensions: []
|
118
160
|
extra_rdoc_files: []
|
119
161
|
files:
|
162
|
+
- ".env.template"
|
120
163
|
- ".gitignore"
|
121
164
|
- ".rspec"
|
165
|
+
- ".rubocop.yml"
|
122
166
|
- ".travis.yml"
|
123
167
|
- ".yardopts"
|
124
168
|
- CHANGELOG.md
|
@@ -184,7 +228,7 @@ files:
|
|
184
228
|
homepage: https://github.com/ePages-de/beyond_api-ruby_client
|
185
229
|
licenses: []
|
186
230
|
metadata: {}
|
187
|
-
post_install_message:
|
231
|
+
post_install_message:
|
188
232
|
rdoc_options: []
|
189
233
|
require_paths:
|
190
234
|
- lib
|
@@ -199,8 +243,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
243
|
- !ruby/object:Gem::Version
|
200
244
|
version: 1.3.1
|
201
245
|
requirements: []
|
202
|
-
rubygems_version: 3.
|
203
|
-
signing_key:
|
246
|
+
rubygems_version: 3.0.3
|
247
|
+
signing_key:
|
204
248
|
specification_version: 4
|
205
249
|
summary: Ruby client to access the Beyond API
|
206
250
|
test_files: []
|