beyond_api 0.12.0.pre → 0.16.0.pre

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ea6e08915ae433df1874cff426c0da22fe48f0eedb0d4b9df6e01d31c9598f8
4
- data.tar.gz: 46f8d1cd9d55aea1a8437f54a11c8edf2b99fc4bf97525f77cfbbc7af9d3f43a
3
+ metadata.gz: a6c559696ebb3e320f0eba53263a1a2e4e1f6122abbee3abb0f9dcdcae0ed51c
4
+ data.tar.gz: aed55ba3c13a04013d7aa4e7c4fcdea9252f1c93623b982eac53fa8557b098d8
5
5
  SHA512:
6
- metadata.gz: 7b348e4278d9c3006220f21f344804e115a2ae2b17728589f4858eb56caf95dab787815d980b8cbdd947125f0d0ab31eaec12c256d66be9e2bc5197a99c349e9
7
- data.tar.gz: b51dba9d4c785d2cbc8c8a861462e71a150012e95b81f1c77996594dd633ba3aeb704710f9134341301fd08e7af25d27d1d4673f80a4151feb6fa1f938bc46e9
6
+ metadata.gz: 7791a721f9b5e8a27e574d93274249e0a7240f2bb2400de235d8d3ab89a07ac133fe15aad399b9af9b305a28e36091f61d3d1fff493bb02e2b30b720955d0947
7
+ data.tar.gz: 7363458296810b56dbcf80e220a2aad5c04a27c66b1f51e4485a9667ef671368aab1e8ed354b7d8692a4248dfc7ec41fd8bb2c66dc43f2015d5492a14cb8b255
data/CHANGELOG.md CHANGED
@@ -1,3 +1,43 @@
1
+ ### v0.16.0.pre
2
+
3
+ * features
4
+ * Add pickup options methods
5
+ * `PickupOptions#delete`
6
+ * `PickupOptions#find`
7
+ * `PickupOptions#sort`
8
+ * `PickupOptions#update`
9
+
10
+ ### v0.15.0.pre
11
+
12
+ * features
13
+ * Add pickup options methods
14
+ * `PickupOptions#all`
15
+ * `PickupOptions#create`
16
+
17
+ ### v0.14.0.pre
18
+
19
+ * deprecations
20
+ * Remove `Products#assign_variation_images_differentiator`
21
+
22
+ * features
23
+ * Add `Products#assign_variation_attribute_as_differentiator`
24
+
25
+ ### v0.13.0.pre
26
+
27
+ * features
28
+ * Add payment method definitions methods
29
+ * `PaymentMethodDefinitions#all`
30
+ * `PaymentMethodDefinitions#create`
31
+ * `PaymentMethodDefinitions#delete`
32
+ * `PaymentMethodDefinitions#find`
33
+ * `PaymentMethodDefinitions#update`
34
+ * Add possibility to log request `headers` and `bodies`
35
+
36
+ ### v0.12.1.pre
37
+
38
+ * bug-fixes
39
+ * Fix camelize function for hashes containing arrays
40
+
1
41
  ### v0.12.0.pre
2
42
 
3
43
  * features
@@ -9,7 +49,7 @@
9
49
  * `Locations#update`
10
50
 
11
51
  * enhancements
12
- * Use `autoload` instead of `require`
52
+ * Use `autoload` instead of `require`
13
53
 
14
54
  ### v0.11.1.pre
15
55
 
data/Gemfile.lock CHANGED
@@ -1,42 +1,42 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- beyond_api (0.12.0.pre)
4
+ beyond_api (0.16.0.pre)
5
5
  faraday (~> 0.15)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- coderay (1.1.2)
11
- concurrent-ruby (1.1.5)
12
- diff-lcs (1.3)
13
- dotenv (2.7.5)
14
- faker (2.4.0)
15
- i18n (~> 1.6.0)
16
- faraday (0.17.3)
10
+ coderay (1.1.3)
11
+ concurrent-ruby (1.1.9)
12
+ diff-lcs (1.4.4)
13
+ dotenv (2.7.6)
14
+ faker (2.18.0)
15
+ i18n (>= 1.6, < 2)
16
+ faraday (0.17.4)
17
17
  multipart-post (>= 1.2, < 3)
18
- i18n (1.6.0)
18
+ i18n (1.8.10)
19
19
  concurrent-ruby (~> 1.0)
20
- method_source (0.9.2)
20
+ method_source (1.0.0)
21
21
  multipart-post (2.1.1)
22
- pry (0.12.2)
23
- coderay (~> 1.1.0)
24
- method_source (~> 0.9.0)
22
+ pry (0.14.1)
23
+ coderay (~> 1.1)
24
+ method_source (~> 1.0)
25
25
  rake (10.5.0)
26
- rspec (3.8.0)
27
- rspec-core (~> 3.8.0)
28
- rspec-expectations (~> 3.8.0)
29
- rspec-mocks (~> 3.8.0)
30
- rspec-core (3.8.2)
31
- rspec-support (~> 3.8.0)
32
- rspec-expectations (3.8.4)
26
+ rspec (3.10.0)
27
+ rspec-core (~> 3.10.0)
28
+ rspec-expectations (~> 3.10.0)
29
+ rspec-mocks (~> 3.10.0)
30
+ rspec-core (3.10.1)
31
+ rspec-support (~> 3.10.0)
32
+ rspec-expectations (3.10.1)
33
33
  diff-lcs (>= 1.2.0, < 2.0)
34
- rspec-support (~> 3.8.0)
35
- rspec-mocks (3.8.1)
34
+ rspec-support (~> 3.10.0)
35
+ rspec-mocks (3.10.2)
36
36
  diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.8.0)
38
- rspec-support (3.8.2)
39
- yard (0.9.20)
37
+ rspec-support (~> 3.10.0)
38
+ rspec-support (3.10.2)
39
+ yard (0.9.26)
40
40
 
41
41
  PLATFORMS
42
42
  ruby
data/lib/beyond_api.rb CHANGED
@@ -1,23 +1,18 @@
1
1
  require "beyond_api/version"
2
2
 
3
- require "beyond_api/connection"
4
- require "beyond_api/request"
5
- require "beyond_api/session"
6
- require "beyond_api/error"
3
+ require "logger"
7
4
 
8
5
  require "beyond_api/ext"
9
6
  require "beyond_api/utils"
10
7
 
11
- require "logger"
12
-
13
8
  module BeyondApi
14
- def self.logger
15
- @@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
16
- end
9
+ autoload :Connection, "beyond_api/connection"
10
+ autoload :Error, "beyond_api/error"
11
+ autoload :Logger, "beyond_api/logger"
12
+ autoload :Request, "beyond_api/request"
13
+ autoload :Session, "beyond_api/session"
17
14
 
18
- def self.logger=(logger)
19
- @@logger = logger
20
- end
15
+ extend BeyondApi::Logger
21
16
 
22
17
  class << self
23
18
  attr_accessor :configuration
@@ -31,7 +26,8 @@ module BeyondApi
31
26
 
32
27
  class Configuration
33
28
  attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links,
34
- :remove_response_key_underscores, :object_struct_responses, :raise_error_requests
29
+ :remove_response_key_underscores, :object_struct_responses, :raise_error_requests,
30
+ :log_headers, :log_bodies, :log_level
35
31
 
36
32
  def initialize
37
33
  @client_id = nil
@@ -42,6 +38,10 @@ module BeyondApi
42
38
  @remove_response_key_underscores = false
43
39
  @object_struct_responses = false
44
40
  @raise_error_requests = false
41
+
42
+ @log_level = :info
43
+ @log_headers = false
44
+ @log_bodies = false
45
45
  end
46
46
  end
47
47
  end
@@ -4,10 +4,15 @@ require 'faraday'
4
4
 
5
5
  module BeyondApi
6
6
  class Connection
7
+ LOGGER = ::BeyondApi.logger
8
+ LOGGER.level = Kernel.const_get("::Logger::#{BeyondApi.configuration.log_level.to_s.upcase}")
9
+
7
10
  def self.default
8
11
  Faraday.new(ssl: { verify: true }) do |faraday|
9
12
  faraday.options[:open_timeout] = BeyondApi.configuration.open_timeout.to_i
10
13
  faraday.options[:timeout] = BeyondApi.configuration.timeout.to_i
14
+ faraday.response :logger, LOGGER, { headers: BeyondApi.configuration.log_headers,
15
+ bodies: BeyondApi.configuration.log_bodies }
11
16
  faraday.headers['Accept'] = 'application/json'
12
17
  faraday.headers['Content-Type'] = 'application/json'
13
18
  faraday.request(:multipart)
@@ -20,6 +25,8 @@ module BeyondApi
20
25
  Faraday.new(ssl: { verify: true }) do |faraday|
21
26
  faraday.options[:open_timeout] = BeyondApi.configuration.open_timeout.to_i
22
27
  faraday.options[:timeout] = BeyondApi.configuration.timeout.to_i
28
+ faraday.response :logger, LOGGER, { headers: BeyondApi.configuration.log_headers,
29
+ bodies: BeyondApi.configuration.log_bodies }
23
30
  faraday.headers['Accept'] = 'application/json'
24
31
  faraday.adapter(:net_http)
25
32
  faraday.basic_auth(BeyondApi.configuration.client_id,
@@ -4,7 +4,14 @@ class Hash
4
4
  def deep_transform_keys(&block)
5
5
  result = {}
6
6
  each do |key, value|
7
- result[yield(key)] = value.is_a?(Hash) ? value.deep_transform_keys(&block) : value
7
+ result[yield(key)] = case value
8
+ when Hash
9
+ value.deep_transform_keys(&block)
10
+ when Array
11
+ value.camelize_keys
12
+ else
13
+ value
14
+ end
8
15
  end
9
16
  result
10
17
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BeyondApi
4
+ module Logger
5
+ def logger
6
+ @@logger ||= defined?(Rails) ? ::Rails.logger : ::Logger.new($stdout)
7
+ end
8
+
9
+ def logger=(logger)
10
+ @@logger = logger
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ class PaymentMethodDefinitions < Base
7
+ include BeyondApi::Utils
8
+
9
+ #
10
+ # A +POST+ request is used to create a payment method definition on system level.
11
+ #
12
+ # $ curl 'https://system.beyondshop.cloud/api/payment-method-definitions' -i -X POST \
13
+ # -H 'Content-Type: application/json' \
14
+ # -H 'Accept: application/hal+json' \
15
+ # -H 'Authorization: Bearer <Access token>' \
16
+ # -d '{
17
+ # "name": "credit-card",
18
+ # "referralUriTemplate": "https://example.com/merchants",
19
+ # "statusUriTemplate": "https://example.com/merchants/{shopId}/status",
20
+ # "disconnectUriTemplate": "https://example.com/merchants/{shopId}/disconnect",
21
+ # "createPaymentUriTemplate": "https://example.com/payments",
22
+ # "capturePaymentUriTemplate": "https://example.com/payments/{paymentId}/capture",
23
+ # "refundPaymentUriTemplate": "https://example.com/payments/{paymentId}/refund",
24
+ # "sandbox": "true",
25
+ # "workflow": "PAYMENT_ON_BUY",
26
+ # "captureWorkflow": "CAPTURE_ON_ORDER",
27
+ # "refund": "NO_REFUND",
28
+ # "logos": [{
29
+ # "setName" : "official",
30
+ # "variant" : "STOREFRONT",
31
+ # "uri" : "https://example.com/static/storefront.png"
32
+ # }],
33
+ # "officialName": {"de-DE" : "Ermögliche deinen Kunden, mit Kreditkarte zu bezahlen.",
34
+ # "en-US" : "Allow your customers to pay by credit card."
35
+ # },
36
+ # "officialDescription": {
37
+ # "de-DE" : "Ermögliche deinen Kunden, mit Kreditkarte zu bezahlen.",
38
+ # "en-US" : "Allow your customers to pay by credit card."
39
+ # },
40
+ # "defaultName": {
41
+ # "de-DE" : "Kreditkarte",
42
+ # "en-US" : "Credit card"
43
+ # },
44
+ # "defaultDescription": {"de-DE" : "Bezahlen Sie mit Kreditkarte.","en-US" : "Pay by credit card."}}'
45
+ #
46
+ # @beyond_api.scopes +paym:m+
47
+ #
48
+ # @param body [Hash] the request body
49
+ #
50
+ # @return [OpenStruct]
51
+ #
52
+ # @example
53
+ # @payment_method_definitions = session.payment_method_definitions.create(body)
54
+ #
55
+ def create(body)
56
+ response, status = BeyondApi::Request.post(@session, "/payment-method-definitions", body)
57
+
58
+ handle_response(response, status)
59
+ end
60
+
61
+ #
62
+ # A +GET+ request is used to list all payment method definitions on system level.
63
+ #
64
+ # $ curl 'https://api-shop.beyondshop.cloud/api/payment-method-definitions' -i -X GET \
65
+ # -H 'Accept: application/hal+json' \
66
+ # -H 'Authorization: Bearer <Access token>'
67
+ #
68
+ # @beyond_api.scopes +paym:m+
69
+ #
70
+ # @option params [Boolean] :paginated
71
+ # @option params [Integer] :size the page size
72
+ # @option params [Integer] :page the page number
73
+ #
74
+ # @return [OpenStruct]
75
+ #
76
+ # @example
77
+ # @payment_method_definitions = session.payment_method_definitions.all(size: 100, page: 0)
78
+ #
79
+ def all(params = {})
80
+ handle_all_request("/payment-method-definitions", :payment_method_definitions, params)
81
+ end
82
+
83
+ #
84
+ # A +GET+ request is used to deactivate a payment method.
85
+ #
86
+ # $ curl 'https://api-shop.beyondshop.cloud/api/payment-method-definitions/credit-card' -i -X GET \
87
+ # -H 'Accept: application/hal+json' \
88
+ # -H 'Authorization: Bearer <Access token>'
89
+ #
90
+ # @beyond_api.scopes +pymt:u+
91
+ #
92
+ # @param payment_method_definition_id [String] the payment method definition UUID
93
+ #
94
+ # @return [OpenStruct]
95
+ #
96
+ # @example
97
+ # @payment_method_definition = session.payment_methods.find("credit-card")
98
+ #
99
+ def find(payment_method_definition_id)
100
+ response, status = BeyondApi::Request.get(@session, "/payment-method-definitions/#{payment_method_definition_id}")
101
+
102
+ handle_response(response, status)
103
+ end
104
+
105
+ #
106
+ # A +PUT+ request is used to update a payment method definition on system level.
107
+ #
108
+ # $ curl 'https://system.beyondshop.cloud/api/payment-method-definitions/credit-card' -i -X PUT \
109
+ # -H 'Content-Type: application/json' \
110
+ # -H 'Accept: application/hal+json' \
111
+ # -H 'Authorization: Bearer <Access token>' \
112
+ # -d '{
113
+ # "name": "credit-card-updated",
114
+ # "referralUriTemplate": "https://example.com/merchants",
115
+ # "statusUriTemplate": "https://example.com/merchants/{shopId}/status",
116
+ # "disconnectUriTemplate": "https://example.com/merchants/{shopId}/disconnect",
117
+ # "createPaymentUriTemplate": "https://example.com/payments",
118
+ # "capturePaymentUriTemplate": "https://example.com/payments/{paymentId}/capture",
119
+ # "refundPaymentUriTemplate": "https://example.com/payments/{paymentId}/refund",
120
+ # "workflow": "PAYMENT_ON_SELECTION",
121
+ # "captureWorkflow": "CAPTURE_ON_DEMAND",
122
+ # "refund": "NO_REFUND",
123
+ # "logos": [{
124
+ # "setName" : "official",
125
+ # "variant" : "STOREFRONT",
126
+ # "uri" : "https://example.com/static/storefront.png"
127
+ # }],
128
+ # "officialName": {"de-DE" : "Ermögliche deinen Kunden, mit Kreditkarte zu bezahlen.",
129
+ # "en-US" : "Allow your customers to pay by credit card."
130
+ # },
131
+ # "officialDescription": {
132
+ # "de-DE" : "Ermögliche deinen Kunden, mit Kreditkarte zu bezahlen.",
133
+ # "en-US" : "Allow your customers to pay by credit card."
134
+ # },
135
+ # "defaultName": {
136
+ # "de-DE" : "Kreditkarte",
137
+ # "en-US" : "Credit card"
138
+ # },
139
+ # "defaultDescription": {"de-DE" : "Bezahlen Sie mit Kreditkarte.","en-US" : "Pay by credit card."}}'
140
+ #
141
+ # @beyond_api.scopes +paym:m+
142
+ #
143
+ # @param payment_method_definition_id [String] the payment method definition UUID
144
+ # @param body [Hash] the request body
145
+ #
146
+ # @return [OpenStruct]
147
+ #
148
+ # @example
149
+ # @payment_method_definition = session.payment_method_definitions.update("credit_card", body)
150
+ #
151
+ def update(payment_method_definition_id, body)
152
+ response, status = BeyondApi::Request.put(@session, "/payment-method-definitions/#{payment_method_definition_id}")
153
+
154
+ handle_response(response, status)
155
+ end
156
+
157
+ #
158
+ # A +DELETE+ request is used to delete a payment method definition on system level.
159
+ #
160
+ # $ curl 'https://system.beyondshop.cloud/api/payment-method-definitions/credit-card' -i -X DELETE \
161
+ # -H 'Accept: application/hal+json' \
162
+ # -H 'Authorization: Bearer <Access token>'
163
+ #
164
+ # @return true
165
+ #
166
+ # @example
167
+ # session.payment_method_definitions.delete("credit-card")
168
+ #
169
+ def delete(payment_method_definition_id)
170
+ response, status = BeyondApi::Request.delete(@session, "/payment-method-definitions/#{payment_method_definition_id}", body)
171
+
172
+ handle_response(response, status, respond_with_true: true)
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ class PickupOptions < Base
7
+ include BeyondApi::Utils
8
+
9
+ #
10
+ # A +GET+ request is used to list all pickup options of the shop in a paged way.
11
+ #
12
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options' -i -X GET \
13
+ # -H 'Accept: application/hal+json' \
14
+ # -H 'Authorization: Bearer <Access token>'
15
+ #
16
+ # @option params [Boolean] :paginated
17
+ # @option params [Integer] :size the page size
18
+ # @option params [Integer] :page the page number
19
+ #
20
+ # @return [OpenStruct]
21
+ #
22
+ # @example
23
+ # @pickup_options = session.pickup_options.all(size: 100, page: 0)
24
+ #
25
+ def all(params = {})
26
+ handle_all_request("/pickup-options", :pickup_options, params)
27
+ end
28
+
29
+ #
30
+ # A +POST+ request is used to create a pickup option.
31
+ #
32
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options' -i -X POST \
33
+ # -H 'Content-Type: application/json' \
34
+ # -H 'Authorization: Bearer <Access token>' \
35
+ # -d '{
36
+ # "name" : "My little Cornershop - St.Ives",
37
+ # "description" : "We will send you an email when your items are ready for pickup. Please bring a copy of your order confirmation.",
38
+ # "taxClass" : "REGULAR",
39
+ # "freePickupValue" : {
40
+ # "currency" : "EUR",
41
+ # "amount" : 50
42
+ # },
43
+ # "fixedPrice" : {
44
+ # "taxModel" : "GROSS",
45
+ # "currency" : "EUR",
46
+ # "amount" : 1
47
+ # },
48
+ # "phoneNumberRequired" : true,
49
+ # "locationId" : "cb554eb6-2768-4491-afd2-6bcd0aec0937"
50
+ # }'
51
+ #
52
+ # @beyond_api.scopes +shpz:c+
53
+ #
54
+ # @param body [Hash] the request body
55
+ #
56
+ # @return [OpenStruct]
57
+ #
58
+ # @example
59
+ # body = {
60
+ # name: "My little Cornershop - St.Ives",
61
+ # description: "We will send you an email when your items are ready for pickup. Please bring a copy of your order confirmation.",
62
+ # tax_class: "REGULAR",
63
+ # free_pickup_value: {
64
+ # currency: "EUR",
65
+ # amount: 50
66
+ # },
67
+ # fixed_price: {
68
+ # tax_model: "GROSS",
69
+ # currency: "EUR",
70
+ # amount: 1
71
+ # },
72
+ # phone_number_required: true,
73
+ # location_id: "cb554eb6-2768-4491-afd2-6bcd0aec0937"
74
+ # }
75
+ #
76
+ # @pickup_option = session.pickup_options.create(body)
77
+ #
78
+ def create(body)
79
+ response, status = BeyondApi::Request.post(@session, "/pickup-options", body)
80
+
81
+ handle_response(response, status)
82
+ end
83
+
84
+ #
85
+ # A +DELETE+ request is used to delete a pickup option.
86
+ #
87
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options/d253a31b-3892-4196-ae16-c5d8d6b05791' -i -X DELETE
88
+ #
89
+ # @beyond_api.scopes +shpz:d+
90
+ #
91
+ # @param pickup_option_id [String] the pickup option UUID
92
+ #
93
+ # @return true
94
+ #
95
+ # @example
96
+ # session.pickup_options.delete("d253a31b-3892-4196-ae16-c5d8d6b05791")
97
+ #
98
+ def delete(pickup_option_id)
99
+ response, status = BeyondApi::Request.delete(@session, "/pickup-options/#{pickup_option_id}")
100
+
101
+ handle_response(response, status, respond_with_true: true)
102
+ end
103
+
104
+ #
105
+ # A +GET+ request is used to retrieve the details of a pickup option.
106
+ #
107
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options/76302c10-761f-43c1-9d18-52ad16bd52e8' -i -X GET \
108
+ # -H 'Content-Type: application/json' \
109
+ # -H 'Accept: application/hal+json' \
110
+ # -H 'Authorization: Bearer <Access token>'
111
+ #
112
+ # @beyond_api.scopes +shpz:r+
113
+ #
114
+ # @param pickup_option_id [String] the pickup option UUID
115
+ #
116
+ # @return [OpenStruct]
117
+ #
118
+ # @example
119
+ # @pickup_option = session.pickup_options.find("76302c10-761f-43c1-9d18-52ad16bd52e8")
120
+ #
121
+ def find(pickup_option_id)
122
+ response, status = BeyondApi::Request.get(@session, "/pickup-options/#{pickup_option_id}")
123
+
124
+ handle_response(response, status)
125
+ end
126
+
127
+ #
128
+ # A +PUT+ request is used to sort the pickup options. This is done by passing the self-links of the pickup options in the desired order. The request must contain URIs for all pickup options of the given page.
129
+ #
130
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options' -i -X PUT \
131
+ # -H 'Content-Type: text/uri-list' \
132
+ # -H 'Authorization: Bearer <Access token>' \
133
+ # -d 'https://api-shop.beyondshop.cloud/api/pickup-options/bff3673f-91c1-4e09-a8ab-562a3a553fac
134
+ # https://api-shop.beyondshop.cloud/api/pickup-options/7b4d36fc-ac0f-44a3-8655-f2bd05c2a42d
135
+ # https://api-shop.beyondshop.cloud/api/pickup-options/630b63ee-c7d8-4953-9b7c-c874fd795154'
136
+ #
137
+ # @beyond_api.scopes +shpz:u+
138
+ #
139
+ # @param pickup_option_ids [Array] the pickup option UUIDs
140
+ #
141
+ # @return [OpenStruct]
142
+ #
143
+ # @example
144
+ # pickup_option_ids = [
145
+ # "bff3673f-91c1-4e09-a8ab-562a3a553fac",
146
+ # "7b4d36fc-ac0f-44a3-8655-f2bd05c2a42d",
147
+ # "630b63ee-c7d8-4953-9b7c-c874fd795154"
148
+ # ]
149
+ #
150
+ # session.pickup_options.sort(pickup_option_ids)
151
+ #
152
+ def sort(pickup_option_ids)
153
+ body = pickup_option_ids.map { |id| "#{@session.api_url}/pickup-options/#{id}" }
154
+ response, status = BeyondApi::Request.put(@session, "/pickup-options", body)
155
+
156
+ handle_response(response, status, respond_with_true: true)
157
+ end
158
+
159
+ #
160
+ # A +PUT+ request is used to update a pickup option.
161
+ #
162
+ # $ curl 'https://api-shop.beyondshop.cloud/api/pickup-options/5765b837-db5b-49a9-a659-68d00376e42a' -i -X PUT \
163
+ # -H 'Content-Type: application/json' \
164
+ # -H 'Accept: application/hal+json' \
165
+ # -H 'Authorization: Bearer <Access token>' \
166
+ # -d '{
167
+ # "name" : "New name",
168
+ # "description" : "We will send you an email when your items are ready for pickup. Please bring a copy of your order confirmation.",
169
+ # "taxClass" : "REGULAR",
170
+ # "freePickupValue" : {
171
+ # "currency" : "EUR",
172
+ # "amount" : 50
173
+ # },
174
+ # "fixedPrice" : {
175
+ # "taxModel" : "GROSS",
176
+ # "currency" : "EUR",
177
+ # "amount" : 1
178
+ # },
179
+ # "phoneNumberRequired" : true,
180
+ # "locationId" : "c9179393-abcc-450a-8cf4-875b39647ab6"
181
+ # }'
182
+ #
183
+ # @beyond_api.scopes +shpz:u+
184
+ #
185
+ # @param pickup_option_id [String] the pickup option UUID
186
+ # @param body [Hash] the request body
187
+ #
188
+ # @return [OpenStruct]
189
+ #
190
+ # @example
191
+ # body = {
192
+ # name: "New name",
193
+ # description: "We will send you an email when your items are ready for pickup. Please bring a copy of your order confirmation.",
194
+ # tax_class: "REGULAR",
195
+ # free_pickup_value: {
196
+ # currency: "EUR",
197
+ # amount: 50
198
+ # },
199
+ # fixed_price: {
200
+ # tax_model: "GROSS",
201
+ # currency: "EUR",
202
+ # amount: 1
203
+ # },
204
+ # phone_number_required: true,
205
+ # location_id: "c9179393-abcc-450a-8cf4-875b39647ab6"
206
+ # }
207
+ #
208
+ # @pickup_option = session.pickup_options.update("5765b837-db5b-49a9-a659-68d00376e42a", body)
209
+ #
210
+ def update(pickup_option_id, body)
211
+ response, status = BeyondApi::Request.put(@session, "/pickup-options/#{pickup_option_id}", body)
212
+
213
+ handle_response(response, status)
214
+ end
215
+ end
216
+ end
@@ -253,28 +253,25 @@ module BeyondApi
253
253
  end
254
254
 
255
255
  #
256
- # A +PUT+ request is used to assign a variation images differentiator for a variation product. The differentiator can be one of the variation attributes defined by the merchant, e.g. name, size, or color.
256
+ # A +POST+ request is used to assign a variation attribute as the variation images differentiator for a variation product.
257
257
  #
258
258
  # @beyond_api.scopes +prod:u+
259
259
  #
260
- # $ curl 'https://api-shop.beyondshop.cloud/api/products/30839efc-47f7-4d55-aa13-aac7532982b6/variation-images-differentiator' -i -X PUT \
260
+ # $ curl 'https://api-shop.beyondshop.cloud/api/products/f205294b-17dc-4f75-8b5e-5df72abb96df/variation-attributes/491fedf4-37a9-4bcf-98b8-cff2f82879b7/make-differentiator' -i -X POST \
261
261
  # -H 'Content-Type: application/hal+json' \
262
262
  # -H 'Accept: application/hal+json' \
263
- # -H 'Authorization: Bearer <Access token>' \
264
- # -d '{
265
- # "differentiator" : "size"
266
- # }'
263
+ # -H 'Authorization: Bearer <Access token>'
267
264
  #
268
265
  # @param product_id [String] the product UUID
269
- # @param differentiator [String] the differentiator
266
+ # @param variation_attribute_id [String] the variation attribute UUID
270
267
  #
271
268
  # @return [true]
272
269
  #
273
270
  # @example
274
- # session.products.assign_variation_images_differentiator("30839efc-47f7-4d55-aa13-aac7532982b6", "size")
271
+ # session.products.assign_variation_images_differentiator("f205294b-17dc-4f75-8b5e-5df72abb96df", "491fedf4-37a9-4bcf-98b8-cff2f82879b7")
275
272
  #
276
- def assign_variation_images_differentiator(product_id, differentiator)
277
- response, status = BeyondApi::Request.put(@session, "/products/#{product_id}/variation-images-differentiator", differentiator: differentiator)
273
+ def assign_variation_attribute_as_differentiator(product_id, variation_attribute_id)
274
+ response, status = BeyondApi::Request.post(@session, "/products/#{product_id}/variation-attributes/#{variation_attribute_id}/make-differentiator")
278
275
 
279
276
  handle_response(response, status, respond_with_true: true)
280
277
  end
@@ -3,8 +3,8 @@
3
3
  require "beyond_api/utils"
4
4
 
5
5
  module BeyondApi
6
- autoload :Images, "beyond_api/resources/variations/images"
7
- autoload :Availability, "beyond_api/resources/variations/availability"
6
+ autoload :VariationImages, "beyond_api/resources/variations/images"
7
+ autoload :VariationAvailability, "beyond_api/resources/variations/availability"
8
8
 
9
9
  class Variations < Base
10
10
  include BeyondApi::VariationImages
@@ -10,6 +10,8 @@ module BeyondApi
10
10
  autoload :NewsletterTarget, "beyond_api/resources/newsletter_target"
11
11
  autoload :OrderSettings, "beyond_api/resources/order_settings"
12
12
  autoload :Orders, "beyond_api/resources/orders"
13
+ autoload :PaymentMethodDefinitions, "beyond_api/resources/payment_method_definitions"
14
+ autoload :PickupOptions, "beyond_api/resources/pickup_options"
13
15
  autoload :PaymentMethods, "beyond_api/resources/payment_methods"
14
16
  autoload :ProductAttributeDefinitions, "beyond_api/resources/product_attribute_definitions"
15
17
  autoload :ProductsView, "beyond_api/resources/products_view"
@@ -65,10 +67,18 @@ module BeyondApi
65
67
  BeyondApi::Orders.new(self)
66
68
  end
67
69
 
70
+ def payment_method_definitions
71
+ BeyondApi::PaymentMethodDefinitions.new(self)
72
+ end
73
+
68
74
  def payment_methods
69
75
  BeyondApi::PaymentMethods.new(self)
70
76
  end
71
77
 
78
+ def pickup_options
79
+ BeyondApi::PickupOptions.new(self)
80
+ end
81
+
72
82
  def product_attribute_definitions
73
83
  BeyondApi::ProductAttributeDefinitions.new(self)
74
84
  end
@@ -1,3 +1,3 @@
1
1
  module BeyondApi
2
- VERSION = "0.12.0.pre".freeze
2
+ VERSION = "0.16.0.pre".freeze
3
3
  end
@@ -12,6 +12,21 @@ 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
+ # ==> Log configuration
16
+
17
+ # Configure the log level. Must be one of :debug, :info, :warn, :error,
18
+ # :fatal or :unknown. Default is :info.
19
+ #
20
+ # config.log_level = :info
21
+
22
+ # Configure is response headers should be logged. Default is false.
23
+ #
24
+ # config.log_headers = false
25
+
26
+ # Configure is response bodies should be logged. Default is false.
27
+ #
28
+ # config.log_bodies = false
29
+
15
30
  # ==> Response configuration
16
31
  # Configure if :_links should be removed from response. Default is false and
17
32
  # :_links are gonna be part of the response.
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.12.0.pre
4
+ version: 0.16.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unai Abrisketa
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-08-18 00:00:00.000000000 Z
13
+ date: 2021-06-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -135,6 +135,7 @@ files:
135
135
  - lib/beyond_api/connection.rb
136
136
  - lib/beyond_api/error.rb
137
137
  - lib/beyond_api/ext.rb
138
+ - lib/beyond_api/logger.rb
138
139
  - lib/beyond_api/request.rb
139
140
  - lib/beyond_api/resources/base.rb
140
141
  - lib/beyond_api/resources/carts.rb
@@ -145,7 +146,9 @@ files:
145
146
  - lib/beyond_api/resources/newsletter_target.rb
146
147
  - lib/beyond_api/resources/order_settings.rb
147
148
  - lib/beyond_api/resources/orders.rb
149
+ - lib/beyond_api/resources/payment_method_definitions.rb
148
150
  - lib/beyond_api/resources/payment_methods.rb
151
+ - lib/beyond_api/resources/pickup_options.rb
149
152
  - lib/beyond_api/resources/product_attribute_definitions.rb
150
153
  - lib/beyond_api/resources/products.rb
151
154
  - lib/beyond_api/resources/products/attachments.rb
@@ -195,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
198
  - !ruby/object:Gem::Version
196
199
  version: 1.3.1
197
200
  requirements: []
198
- rubygems_version: 3.1.2
201
+ rubygems_version: 3.0.3
199
202
  signing_key:
200
203
  specification_version: 4
201
204
  summary: Ruby client to access the Beyond API