square.rb 18.1.0.20220316 → 20.1.0.20220616
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 +4 -4
- data/README.md +6 -0
- data/lib/square/api/base_api.rb +1 -1
- data/lib/square/api/bookings_api.rb +9 -0
- data/lib/square/api/catalog_api.rb +3 -3
- data/lib/square/api/checkout_api.rb +202 -0
- data/lib/square/api/customer_custom_attributes_api.rb +540 -0
- data/lib/square/api/gift_card_activities_api.rb +5 -6
- data/lib/square/api/gift_cards_api.rb +8 -7
- data/lib/square/api/locations_api.rb +3 -4
- data/lib/square/api/loyalty_api.rb +3 -2
- data/lib/square/api/orders_api.rb +2 -2
- data/lib/square/api/payouts_api.rb +173 -0
- data/lib/square/api/subscriptions_api.rb +0 -3
- data/lib/square/api/terminal_api.rb +155 -6
- data/lib/square/client.rb +19 -6
- data/lib/square/configuration.rb +17 -11
- data/lib/square/http/api_response.rb +7 -9
- data/lib/square/http/faraday_client.rb +19 -9
- data/lib/square/http/http_client.rb +31 -12
- data/lib/square/http/http_request.rb +6 -2
- data/lib/square.rb +2 -0
- metadata +52 -8
@@ -0,0 +1,173 @@
|
|
1
|
+
module Square
|
2
|
+
# PayoutsApi
|
3
|
+
class PayoutsApi < BaseApi
|
4
|
+
def initialize(config, http_call_back: nil)
|
5
|
+
super(config, http_call_back: http_call_back)
|
6
|
+
end
|
7
|
+
|
8
|
+
# Retrieves a list of all payouts for the default location.
|
9
|
+
# You can filter payouts by location ID, status, time range, and order them
|
10
|
+
# in ascending or descending order.
|
11
|
+
# To call this endpoint, set `PAYOUTS_READ` for the OAuth scope.
|
12
|
+
# @param [String] location_id Optional parameter: The ID of the location for
|
13
|
+
# which to list the payouts. By default, payouts are returned for the
|
14
|
+
# default (main) location associated with the seller.
|
15
|
+
# @param [PayoutStatus] status Optional parameter: If provided, only payouts
|
16
|
+
# with the given status are returned.
|
17
|
+
# @param [String] begin_time Optional parameter: The timestamp for the
|
18
|
+
# beginning of the payout creation time, in RFC 3339 format. Inclusive.
|
19
|
+
# Default: The current time minus one year.
|
20
|
+
# @param [String] end_time Optional parameter: The timestamp for the end of
|
21
|
+
# the payout creation time, in RFC 3339 format. Default: The current time.
|
22
|
+
# @param [SortOrder] sort_order Optional parameter: The order in which
|
23
|
+
# payouts are listed.
|
24
|
+
# @param [String] cursor Optional parameter: A pagination cursor returned by
|
25
|
+
# a previous call to this endpoint. Provide this cursor to retrieve the next
|
26
|
+
# set of results for the original query. For more information, see
|
27
|
+
# [Pagination](https://developer.squareup.com/docs/basics/api101/pagination)
|
28
|
+
# . If request parameters change between requests, subsequent results may
|
29
|
+
# contain duplicates or missing records.
|
30
|
+
# @param [Integer] limit Optional parameter: The maximum number of results
|
31
|
+
# to be returned in a single page. It is possible to receive fewer results
|
32
|
+
# than the specified limit on a given page. The default value of 100 is also
|
33
|
+
# the maximum allowed value. If the provided value is greater than 100, it
|
34
|
+
# is ignored and the default value is used instead. Default: `100`
|
35
|
+
# @return [ListPayoutsResponse Hash] response from the API call
|
36
|
+
def list_payouts(location_id: nil,
|
37
|
+
status: nil,
|
38
|
+
begin_time: nil,
|
39
|
+
end_time: nil,
|
40
|
+
sort_order: nil,
|
41
|
+
cursor: nil,
|
42
|
+
limit: nil)
|
43
|
+
# Prepare query url.
|
44
|
+
_query_builder = config.get_base_uri
|
45
|
+
_query_builder << '/v2/payouts'
|
46
|
+
_query_builder = APIHelper.append_url_with_query_parameters(
|
47
|
+
_query_builder,
|
48
|
+
'location_id' => location_id,
|
49
|
+
'status' => status,
|
50
|
+
'begin_time' => begin_time,
|
51
|
+
'end_time' => end_time,
|
52
|
+
'sort_order' => sort_order,
|
53
|
+
'cursor' => cursor,
|
54
|
+
'limit' => limit
|
55
|
+
)
|
56
|
+
_query_url = APIHelper.clean_url _query_builder
|
57
|
+
|
58
|
+
# Prepare headers.
|
59
|
+
_headers = {
|
60
|
+
'accept' => 'application/json'
|
61
|
+
}
|
62
|
+
|
63
|
+
# Prepare and execute HttpRequest.
|
64
|
+
_request = config.http_client.get(
|
65
|
+
_query_url,
|
66
|
+
headers: _headers
|
67
|
+
)
|
68
|
+
OAuth2.apply(config, _request)
|
69
|
+
_response = execute_request(_request)
|
70
|
+
|
71
|
+
# Return appropriate response type.
|
72
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
73
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
74
|
+
ApiResponse.new(
|
75
|
+
_response, data: decoded, errors: _errors
|
76
|
+
)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Retrieves details of a specific payout identified by a payout ID.
|
80
|
+
# To call this endpoint, set `PAYOUTS_READ` for the OAuth scope.
|
81
|
+
# @param [String] payout_id Required parameter: The ID of the payout to
|
82
|
+
# retrieve the information for.
|
83
|
+
# @return [GetPayoutResponse Hash] response from the API call
|
84
|
+
def get_payout(payout_id:)
|
85
|
+
# Prepare query url.
|
86
|
+
_query_builder = config.get_base_uri
|
87
|
+
_query_builder << '/v2/payouts/{payout_id}'
|
88
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
89
|
+
_query_builder,
|
90
|
+
'payout_id' => { 'value' => payout_id, 'encode' => true }
|
91
|
+
)
|
92
|
+
_query_url = APIHelper.clean_url _query_builder
|
93
|
+
|
94
|
+
# Prepare headers.
|
95
|
+
_headers = {
|
96
|
+
'accept' => 'application/json'
|
97
|
+
}
|
98
|
+
|
99
|
+
# Prepare and execute HttpRequest.
|
100
|
+
_request = config.http_client.get(
|
101
|
+
_query_url,
|
102
|
+
headers: _headers
|
103
|
+
)
|
104
|
+
OAuth2.apply(config, _request)
|
105
|
+
_response = execute_request(_request)
|
106
|
+
|
107
|
+
# Return appropriate response type.
|
108
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
109
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
110
|
+
ApiResponse.new(
|
111
|
+
_response, data: decoded, errors: _errors
|
112
|
+
)
|
113
|
+
end
|
114
|
+
|
115
|
+
# Retrieves a list of all payout entries for a specific payout.
|
116
|
+
# To call this endpoint, set `PAYOUTS_READ` for the OAuth scope.
|
117
|
+
# @param [String] payout_id Required parameter: The ID of the payout to
|
118
|
+
# retrieve the information for.
|
119
|
+
# @param [SortOrder] sort_order Optional parameter: The order in which
|
120
|
+
# payout entries are listed.
|
121
|
+
# @param [String] cursor Optional parameter: A pagination cursor returned by
|
122
|
+
# a previous call to this endpoint. Provide this cursor to retrieve the next
|
123
|
+
# set of results for the original query. For more information, see
|
124
|
+
# [Pagination](https://developer.squareup.com/docs/basics/api101/pagination)
|
125
|
+
# . If request parameters change between requests, subsequent results may
|
126
|
+
# contain duplicates or missing records.
|
127
|
+
# @param [Integer] limit Optional parameter: The maximum number of results
|
128
|
+
# to be returned in a single page. It is possible to receive fewer results
|
129
|
+
# than the specified limit on a given page. The default value of 100 is also
|
130
|
+
# the maximum allowed value. If the provided value is greater than 100, it
|
131
|
+
# is ignored and the default value is used instead. Default: `100`
|
132
|
+
# @return [ListPayoutEntriesResponse Hash] response from the API call
|
133
|
+
def list_payout_entries(payout_id:,
|
134
|
+
sort_order: nil,
|
135
|
+
cursor: nil,
|
136
|
+
limit: nil)
|
137
|
+
# Prepare query url.
|
138
|
+
_query_builder = config.get_base_uri
|
139
|
+
_query_builder << '/v2/payouts/{payout_id}/payout-entries'
|
140
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
141
|
+
_query_builder,
|
142
|
+
'payout_id' => { 'value' => payout_id, 'encode' => true }
|
143
|
+
)
|
144
|
+
_query_builder = APIHelper.append_url_with_query_parameters(
|
145
|
+
_query_builder,
|
146
|
+
'sort_order' => sort_order,
|
147
|
+
'cursor' => cursor,
|
148
|
+
'limit' => limit
|
149
|
+
)
|
150
|
+
_query_url = APIHelper.clean_url _query_builder
|
151
|
+
|
152
|
+
# Prepare headers.
|
153
|
+
_headers = {
|
154
|
+
'accept' => 'application/json'
|
155
|
+
}
|
156
|
+
|
157
|
+
# Prepare and execute HttpRequest.
|
158
|
+
_request = config.http_client.get(
|
159
|
+
_query_url,
|
160
|
+
headers: _headers
|
161
|
+
)
|
162
|
+
OAuth2.apply(config, _request)
|
163
|
+
_response = execute_request(_request)
|
164
|
+
|
165
|
+
# Return appropriate response type.
|
166
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
167
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
168
|
+
ApiResponse.new(
|
169
|
+
_response, data: decoded, errors: _errors
|
170
|
+
)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -260,9 +260,6 @@ module Square
|
|
260
260
|
end
|
261
261
|
|
262
262
|
# Lists all events for a specific subscription.
|
263
|
-
# In the current implementation, only `START_SUBSCRIPTION` and
|
264
|
-
# `STOP_SUBSCRIPTION` (when the subscription was canceled) events are
|
265
|
-
# returned.
|
266
263
|
# @param [String] subscription_id Required parameter: The ID of the
|
267
264
|
# subscription to retrieve the events for.
|
268
265
|
# @param [String] cursor Optional parameter: When the total number of
|
@@ -5,6 +5,147 @@ module Square
|
|
5
5
|
super(config, http_call_back: http_call_back)
|
6
6
|
end
|
7
7
|
|
8
|
+
# Creates a Terminal action request and sends it to the specified device.
|
9
|
+
# @param [CreateTerminalActionRequest] body Required parameter: An object
|
10
|
+
# containing the fields to POST for the request. See the corresponding
|
11
|
+
# object definition for field details.
|
12
|
+
# @return [CreateTerminalActionResponse Hash] response from the API call
|
13
|
+
def create_terminal_action(body:)
|
14
|
+
# Prepare query url.
|
15
|
+
_query_builder = config.get_base_uri
|
16
|
+
_query_builder << '/v2/terminals/actions'
|
17
|
+
_query_url = APIHelper.clean_url _query_builder
|
18
|
+
|
19
|
+
# Prepare headers.
|
20
|
+
_headers = {
|
21
|
+
'accept' => 'application/json',
|
22
|
+
'Content-Type' => 'application/json'
|
23
|
+
}
|
24
|
+
|
25
|
+
# Prepare and execute HttpRequest.
|
26
|
+
_request = config.http_client.post(
|
27
|
+
_query_url,
|
28
|
+
headers: _headers,
|
29
|
+
parameters: body.to_json
|
30
|
+
)
|
31
|
+
OAuth2.apply(config, _request)
|
32
|
+
_response = execute_request(_request)
|
33
|
+
|
34
|
+
# Return appropriate response type.
|
35
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
36
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
37
|
+
ApiResponse.new(
|
38
|
+
_response, data: decoded, errors: _errors
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Retrieves a filtered list of Terminal action requests created by the
|
43
|
+
# account making the request. Terminal action requests are available for 30
|
44
|
+
# days.
|
45
|
+
# @param [SearchTerminalActionsRequest] body Required parameter: An object
|
46
|
+
# containing the fields to POST for the request. See the corresponding
|
47
|
+
# object definition for field details.
|
48
|
+
# @return [SearchTerminalActionsResponse Hash] response from the API call
|
49
|
+
def search_terminal_actions(body:)
|
50
|
+
# Prepare query url.
|
51
|
+
_query_builder = config.get_base_uri
|
52
|
+
_query_builder << '/v2/terminals/actions/search'
|
53
|
+
_query_url = APIHelper.clean_url _query_builder
|
54
|
+
|
55
|
+
# Prepare headers.
|
56
|
+
_headers = {
|
57
|
+
'accept' => 'application/json',
|
58
|
+
'Content-Type' => 'application/json'
|
59
|
+
}
|
60
|
+
|
61
|
+
# Prepare and execute HttpRequest.
|
62
|
+
_request = config.http_client.post(
|
63
|
+
_query_url,
|
64
|
+
headers: _headers,
|
65
|
+
parameters: body.to_json
|
66
|
+
)
|
67
|
+
OAuth2.apply(config, _request)
|
68
|
+
_response = execute_request(_request)
|
69
|
+
|
70
|
+
# Return appropriate response type.
|
71
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
72
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
73
|
+
ApiResponse.new(
|
74
|
+
_response, data: decoded, errors: _errors
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
# Retrieves a Terminal action request by `action_id`. Terminal action
|
79
|
+
# requests are available for 30 days.
|
80
|
+
# @param [String] action_id Required parameter: Unique ID for the desired
|
81
|
+
# `TerminalAction`
|
82
|
+
# @return [GetTerminalActionResponse Hash] response from the API call
|
83
|
+
def get_terminal_action(action_id:)
|
84
|
+
# Prepare query url.
|
85
|
+
_query_builder = config.get_base_uri
|
86
|
+
_query_builder << '/v2/terminals/actions/{action_id}'
|
87
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
88
|
+
_query_builder,
|
89
|
+
'action_id' => { 'value' => action_id, 'encode' => true }
|
90
|
+
)
|
91
|
+
_query_url = APIHelper.clean_url _query_builder
|
92
|
+
|
93
|
+
# Prepare headers.
|
94
|
+
_headers = {
|
95
|
+
'accept' => 'application/json'
|
96
|
+
}
|
97
|
+
|
98
|
+
# Prepare and execute HttpRequest.
|
99
|
+
_request = config.http_client.get(
|
100
|
+
_query_url,
|
101
|
+
headers: _headers
|
102
|
+
)
|
103
|
+
OAuth2.apply(config, _request)
|
104
|
+
_response = execute_request(_request)
|
105
|
+
|
106
|
+
# Return appropriate response type.
|
107
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
108
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
109
|
+
ApiResponse.new(
|
110
|
+
_response, data: decoded, errors: _errors
|
111
|
+
)
|
112
|
+
end
|
113
|
+
|
114
|
+
# Cancels a Terminal action request if the status of the request permits it.
|
115
|
+
# @param [String] action_id Required parameter: Unique ID for the desired
|
116
|
+
# `TerminalAction`
|
117
|
+
# @return [CancelTerminalActionResponse Hash] response from the API call
|
118
|
+
def cancel_terminal_action(action_id:)
|
119
|
+
# Prepare query url.
|
120
|
+
_query_builder = config.get_base_uri
|
121
|
+
_query_builder << '/v2/terminals/actions/{action_id}/cancel'
|
122
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
123
|
+
_query_builder,
|
124
|
+
'action_id' => { 'value' => action_id, 'encode' => true }
|
125
|
+
)
|
126
|
+
_query_url = APIHelper.clean_url _query_builder
|
127
|
+
|
128
|
+
# Prepare headers.
|
129
|
+
_headers = {
|
130
|
+
'accept' => 'application/json'
|
131
|
+
}
|
132
|
+
|
133
|
+
# Prepare and execute HttpRequest.
|
134
|
+
_request = config.http_client.post(
|
135
|
+
_query_url,
|
136
|
+
headers: _headers
|
137
|
+
)
|
138
|
+
OAuth2.apply(config, _request)
|
139
|
+
_response = execute_request(_request)
|
140
|
+
|
141
|
+
# Return appropriate response type.
|
142
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
143
|
+
_errors = APIHelper.map_response(decoded, ['errors'])
|
144
|
+
ApiResponse.new(
|
145
|
+
_response, data: decoded, errors: _errors
|
146
|
+
)
|
147
|
+
end
|
148
|
+
|
8
149
|
# Creates a Terminal checkout request and sends it to the specified device
|
9
150
|
# to take a payment
|
10
151
|
# for the requested amount.
|
@@ -41,8 +182,10 @@ module Square
|
|
41
182
|
)
|
42
183
|
end
|
43
184
|
|
44
|
-
#
|
45
|
-
#
|
185
|
+
# Returns a filtered list of Terminal checkout requests created by the
|
186
|
+
# application making the request. Only Terminal checkout requests created
|
187
|
+
# for the merchant scoped to the OAuth token are returned. Terminal checkout
|
188
|
+
# requests are available for 30 days.
|
46
189
|
# @param [SearchTerminalCheckoutsRequest] body Required parameter: An object
|
47
190
|
# containing the fields to POST for the request. See the corresponding
|
48
191
|
# object definition for field details.
|
@@ -76,7 +219,8 @@ module Square
|
|
76
219
|
)
|
77
220
|
end
|
78
221
|
|
79
|
-
# Retrieves a Terminal checkout request by `checkout_id`.
|
222
|
+
# Retrieves a Terminal checkout request by `checkout_id`. Terminal checkout
|
223
|
+
# requests are available for 30 days.
|
80
224
|
# @param [String] checkout_id Required parameter: The unique ID for the
|
81
225
|
# desired `TerminalCheckout`.
|
82
226
|
# @return [GetTerminalCheckoutResponse Hash] response from the API call
|
@@ -148,7 +292,10 @@ module Square
|
|
148
292
|
end
|
149
293
|
|
150
294
|
# Creates a request to refund an Interac payment completed on a Square
|
151
|
-
# Terminal.
|
295
|
+
# Terminal. Refunds for Interac payments on a Square Terminal are supported
|
296
|
+
# only for Interac debit cards in Canada. Other refunds for Terminal
|
297
|
+
# payments should use the Refunds API. For more information, see [Refunds
|
298
|
+
# API]($e/Refunds).
|
152
299
|
# @param [CreateTerminalRefundRequest] body Required parameter: An object
|
153
300
|
# containing the fields to POST for the request. See the corresponding
|
154
301
|
# object definition for field details.
|
@@ -183,7 +330,8 @@ module Square
|
|
183
330
|
end
|
184
331
|
|
185
332
|
# Retrieves a filtered list of Interac Terminal refund requests created by
|
186
|
-
# the seller making the request.
|
333
|
+
# the seller making the request. Terminal refund requests are available for
|
334
|
+
# 30 days.
|
187
335
|
# @param [SearchTerminalRefundsRequest] body Required parameter: An object
|
188
336
|
# containing the fields to POST for the request. See the corresponding
|
189
337
|
# object definition for field details.
|
@@ -217,7 +365,8 @@ module Square
|
|
217
365
|
)
|
218
366
|
end
|
219
367
|
|
220
|
-
# Retrieves an Interac Terminal refund object by ID.
|
368
|
+
# Retrieves an Interac Terminal refund object by ID. Terminal refund objects
|
369
|
+
# are available for 30 days.
|
221
370
|
# @param [String] terminal_refund_id Required parameter: The unique ID for
|
222
371
|
# the desired `TerminalRefund`.
|
223
372
|
# @return [GetTerminalRefundResponse Hash] response from the API call
|
data/lib/square/client.rb
CHANGED
@@ -4,7 +4,7 @@ module Square
|
|
4
4
|
attr_reader :config
|
5
5
|
|
6
6
|
def sdk_version
|
7
|
-
'
|
7
|
+
'20.1.0.20220616'
|
8
8
|
end
|
9
9
|
|
10
10
|
def square_version
|
@@ -75,6 +75,12 @@ module Square
|
|
75
75
|
@customers ||= CustomersApi.new config
|
76
76
|
end
|
77
77
|
|
78
|
+
# Access to customer_custom_attributes controller.
|
79
|
+
# @return [CustomerCustomAttributesApi] Returns the controller instance.
|
80
|
+
def customer_custom_attributes
|
81
|
+
@customer_custom_attributes ||= CustomerCustomAttributesApi.new config
|
82
|
+
end
|
83
|
+
|
78
84
|
# Access to customer_groups controller.
|
79
85
|
# @return [CustomerGroupsApi] Returns the controller instance.
|
80
86
|
def customer_groups
|
@@ -177,6 +183,12 @@ module Square
|
|
177
183
|
@payments ||= PaymentsApi.new config
|
178
184
|
end
|
179
185
|
|
186
|
+
# Access to payouts controller.
|
187
|
+
# @return [PayoutsApi] Returns the controller instance.
|
188
|
+
def payouts
|
189
|
+
@payouts ||= PayoutsApi.new config
|
190
|
+
end
|
191
|
+
|
180
192
|
# Access to refunds controller.
|
181
193
|
# @return [RefundsApi] Returns the controller instance.
|
182
194
|
def refunds
|
@@ -219,16 +231,17 @@ module Square
|
|
219
231
|
@vendors ||= VendorsApi.new config
|
220
232
|
end
|
221
233
|
|
222
|
-
def initialize(connection: nil,
|
223
|
-
|
234
|
+
def initialize(connection: nil, adapter: Faraday.default_adapter,
|
235
|
+
timeout: 60, max_retries: 0, retry_interval: 1,
|
236
|
+
backoff_factor: 2,
|
224
237
|
retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
|
225
238
|
retry_methods: %i[get put], environment: 'production',
|
226
239
|
custom_url: 'https://connect.squareup.com',
|
227
|
-
square_version: '2022-
|
240
|
+
square_version: '2022-06-16', access_token: '',
|
228
241
|
user_agent_detail: '', additional_headers: {}, config: nil)
|
229
242
|
@config = if config.nil?
|
230
|
-
Configuration.new(connection: connection,
|
231
|
-
max_retries: max_retries,
|
243
|
+
Configuration.new(connection: connection, adapter: adapter,
|
244
|
+
timeout: timeout, max_retries: max_retries,
|
232
245
|
retry_interval: retry_interval,
|
233
246
|
backoff_factor: backoff_factor,
|
234
247
|
retry_statuses: retry_statuses,
|
data/lib/square/configuration.rb
CHANGED
@@ -3,9 +3,9 @@ module Square
|
|
3
3
|
# are configured in this class.
|
4
4
|
class Configuration
|
5
5
|
# The attribute readers for properties.
|
6
|
-
attr_reader :http_client, :connection, :timeout, :max_retries, :retry_interval,
|
7
|
-
:retry_statuses, :retry_methods, :environment, :custom_url,
|
8
|
-
:access_token, :user_agent_detail
|
6
|
+
attr_reader :http_client, :connection, :adapter, :timeout, :max_retries, :retry_interval,
|
7
|
+
:backoff_factor, :retry_statuses, :retry_methods, :environment, :custom_url,
|
8
|
+
:square_version, :access_token, :user_agent_detail
|
9
9
|
|
10
10
|
def additional_headers
|
11
11
|
@additional_headers.clone
|
@@ -15,16 +15,20 @@ module Square
|
|
15
15
|
attr_reader :environments
|
16
16
|
end
|
17
17
|
|
18
|
-
def initialize(connection: nil,
|
19
|
-
|
18
|
+
def initialize(connection: nil, adapter: Faraday.default_adapter,
|
19
|
+
timeout: 60, max_retries: 0, retry_interval: 1,
|
20
|
+
backoff_factor: 2,
|
20
21
|
retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
|
21
22
|
retry_methods: %i[get put], environment: 'production',
|
22
23
|
custom_url: 'https://connect.squareup.com',
|
23
|
-
square_version: '2022-
|
24
|
+
square_version: '2022-06-16', access_token: '',
|
24
25
|
user_agent_detail: '', additional_headers: {})
|
25
26
|
# The Faraday connection object passed by the SDK user for making requests
|
26
27
|
@connection = connection
|
27
28
|
|
29
|
+
# The Faraday adapter object passed by the SDK user for performing http requests
|
30
|
+
@adapter = adapter
|
31
|
+
|
28
32
|
# The value to use for connection timeout
|
29
33
|
@timeout = timeout
|
30
34
|
|
@@ -66,12 +70,13 @@ module Square
|
|
66
70
|
@user_agent_detail = get_user_agent(user_agent_detail)
|
67
71
|
end
|
68
72
|
|
69
|
-
def clone_with(connection: nil,
|
70
|
-
retry_interval: nil, backoff_factor: nil,
|
73
|
+
def clone_with(connection: nil, adapter: nil, timeout: nil,
|
74
|
+
max_retries: nil, retry_interval: nil, backoff_factor: nil,
|
71
75
|
retry_statuses: nil, retry_methods: nil, environment: nil,
|
72
76
|
custom_url: nil, square_version: nil, access_token: nil,
|
73
77
|
user_agent_detail: nil, additional_headers: nil)
|
74
78
|
connection ||= self.connection
|
79
|
+
adapter ||= self.adapter
|
75
80
|
timeout ||= self.timeout
|
76
81
|
max_retries ||= self.max_retries
|
77
82
|
retry_interval ||= self.retry_interval
|
@@ -85,8 +90,8 @@ module Square
|
|
85
90
|
user_agent_detail ||= self.user_agent_detail
|
86
91
|
additional_headers ||= self.additional_headers
|
87
92
|
|
88
|
-
Configuration.new(connection: connection,
|
89
|
-
max_retries: max_retries,
|
93
|
+
Configuration.new(connection: connection, adapter: adapter,
|
94
|
+
timeout: timeout, max_retries: max_retries,
|
90
95
|
retry_interval: retry_interval,
|
91
96
|
backoff_factor: backoff_factor,
|
92
97
|
retry_statuses: retry_statuses,
|
@@ -102,7 +107,8 @@ module Square
|
|
102
107
|
retry_interval: retry_interval,
|
103
108
|
backoff_factor: backoff_factor,
|
104
109
|
retry_statuses: retry_statuses,
|
105
|
-
retry_methods: retry_methods, connection: connection
|
110
|
+
retry_methods: retry_methods, connection: connection,
|
111
|
+
adapter: adapter)
|
106
112
|
end
|
107
113
|
|
108
114
|
def get_user_agent(user_agent_detail)
|
@@ -18,16 +18,14 @@ module Square
|
|
18
18
|
@request = http_response.request
|
19
19
|
@errors = errors
|
20
20
|
|
21
|
-
if data.is_a? Hash
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end.new(*data.values)
|
21
|
+
if (data.is_a? Hash) && data.keys.any?
|
22
|
+
@body = Struct.new(*data.keys) do
|
23
|
+
define_method(:to_s) { http_response.raw_body }
|
24
|
+
end.new(*data.values)
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
26
|
+
@cursor = data.fetch(:cursor, nil)
|
27
|
+
data.reject! { |k| %i[cursor errors].include?(k) }
|
28
|
+
@data = Struct.new(*data.keys).new(*data.values) if data.keys.any?
|
31
29
|
else
|
32
30
|
@data = data
|
33
31
|
@body = data
|
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'faraday/http_cache'
|
2
|
-
require '
|
2
|
+
require 'faraday/retry'
|
3
|
+
require 'faraday/multipart'
|
4
|
+
require 'faraday/follow_redirects'
|
5
|
+
require 'faraday/gzip'
|
3
6
|
|
4
7
|
module Square
|
5
8
|
# An implementation of HttpClient.
|
@@ -10,12 +13,12 @@ module Square
|
|
10
13
|
# The constructor.
|
11
14
|
def initialize(timeout:, max_retries:, retry_interval:,
|
12
15
|
backoff_factor:, retry_statuses:, retry_methods:,
|
13
|
-
connection
|
16
|
+
connection:, adapter:, cache: false, verify: true)
|
14
17
|
@connection = if connection.nil?
|
15
18
|
create_connection(timeout: timeout, max_retries: max_retries,
|
16
19
|
retry_interval: retry_interval, backoff_factor: backoff_factor,
|
17
20
|
retry_statuses: retry_statuses, retry_methods: retry_methods,
|
18
|
-
cache: cache, verify: verify)
|
21
|
+
adapter: adapter, cache: cache, verify: verify)
|
19
22
|
else
|
20
23
|
connection
|
21
24
|
end
|
@@ -24,11 +27,11 @@ module Square
|
|
24
27
|
# Method to initialize connection.
|
25
28
|
def create_connection(timeout:, max_retries:, retry_interval:,
|
26
29
|
backoff_factor:, retry_statuses:, retry_methods:,
|
27
|
-
cache: false, verify: true)
|
30
|
+
adapter:, cache: false, verify: true)
|
28
31
|
Faraday.new do |faraday|
|
29
32
|
faraday.use Faraday::HttpCache, serializer: Marshal if cache
|
30
|
-
faraday.use
|
31
|
-
faraday.
|
33
|
+
faraday.use Faraday::FollowRedirects::Middleware
|
34
|
+
faraday.request :gzip
|
32
35
|
faraday.request :multipart
|
33
36
|
faraday.request :url_encoded
|
34
37
|
faraday.ssl[:ca_file] = Certifi.where
|
@@ -36,8 +39,11 @@ module Square
|
|
36
39
|
faraday.request :retry, max: max_retries, interval: retry_interval,
|
37
40
|
backoff_factor: backoff_factor,
|
38
41
|
retry_statuses: retry_statuses,
|
39
|
-
methods: retry_methods
|
40
|
-
|
42
|
+
methods: retry_methods,
|
43
|
+
retry_if: proc { |env, _exc|
|
44
|
+
env.request.context['forced_retry'] ||= false
|
45
|
+
}
|
46
|
+
faraday.adapter adapter
|
41
47
|
faraday.options[:params_encoder] = Faraday::FlatParamsEncoder
|
42
48
|
faraday.options[:timeout] = timeout if timeout.positive?
|
43
49
|
end
|
@@ -49,7 +55,9 @@ module Square
|
|
49
55
|
http_request.http_method.downcase,
|
50
56
|
http_request.query_url
|
51
57
|
) do |request|
|
52
|
-
request.headers = http_request.headers
|
58
|
+
request.headers = http_request.headers.map { |k, v| [k.to_s, v.to_s] }
|
59
|
+
request.options.context ||= {}
|
60
|
+
request.options.context.merge!(http_request.context)
|
53
61
|
unless http_request.http_method == HttpMethodEnum::GET &&
|
54
62
|
http_request.parameters.empty?
|
55
63
|
request.body = http_request.parameters
|
@@ -65,6 +73,8 @@ module Square
|
|
65
73
|
http_request.query_url
|
66
74
|
) do |request|
|
67
75
|
request.headers = http_request.headers
|
76
|
+
request.options.context ||= {}
|
77
|
+
request.options.context.merge!(http_request.context)
|
68
78
|
unless http_request.http_method == HttpMethodEnum::GET &&
|
69
79
|
http_request.parameters.empty?
|
70
80
|
request.body = http_request.parameters
|