beyond_api 0.24.2.pre → 0.24.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d639c8a6307238a7dbc87d0d3a66b0e69c693db6d124cea7f7d89cfa5cc7488
4
- data.tar.gz: eb19fa1766b92049d2900829a730ccc0fdd78dd18465f8b5ae9d28df384e799b
3
+ metadata.gz: a8afb7efc6603d13612c778fc5434ffb10d0681219e19fe492e6f97edf72ca16
4
+ data.tar.gz: c8b32ac06053d8df1a5cf5966b98354eb4693636fe5390183dd1ee7a2f903eab
5
5
  SHA512:
6
- metadata.gz: 7ac1cc1a3e0b046b5add6a53001a2c602741ca62d3acfee1d6db1a59469af38907693918f821688a5d4c31cde5e27048b56ddd9468ed91d14890d49454dffc7c
7
- data.tar.gz: 5c7468464f88a6513832236edf49939f534d9482edf27668a55b1ef659c5aec03795c40d1775acf3630f37958f17ce356c856e53bbde2ce19e20514389e1347e
6
+ metadata.gz: ac544f672b62235e98090b1554d252345763122eb742e085b330ccec4654dceaa4aae58d5c1cd941a25e2cf4a5d15faab9ea67328f5b89be737133f0999c4f9c
7
+ data.tar.gz: 3037052be3fd2a48ed80b64ce7672e3108499791d5eded18969f88c21418f90402adc8620db9997fe0a8ce25090bdd764cacaff5a643750a14cc9f40e5749054
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- beyond_api (0.24.2.pre)
4
+ beyond_api (0.24.4.pre)
5
5
  faraday (~> 1.9.0)
6
6
 
7
7
  GEM
@@ -9,15 +9,16 @@ module BeyondApi
9
9
 
10
10
  def self.default
11
11
  Faraday.new(ssl: { verify: true }) do |faraday|
12
+ faraday.adapter(:net_http)
12
13
  faraday.options[:open_timeout] = BeyondApi.configuration.open_timeout.to_i
13
14
  faraday.options[:timeout] = BeyondApi.configuration.timeout.to_i
14
- faraday.response :logger, LOGGER, { headers: BeyondApi.configuration.log_headers,
15
- bodies: BeyondApi.configuration.log_bodies }
16
15
  faraday.headers["Accept"] = "application/json"
17
16
  faraday.headers["Content-Type"] = "application/json"
18
17
  faraday.request(:multipart)
19
18
  faraday.request(:url_encoded)
20
- faraday.adapter(:net_http)
19
+ faraday.request(:retry, BeyondApi.configuration.retry_options)
20
+ faraday.response :logger, LOGGER, { headers: BeyondApi.configuration.log_headers,
21
+ bodies: BeyondApi.configuration.log_bodies }
21
22
  end
22
23
  end
23
24
 
@@ -5,6 +5,8 @@ module BeyondApi
5
5
  attr_reader :error_id, :details, :trace_id, :full_message, :status_code, :error, :error_description
6
6
 
7
7
  def initialize(data, status_code = nil)
8
+ data ||= {}
9
+
8
10
  @error_id = data["errorId"]
9
11
  @details = data["details"]
10
12
  @trace_id = data["traceId"]
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ class CustomerGroups < Base
7
+ include BeyondApi::Utils
8
+ #
9
+ # A +GET+ request is used to list all customer groups of a shop in a paged way. Each item in the response represents a summary of the customer group data.
10
+ #
11
+ # $ curl 'https://api-shop.beyondshop.cloud/api/customer-groups' -i -X POST \
12
+ # -H 'Authorization: Bearer <Access token>'
13
+ #
14
+ # @beyond_api.scopes +cugr:r+
15
+ #
16
+ # @return [OpenStruct]
17
+ #
18
+ # @example
19
+ # @customer_groups = session.customer_groups.all
20
+ #
21
+ def all(params = {})
22
+ response, status = BeyondApi::Request.get(@session, "/customer-groups", params)
23
+
24
+ handle_response(response, status)
25
+ end
26
+
27
+ #
28
+ # A +POST+ request is used to add a customer to a provided list of groups.
29
+ #
30
+ # $ curl 'https://api-shop.beyondshop.cloud/api/customers/fb5f14ac-f274-4673-ad40-6712dfeea1ba/customer-groups' -i -X POST \
31
+ # -H 'Content-Type: application/json' \
32
+ # -H 'Authorization: Bearer <Access token>'
33
+ # -d '["5d94fa06-f58c-4379-9714-5dc57877c186"]'
34
+ #
35
+ # @beyond_api.scopes +cugr:r+
36
+ #
37
+ # @return [OpenStruct]
38
+ #
39
+ # @example
40
+ # @customer_groups = session.add_customer("fb5f14ac-f274-4673-ad40-6712dfeea1ba", ["5d94fa06-f58c-4379-9714-5dc57877c186"])
41
+ #
42
+ def add_customer(customer_id, customer_group_ids)
43
+ response, status = BeyondApi::Request.post(@session,
44
+ "/customers/#{customer_id}/customer-groups",
45
+ customer_group_ids)
46
+
47
+ handle_response(response, status)
48
+ end
49
+ end
50
+ end
@@ -7,6 +7,7 @@ module BeyondApi
7
7
  autoload :Categories, "beyond_api/resources/categories"
8
8
  autoload :CheckoutSettings, "beyond_api/resources/checkout_settings"
9
9
  autoload :Customers, "beyond_api/resources/customers"
10
+ autoload :CustomerGroups, "beyond_api/resources/customer_groups"
10
11
  autoload :NewsletterTarget, "beyond_api/resources/newsletter_target"
11
12
  autoload :OrderSettings, "beyond_api/resources/order_settings"
12
13
  autoload :Orders, "beyond_api/resources/orders"
@@ -57,6 +58,10 @@ module BeyondApi
57
58
  BeyondApi::CheckoutSettings.new(self)
58
59
  end
59
60
 
61
+ def customer_groups
62
+ BeyondApi::CustomerGroups.new(self)
63
+ end
64
+
60
65
  def customers
61
66
  BeyondApi::Customers.new(self)
62
67
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "ostruct"
4
+
3
5
  module BeyondApi
4
6
  module Utils
5
7
  extend self
@@ -22,7 +24,11 @@ module BeyondApi
22
24
  result = all_paginated(url, params.merge(page: 0, size: paginated_size))
23
25
 
24
26
  (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])
27
+ result[:embedded][resource].concat(
28
+ all_paginated(url,
29
+ params.merge(page: page,
30
+ size: paginated_size))[:embedded][resource]
31
+ )
26
32
  end
27
33
 
28
34
  result[:page][:size] = result[:page][:total_elements]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BeyondApi
4
- VERSION = "0.24.2.pre"
4
+ VERSION = "0.24.4.pre"
5
5
  end
data/lib/beyond_api.rb CHANGED
@@ -29,7 +29,7 @@ module BeyondApi
29
29
  class Configuration
30
30
  attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links,
31
31
  :remove_response_key_underscores, :object_struct_responses, :raise_error_requests,
32
- :log_headers, :log_bodies, :log_level, :all_pagination_size
32
+ :log_headers, :log_bodies, :log_level, :all_pagination_size, :retry_options
33
33
 
34
34
  def initialize
35
35
  @client_id = nil
@@ -46,6 +46,15 @@ module BeyondApi
46
46
  @log_bodies = false
47
47
 
48
48
  @all_pagination_size = 200
49
+
50
+ @retry_options = {
51
+ max: 5,
52
+ interval: 0.05,
53
+ interval_randomness: 0.5,
54
+ backoff_factor: 2,
55
+ retry_statuses: [409],
56
+ exceptions: [Faraday::TimeoutError, Faraday::ConnectionFailed]
57
+ }
49
58
  end
50
59
  end
51
60
  end
@@ -50,4 +50,18 @@ BeyondApi.setup do |config|
50
50
  # BeyondApi::Error object with detailed information of the error.
51
51
  # Default is false.
52
52
  # config.raise_error_requests = false
53
+
54
+ # ==> Retry configuration
55
+ # Configure the retry options for requests. Default is:
56
+ # config.retry_options = {
57
+ # max: 5,
58
+ # interval: 0.05,
59
+ # interval_randomness: 0.5,
60
+ # backoff_factor: 2,
61
+ # retry_statuses: [409],
62
+ # exceptions: [Faraday::TimeoutError, Faraday::ConnectionFailed]
63
+ # }
64
+ # Or you can set single retry options like this:
65
+ # config.retry_options[:max] = 5
66
+ # config.retry_options[:interval] = 1
53
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beyond_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.2.pre
4
+ version: 0.24.4.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unai Abrisketa
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2024-03-06 00:00:00.000000000 Z
14
+ date: 2025-10-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -187,6 +187,7 @@ files:
187
187
  - lib/beyond_api/resources/categories.rb
188
188
  - lib/beyond_api/resources/categories_view.rb
189
189
  - lib/beyond_api/resources/checkout_settings.rb
190
+ - lib/beyond_api/resources/customer_groups.rb
190
191
  - lib/beyond_api/resources/customers.rb
191
192
  - lib/beyond_api/resources/newsletter_target.rb
192
193
  - lib/beyond_api/resources/order_settings.rb