Skip to content

Commit 4d197d1

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 4bcbe7d + 9c2d65e commit 4d197d1

File tree

5 files changed

+242
-5
lines changed

5 files changed

+242
-5
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
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+
117
### v0.14.0.pre
218

319
* deprecations

Gemfile.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
PATH
22
remote: .
33
specs:
4-
beyond_api (0.14.0.pre)
4+
beyond_api (0.16.0.pre)
55
faraday (~> 0.15)
66

77
GEM
88
remote: https://rubygems.org/
99
specs:
1010
coderay (1.1.3)
11-
concurrent-ruby (1.1.8)
11+
concurrent-ruby (1.1.9)
1212
diff-lcs (1.4.4)
1313
dotenv (2.7.6)
14-
faker (2.17.0)
14+
faker (2.18.0)
1515
i18n (>= 1.6, < 2)
1616
faraday (0.17.4)
1717
multipart-post (>= 1.2, < 3)
1818
i18n (1.8.10)
1919
concurrent-ruby (~> 1.0)
2020
method_source (1.0.0)
2121
multipart-post (2.1.1)
22-
pry (0.14.0)
22+
pry (0.14.1)
2323
coderay (~> 1.1)
2424
method_source (~> 1.0)
2525
rake (10.5.0)
Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/beyond_api/session.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module BeyondApi
1111
autoload :OrderSettings, "beyond_api/resources/order_settings"
1212
autoload :Orders, "beyond_api/resources/orders"
1313
autoload :PaymentMethodDefinitions, "beyond_api/resources/payment_method_definitions"
14+
autoload :PickupOptions, "beyond_api/resources/pickup_options"
1415
autoload :PaymentMethods, "beyond_api/resources/payment_methods"
1516
autoload :ProductAttributeDefinitions, "beyond_api/resources/product_attribute_definitions"
1617
autoload :ProductsView, "beyond_api/resources/products_view"
@@ -74,6 +75,10 @@ def payment_methods
7475
BeyondApi::PaymentMethods.new(self)
7576
end
7677

78+
def pickup_options
79+
BeyondApi::PickupOptions.new(self)
80+
end
81+
7782
def product_attribute_definitions
7883
BeyondApi::ProductAttributeDefinitions.new(self)
7984
end

lib/beyond_api/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module BeyondApi
2-
VERSION = "0.14.0.pre".freeze
2+
VERSION = "0.16.0.pre".freeze
33
end

0 commit comments

Comments
 (0)