beyond_api 0.14.0.pre → 0.17.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a3232a181c9e98adb48dde14f44f3fbf5cbd148716a4aebfaedd8395f67f1c1
4
- data.tar.gz: 3165b0482c207a611d5b1c1cfe0631a730c7d23774f0551c34c6e29bfb571134
3
+ metadata.gz: 121cdb5fc26eaefb6eb20ccad546c70508ed15517e159227b973ab95333ec30f
4
+ data.tar.gz: 42bc3c28f1696e588c2ed9cd405e32ddee90b2d716299d9354773f70b18613dd
5
5
  SHA512:
6
- metadata.gz: ba4db6852f6ea76b6b27a5def080dd54b1e2a9767a050cbddfb463eb538deac413b22923f065a1b4da37f828866142acc7173a0242a30ebf80b5e530d0606acf
7
- data.tar.gz: 3f48e09d7f4a934218fefeff168c67a5aaa097dd502fb8080969748dc8ac612ec7f4444596e3b6f73cfc234b37741063103beace5cfa59375eb6b4a689b5e130
6
+ metadata.gz: fbd457331b5d3939a81590f983eb27e2c0ef754f8d4f5cb75c25299d4fd0db0f0c206766463f3918542ef74c3db652a7f5a2b61c677addb63071091c0ed8a397
7
+ data.tar.gz: 659cc4f40f38f5f36c4c0ab476720cb1a1fc7ef1a6d518b7f0d5f71d8ad3219983e8304c07c5ad8c28d20d0baa2d0225ffe0c6b8324f575f43b0f14fbc3bffb0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ### v0.17.0.pre
2
+
3
+ * enhancements
4
+ * Add customizable pagination size when sending `paginated: false` parameter to `#all` requests.
5
+
6
+ ### v0.16.1.pre
7
+
8
+ * bug-fixes
9
+ * Fix method to retrieve resources without pagination
10
+
11
+ ### v0.16.0.pre
12
+
13
+ * features
14
+ * Add pickup options methods
15
+ * `PickupOptions#delete`
16
+ * `PickupOptions#find`
17
+ * `PickupOptions#sort`
18
+ * `PickupOptions#update`
19
+
20
+ ### v0.15.0.pre
21
+
22
+ * features
23
+ * Add pickup options methods
24
+ * `PickupOptions#all`
25
+ * `PickupOptions#create`
26
+
1
27
  ### v0.14.0.pre
2
28
 
3
29
  * deprecations
@@ -5,7 +31,7 @@
5
31
 
6
32
  * features
7
33
  * Add `Products#assign_variation_attribute_as_differentiator`
8
-
34
+
9
35
  ### v0.13.0.pre
10
36
 
11
37
  * features
data/Gemfile.lock CHANGED
@@ -1,17 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- beyond_api (0.14.0.pre)
4
+ beyond_api (0.17.0.pre)
5
5
  faraday (~> 0.15)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  coderay (1.1.3)
11
- concurrent-ruby (1.1.8)
11
+ concurrent-ruby (1.1.9)
12
12
  diff-lcs (1.4.4)
13
13
  dotenv (2.7.6)
14
- faker (2.17.0)
14
+ faker (2.18.0)
15
15
  i18n (>= 1.6, < 2)
16
16
  faraday (0.17.4)
17
17
  multipart-post (>= 1.2, < 3)
@@ -19,7 +19,7 @@ GEM
19
19
  concurrent-ruby (~> 1.0)
20
20
  method_source (1.0.0)
21
21
  multipart-post (2.1.1)
22
- pry (0.14.0)
22
+ pry (0.14.1)
23
23
  coderay (~> 1.1)
24
24
  method_source (~> 1.0)
25
25
  rake (10.5.0)
data/beyond_api.gemspec CHANGED
@@ -6,7 +6,7 @@ require "beyond_api/version"
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "beyond_api"
8
8
  spec.version = BeyondApi::VERSION
9
- spec.authors = ["Unai Abrisketa", "Kathia Salazar", "German San Emeterio"]
9
+ spec.authors = ["Unai Abrisketa", "Kathia Salazar", "German San Emeterio", "Kenneth Gallego"]
10
10
 
11
11
  spec.summary = "Ruby client to access the Beyond API"
12
12
  spec.homepage = "https://github.com/ePages-de/beyond_api-ruby_client"
data/lib/beyond_api.rb CHANGED
@@ -27,7 +27,7 @@ module BeyondApi
27
27
  class Configuration
28
28
  attr_accessor :client_id, :client_secret, :open_timeout, :timeout, :remove_response_links,
29
29
  :remove_response_key_underscores, :object_struct_responses, :raise_error_requests,
30
- :log_headers, :log_bodies, :log_level
30
+ :log_headers, :log_bodies, :log_level, :all_pagination_size
31
31
 
32
32
  def initialize
33
33
  @client_id = nil
@@ -42,6 +42,8 @@ module BeyondApi
42
42
  @log_level = :info
43
43
  @log_headers = false
44
44
  @log_bodies = false
45
+
46
+ @all_pagination_size = 200
45
47
  end
46
48
  end
47
49
  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
@@ -11,6 +11,7 @@ module BeyondApi
11
11
  autoload :OrderSettings, "beyond_api/resources/order_settings"
12
12
  autoload :Orders, "beyond_api/resources/orders"
13
13
  autoload :PaymentMethodDefinitions, "beyond_api/resources/payment_method_definitions"
14
+ autoload :PickupOptions, "beyond_api/resources/pickup_options"
14
15
  autoload :PaymentMethods, "beyond_api/resources/payment_methods"
15
16
  autoload :ProductAttributeDefinitions, "beyond_api/resources/product_attribute_definitions"
16
17
  autoload :ProductsView, "beyond_api/resources/products_view"
@@ -74,6 +75,10 @@ module BeyondApi
74
75
  BeyondApi::PaymentMethods.new(self)
75
76
  end
76
77
 
78
+ def pickup_options
79
+ BeyondApi::PickupOptions.new(self)
80
+ end
81
+
77
82
  def product_attribute_definitions
78
83
  BeyondApi::ProductAttributeDefinitions.new(self)
79
84
  end
@@ -45,14 +45,18 @@ module BeyondApi
45
45
  end
46
46
 
47
47
  def handle_all_request(url, resource, params = {})
48
+ paginated_size = BeyondApi.configuration.all_pagination_size
49
+
48
50
  if params[:paginated] == false
49
- result = all_paginated(url, { page: 0, size: 1000 })
51
+ result = all_paginated(url, params.merge(page: 0, size: paginated_size))
50
52
 
51
53
  (1..result[:page][:total_pages] - 1).each do |page|
52
- result[:embedded][resource].concat(all_paginated(url, { page: page, size: 1000 })[:embedded][resource])
54
+ result[:embedded][resource].concat(all_paginated(url, params.merge(page: page, size: paginated_size))[:embedded][resource])
53
55
  end
54
56
 
55
- result.is_a?(Hash) ? result.delete(:page) : result.delete_field(:page)
57
+ result[:page][:size] = result[:page][:total_elements]
58
+ result[:page][:total_pages] = 1
59
+ result[:page][:number] = 0
56
60
 
57
61
  result
58
62
  else
@@ -1,3 +1,3 @@
1
1
  module BeyondApi
2
- VERSION = "0.14.0.pre".freeze
2
+ VERSION = "0.17.0.pre".freeze
3
3
  end
@@ -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.14.0.pre
4
+ version: 0.17.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unai Abrisketa
8
8
  - Kathia Salazar
9
9
  - German San Emeterio
10
- autorequire:
10
+ - Kenneth Gallego
11
+ autorequire:
11
12
  bindir: exe
12
13
  cert_chain: []
13
- date: 2021-04-06 00:00:00.000000000 Z
14
+ date: 2021-08-12 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: bundler
@@ -110,8 +111,8 @@ dependencies:
110
111
  - - "~>"
111
112
  - !ruby/object:Gem::Version
112
113
  version: '0.15'
113
- description:
114
- email:
114
+ description:
115
+ email:
115
116
  executables: []
116
117
  extensions: []
117
118
  extra_rdoc_files: []
@@ -148,6 +149,7 @@ files:
148
149
  - lib/beyond_api/resources/orders.rb
149
150
  - lib/beyond_api/resources/payment_method_definitions.rb
150
151
  - lib/beyond_api/resources/payment_methods.rb
152
+ - lib/beyond_api/resources/pickup_options.rb
151
153
  - lib/beyond_api/resources/product_attribute_definitions.rb
152
154
  - lib/beyond_api/resources/products.rb
153
155
  - lib/beyond_api/resources/products/attachments.rb
@@ -182,7 +184,7 @@ files:
182
184
  homepage: https://github.com/ePages-de/beyond_api-ruby_client
183
185
  licenses: []
184
186
  metadata: {}
185
- post_install_message:
187
+ post_install_message:
186
188
  rdoc_options: []
187
189
  require_paths:
188
190
  - lib
@@ -197,8 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
199
  - !ruby/object:Gem::Version
198
200
  version: 1.3.1
199
201
  requirements: []
200
- rubygems_version: 3.0.3
201
- signing_key:
202
+ rubygems_version: 3.1.2
203
+ signing_key:
202
204
  specification_version: 4
203
205
  summary: Ruby client to access the Beyond API
204
206
  test_files: []