beyond_api 0.16.1.pre → 0.19.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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.env.template +3 -0
  3. data/.rubocop.yml +35 -0
  4. data/CHANGELOG.md +38 -1
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +68 -8
  7. data/Rakefile +4 -2
  8. data/beyond_api.gemspec +14 -10
  9. data/bin/console +2 -1
  10. data/lib/beyond_api/connection.rb +17 -6
  11. data/lib/beyond_api/error.rb +6 -6
  12. data/lib/beyond_api/ext.rb +16 -16
  13. data/lib/beyond_api/request.rb +21 -4
  14. data/lib/beyond_api/resources/carts.rb +52 -23
  15. data/lib/beyond_api/resources/categories_view.rb +16 -6
  16. data/lib/beyond_api/resources/newsletter_target.rb +10 -4
  17. data/lib/beyond_api/resources/orders.rb +152 -33
  18. data/lib/beyond_api/resources/payment_method_definitions.rb +11 -4
  19. data/lib/beyond_api/resources/product_attribute_definitions.rb +16 -4
  20. data/lib/beyond_api/resources/products/attachments.rb +0 -2
  21. data/lib/beyond_api/resources/products/availability.rb +20 -11
  22. data/lib/beyond_api/resources/products/cross_sells.rb +0 -1
  23. data/lib/beyond_api/resources/products/custom_attributes.rb +0 -1
  24. data/lib/beyond_api/resources/products/images.rb +35 -10
  25. data/lib/beyond_api/resources/products/searches.rb +2 -2
  26. data/lib/beyond_api/resources/products/variation_properties.rb +0 -1
  27. data/lib/beyond_api/resources/products/videos.rb +4 -3
  28. data/lib/beyond_api/resources/products.rb +32 -13
  29. data/lib/beyond_api/resources/products_view.rb +21 -5
  30. data/lib/beyond_api/resources/script_tags.rb +21 -5
  31. data/lib/beyond_api/resources/shipping_zones.rb +53 -12
  32. data/lib/beyond_api/resources/shop.rb +9 -2
  33. data/lib/beyond_api/resources/shops/address.rb +0 -1
  34. data/lib/beyond_api/resources/shops/attributes.rb +0 -1
  35. data/lib/beyond_api/resources/shops/images.rb +12 -9
  36. data/lib/beyond_api/resources/shops/legals.rb +14 -7
  37. data/lib/beyond_api/resources/shops/locations.rb +0 -1
  38. data/lib/beyond_api/resources/signers.rb +12 -3
  39. data/lib/beyond_api/resources/token.rb +20 -18
  40. data/lib/beyond_api/resources/users.rb +73 -15
  41. data/lib/beyond_api/resources/variations/availability.rb +17 -5
  42. data/lib/beyond_api/resources/variations/images.rb +60 -18
  43. data/lib/beyond_api/resources/variations.rb +14 -3
  44. data/lib/beyond_api/resources/webhook_subscriptions.rb +30 -8
  45. data/lib/beyond_api/session.rb +7 -1
  46. data/lib/beyond_api/utils.rb +55 -41
  47. data/lib/beyond_api/version.rb +3 -1
  48. data/lib/beyond_api.rb +6 -2
  49. data/lib/generators/beyond_api/install_generator.rb +1 -1
  50. data/lib/generators/templates/beyond_api_initializer.rb +3 -0
  51. metadata +57 -12
@@ -4,13 +4,34 @@ module BeyondApi
4
4
  module Utils
5
5
  extend self
6
6
 
7
- def handle_response(response, status, respond_with_true: false)
8
- if status.between?(200, 299)
9
- return true if respond_with_true
10
- response = sanitize_response(response)
11
- BeyondApi.configuration.object_struct_responses ? to_object_struct(response) : response
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
- handle_error(response, status)
34
+ all_paginated(url, params)
14
35
  end
15
36
  end
16
37
 
@@ -20,63 +41,56 @@ module BeyondApi
20
41
  BeyondApi.configuration.raise_error_requests ? raise(error) : error
21
42
  end
22
43
 
23
- def to_object_struct(data)
24
- if data.is_a? Hash
25
- return OpenStruct.new(data.map { |key, val| [key, to_object_struct(val)] }.to_h)
26
- elsif data.is_a? Array
27
- return data.map { |o| to_object_struct(o) }
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
- return data
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 sanitize_key(key)
44
- key.chars.first == "_" ? key[1..-1] : key
45
- end
46
-
47
- def handle_all_request(url, resource, params = {})
48
-
49
- if params[:paginated] == false
50
- result = all_paginated(url, params.merge(page: 0, size: 1000))
51
-
52
- (1..result[:page][:total_pages] - 1).each do |page|
53
- result[:embedded][resource].concat(all_paginated(url, params.merge(page: page, size: 1000))[:embedded][resource])
54
- end
55
-
56
- result[:page][:size] = result[:page][:total_elements]
57
- result[:page][:total_pages] = 1
58
- result[:page][:number] = 0
59
-
60
- 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) }
61
75
  else
62
- all_paginated(url, params)
76
+ data
63
77
  end
64
78
  end
65
79
 
66
80
  private
67
81
 
68
- def transform(thing)
69
- case thing
70
- when Hash; sanitize_response(thing)
71
- when Array; thing.map { |v| transform(v) }
72
- else; thing
73
- end
74
- end
82
+ def all_paginated(url, params = {})
83
+ response, status = BeyondApi::Request.get(@session, url, params)
75
84
 
76
- def all_paginated(url, params = {})
77
- response, status = BeyondApi::Request.get(@session, url, params)
85
+ handle_response(response, status)
86
+ end
78
87
 
79
- handle_response(response, status)
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
80
93
  end
94
+ end
81
95
  end
82
96
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BeyondApi
2
- VERSION = "0.16.1.pre".freeze
4
+ VERSION = "0.19.0.pre"
3
5
  end
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,9 +27,9 @@ module BeyondApi
25
27
  end
26
28
 
27
29
  class Configuration
28
- attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links,
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
- :log_headers, :log_bodies, :log_level
32
+ :log_headers, :log_bodies, :log_level, :all_pagination_size
31
33
 
32
34
  def initialize
33
35
  @client_id = nil
@@ -42,6 +44,8 @@ module BeyondApi
42
44
  @log_level = :info
43
45
  @log_headers = false
44
46
  @log_bodies = false
47
+
48
+ @all_pagination_size = 200
45
49
  end
46
50
  end
47
51
  end
@@ -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("../../templates", __FILE__)
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"
@@ -12,6 +12,9 @@ BeyondApi.setup do |config|
12
12
  # Configure the request timeout in seconds. Default is 5 seconds.
13
13
  # config.timeout = 5.seconds
14
14
 
15
+ # Configure the pagination size when `paginated: false` is sent on `.all()` requests. Value must be between 1 and 1000.
16
+ # config.all_pagination_size = 200
17
+
15
18
  # ==> Log configuration
16
19
 
17
20
  # Configure the log level. Must be one of :debug, :info, :warn, :error,
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beyond_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1.pre
4
+ version: 0.19.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unai Abrisketa
8
8
  - Kathia Salazar
9
9
  - German San Emeterio
10
+ - Kenneth Gallego
10
11
  autorequire:
11
12
  bindir: exe
12
13
  cert_chain: []
13
- date: 2021-07-16 00:00:00.000000000 Z
14
+ date: 2021-12-01 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: bundler
@@ -26,6 +27,34 @@ dependencies:
26
27
  - - "~>"
27
28
  - !ruby/object:Gem::Version
28
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'
29
58
  - !ruby/object:Gem::Dependency
30
59
  name: rake
31
60
  requirement: !ruby/object:Gem::Requirement
@@ -55,7 +84,21 @@ dependencies:
55
84
  - !ruby/object:Gem::Version
56
85
  version: '3.0'
57
86
  - !ruby/object:Gem::Dependency
58
- name: yard
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
59
102
  requirement: !ruby/object:Gem::Requirement
60
103
  requirements:
61
104
  - - "~>"
@@ -69,55 +112,57 @@ dependencies:
69
112
  - !ruby/object:Gem::Version
70
113
  version: '0.9'
71
114
  - !ruby/object:Gem::Dependency
72
- name: faker
115
+ name: rubocop-rspec
73
116
  requirement: !ruby/object:Gem::Requirement
74
117
  requirements:
75
118
  - - "~>"
76
119
  - !ruby/object:Gem::Version
77
- version: '2.2'
120
+ version: '2.4'
78
121
  type: :development
79
122
  prerelease: false
80
123
  version_requirements: !ruby/object:Gem::Requirement
81
124
  requirements:
82
125
  - - "~>"
83
126
  - !ruby/object:Gem::Version
84
- version: '2.2'
127
+ version: '2.4'
85
128
  - !ruby/object:Gem::Dependency
86
- name: dotenv
129
+ name: yard
87
130
  requirement: !ruby/object:Gem::Requirement
88
131
  requirements:
89
132
  - - "~>"
90
133
  - !ruby/object:Gem::Version
91
- version: '2.7'
134
+ version: '0.9'
92
135
  type: :development
93
136
  prerelease: false
94
137
  version_requirements: !ruby/object:Gem::Requirement
95
138
  requirements:
96
139
  - - "~>"
97
140
  - !ruby/object:Gem::Version
98
- version: '2.7'
141
+ version: '0.9'
99
142
  - !ruby/object:Gem::Dependency
100
143
  name: faraday
101
144
  requirement: !ruby/object:Gem::Requirement
102
145
  requirements:
103
146
  - - "~>"
104
147
  - !ruby/object:Gem::Version
105
- version: '0.15'
148
+ version: 1.8.0
106
149
  type: :runtime
107
150
  prerelease: false
108
151
  version_requirements: !ruby/object:Gem::Requirement
109
152
  requirements:
110
153
  - - "~>"
111
154
  - !ruby/object:Gem::Version
112
- version: '0.15'
155
+ version: 1.8.0
113
156
  description:
114
157
  email:
115
158
  executables: []
116
159
  extensions: []
117
160
  extra_rdoc_files: []
118
161
  files:
162
+ - ".env.template"
119
163
  - ".gitignore"
120
164
  - ".rspec"
165
+ - ".rubocop.yml"
121
166
  - ".travis.yml"
122
167
  - ".yardopts"
123
168
  - CHANGELOG.md
@@ -198,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
243
  - !ruby/object:Gem::Version
199
244
  version: 1.3.1
200
245
  requirements: []
201
- rubygems_version: 3.0.3
246
+ rubygems_version: 3.2.16
202
247
  signing_key:
203
248
  specification_version: 4
204
249
  summary: Ruby client to access the Beyond API