square.rb 13.0.0.20210721 → 16.0.0.20211117

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +38 -21
  4. data/lib/square/api/apple_pay_api.rb +1 -1
  5. data/lib/square/api/base_api.rb +5 -9
  6. data/lib/square/api/bookings_api.rb +64 -4
  7. data/lib/square/api/cards_api.rb +1 -1
  8. data/lib/square/api/catalog_api.rb +10 -10
  9. data/lib/square/api/checkout_api.rb +1 -1
  10. data/lib/square/api/customer_groups_api.rb +12 -4
  11. data/lib/square/api/customer_segments_api.rb +10 -2
  12. data/lib/square/api/customers_api.rb +15 -7
  13. data/lib/square/api/devices_api.rb +1 -1
  14. data/lib/square/api/disputes_api.rb +1 -1
  15. data/lib/square/api/gift_card_activities_api.rb +26 -20
  16. data/lib/square/api/gift_cards_api.rb +32 -26
  17. data/lib/square/api/inventory_api.rb +6 -6
  18. data/lib/square/api/invoices_api.rb +5 -5
  19. data/lib/square/api/labor_api.rb +70 -68
  20. data/lib/square/api/locations_api.rb +2 -2
  21. data/lib/square/api/loyalty_api.rb +9 -9
  22. data/lib/square/api/mobile_authorization_api.rb +1 -1
  23. data/lib/square/api/o_auth_api.rb +22 -15
  24. data/lib/square/api/orders_api.rb +43 -6
  25. data/lib/square/api/payments_api.rb +12 -6
  26. data/lib/square/api/refunds_api.rb +1 -1
  27. data/lib/square/api/sites_api.rb +2 -1
  28. data/lib/square/api/snippets_api.rb +1 -1
  29. data/lib/square/api/subscriptions_api.rb +159 -16
  30. data/lib/square/api/team_api.rb +6 -6
  31. data/lib/square/api/terminal_api.rb +4 -4
  32. data/lib/square/api/transactions_api.rb +0 -188
  33. data/lib/square/api/v1_transactions_api.rb +2 -2
  34. data/lib/square/api_helper.rb +19 -17
  35. data/lib/square/client.rb +6 -11
  36. data/lib/square/configuration.rb +19 -20
  37. data/lib/square/http/api_response.rb +1 -1
  38. data/lib/square/http/faraday_client.rb +21 -2
  39. data/lib/square/utilities/date_time_helper.rb +2 -2
  40. data/lib/square/utilities/file_wrapper.rb +1 -2
  41. data/lib/square.rb +48 -49
  42. metadata +11 -9
  43. data/lib/square/api/v1_employees_api.rb +0 -362
@@ -21,7 +21,7 @@ module Square
21
21
  # Prepare headers.
22
22
  _headers = {
23
23
  'accept' => 'application/json',
24
- 'content-type' => 'application/json; charset=utf-8'
24
+ 'Content-Type' => 'application/json'
25
25
  }
26
26
 
27
27
  # Prepare and execute HttpRequest.
@@ -56,7 +56,7 @@ module Square
56
56
  # Prepare headers.
57
57
  _headers = {
58
58
  'accept' => 'application/json',
59
- 'content-type' => 'application/json; charset=utf-8'
59
+ 'Content-Type' => 'application/json'
60
60
  }
61
61
 
62
62
  # Prepare and execute HttpRequest.
@@ -162,7 +162,7 @@ module Square
162
162
  # Prepare headers.
163
163
  _headers = {
164
164
  'accept' => 'application/json',
165
- 'content-type' => 'application/json; charset=utf-8'
165
+ 'Content-Type' => 'application/json'
166
166
  }
167
167
 
168
168
  # Prepare and execute HttpRequest.
@@ -197,7 +197,7 @@ module Square
197
197
  # Prepare headers.
198
198
  _headers = {
199
199
  'accept' => 'application/json',
200
- 'content-type' => 'application/json; charset=utf-8'
200
+ 'Content-Type' => 'application/json'
201
201
  }
202
202
 
203
203
  # Prepare and execute HttpRequest.
@@ -5,80 +5,6 @@ module Square
5
5
  super(config, http_call_back: http_call_back)
6
6
  end
7
7
 
8
- # Lists refunds for one of a business's locations.
9
- # In addition to full or partial tender refunds processed through Square
10
- # APIs,
11
- # refunds may result from itemized returns or exchanges through Square's
12
- # Point of Sale applications.
13
- # Refunds with a `status` of `PENDING` are not currently included in this
14
- # endpoint's response.
15
- # Max results per
16
- # [page](https://developer.squareup.com/docs/working-with-apis/pagination):
17
- # 50
18
- # @param [String] location_id Required parameter: The ID of the location to
19
- # list refunds for.
20
- # @param [String] begin_time Optional parameter: The beginning of the
21
- # requested reporting period, in RFC 3339 format. See [Date
22
- # ranges](https://developer.squareup.com/docs/build-basics/working-with-date
23
- # s) for details on date inclusivity/exclusivity. Default value: The
24
- # current time minus one year.
25
- # @param [String] end_time Optional parameter: The end of the requested
26
- # reporting period, in RFC 3339 format. See [Date
27
- # ranges](https://developer.squareup.com/docs/build-basics/working-with-date
28
- # s) for details on date inclusivity/exclusivity. Default value: The
29
- # current time.
30
- # @param [SortOrder] sort_order Optional parameter: The order in which
31
- # results are listed in the response (`ASC` for oldest first, `DESC` for
32
- # newest first). Default value: `DESC`
33
- # @param [String] cursor Optional parameter: A pagination cursor returned by
34
- # a previous call to this endpoint. Provide this to retrieve the next set of
35
- # results for your original query. See [Paginating
36
- # results](https://developer.squareup.com/docs/working-with-apis/pagination)
37
- # for more information.
38
- # @return [ListRefundsResponse Hash] response from the API call
39
- def list_refunds(location_id:,
40
- begin_time: nil,
41
- end_time: nil,
42
- sort_order: nil,
43
- cursor: nil)
44
- warn 'Endpoint list_refunds in TransactionsApi is deprecated'
45
- # Prepare query url.
46
- _query_builder = config.get_base_uri
47
- _query_builder << '/v2/locations/{location_id}/refunds'
48
- _query_builder = APIHelper.append_url_with_template_parameters(
49
- _query_builder,
50
- 'location_id' => { 'value' => location_id, 'encode' => true }
51
- )
52
- _query_builder = APIHelper.append_url_with_query_parameters(
53
- _query_builder,
54
- 'begin_time' => begin_time,
55
- 'end_time' => end_time,
56
- 'sort_order' => sort_order,
57
- 'cursor' => cursor
58
- )
59
- _query_url = APIHelper.clean_url _query_builder
60
-
61
- # Prepare headers.
62
- _headers = {
63
- 'accept' => 'application/json'
64
- }
65
-
66
- # Prepare and execute HttpRequest.
67
- _request = config.http_client.get(
68
- _query_url,
69
- headers: _headers
70
- )
71
- OAuth2.apply(config, _request)
72
- _response = execute_request(_request)
73
-
74
- # Return appropriate response type.
75
- decoded = APIHelper.json_deserialize(_response.raw_body)
76
- _errors = APIHelper.map_response(decoded, ['errors'])
77
- ApiResponse.new(
78
- _response, data: decoded, errors: _errors
79
- )
80
- end
81
-
82
8
  # Lists transactions for a particular location.
83
9
  # Transactions include payment information from sales and exchanges and
84
10
  # refund
@@ -150,67 +76,6 @@ module Square
150
76
  )
151
77
  end
152
78
 
153
- # Charges a card represented by a card nonce or a customer's card on file.
154
- # Your request to this endpoint must include _either_:
155
- # - A value for the `card_nonce` parameter (to charge a card payment token
156
- # generated
157
- # with the Web Payments SDK)
158
- # - Values for the `customer_card_id` and `customer_id` parameters (to
159
- # charge
160
- # a customer's card on file)
161
- # In order for an eCommerce payment to potentially qualify for
162
- # [Square chargeback protection](https://squareup.com/help/article/5394),
163
- # you
164
- # _must_ provide values for the following parameters in your request:
165
- # - `buyer_email_address`
166
- # - At least one of `billing_address` or `shipping_address`
167
- # When this response is returned, the amount of Square's processing fee
168
- # might not yet be
169
- # calculated. To obtain the processing fee, wait about ten seconds and call
170
- # [RetrieveTransaction]($e/Transactions/RetrieveTransaction). See the
171
- # `processing_fee_money`
172
- # field of each [Tender included]($m/Tender) in the transaction.
173
- # @param [String] location_id Required parameter: The ID of the location to
174
- # associate the created transaction with.
175
- # @param [ChargeRequest] body Required parameter: An object containing the
176
- # fields to POST for the request. See the corresponding object definition
177
- # for field details.
178
- # @return [ChargeResponse Hash] response from the API call
179
- def charge(location_id:,
180
- body:)
181
- warn 'Endpoint charge in TransactionsApi is deprecated'
182
- # Prepare query url.
183
- _query_builder = config.get_base_uri
184
- _query_builder << '/v2/locations/{location_id}/transactions'
185
- _query_builder = APIHelper.append_url_with_template_parameters(
186
- _query_builder,
187
- 'location_id' => { 'value' => location_id, 'encode' => true }
188
- )
189
- _query_url = APIHelper.clean_url _query_builder
190
-
191
- # Prepare headers.
192
- _headers = {
193
- 'accept' => 'application/json',
194
- 'content-type' => 'application/json; charset=utf-8'
195
- }
196
-
197
- # Prepare and execute HttpRequest.
198
- _request = config.http_client.post(
199
- _query_url,
200
- headers: _headers,
201
- parameters: body.to_json
202
- )
203
- OAuth2.apply(config, _request)
204
- _response = execute_request(_request)
205
-
206
- # Return appropriate response type.
207
- decoded = APIHelper.json_deserialize(_response.raw_body)
208
- _errors = APIHelper.map_response(decoded, ['errors'])
209
- ApiResponse.new(
210
- _response, data: decoded, errors: _errors
211
- )
212
- end
213
-
214
79
  # Retrieves details for a single transaction.
215
80
  # @param [String] location_id Required parameter: The ID of the
216
81
  # transaction's associated location.
@@ -295,59 +160,6 @@ module Square
295
160
  )
296
161
  end
297
162
 
298
- # Initiates a refund for a previously charged tender.
299
- # You must issue a refund within 120 days of the associated payment. See
300
- # [this article](https://squareup.com/help/us/en/article/5060) for more
301
- # information
302
- # on refund behavior.
303
- # NOTE: Card-present transactions with Interac credit cards **cannot be
304
- # refunded using the Connect API**. Interac transactions must refunded
305
- # in-person (e.g., dipping the card using POS app).
306
- # @param [String] location_id Required parameter: The ID of the original
307
- # transaction's associated location.
308
- # @param [String] transaction_id Required parameter: The ID of the original
309
- # transaction that includes the tender to refund.
310
- # @param [CreateRefundRequest] body Required parameter: An object containing
311
- # the fields to POST for the request. See the corresponding object
312
- # definition for field details.
313
- # @return [CreateRefundResponse Hash] response from the API call
314
- def create_refund(location_id:,
315
- transaction_id:,
316
- body:)
317
- warn 'Endpoint create_refund in TransactionsApi is deprecated'
318
- # Prepare query url.
319
- _query_builder = config.get_base_uri
320
- _query_builder << '/v2/locations/{location_id}/transactions/{transaction_id}/refund'
321
- _query_builder = APIHelper.append_url_with_template_parameters(
322
- _query_builder,
323
- 'location_id' => { 'value' => location_id, 'encode' => true },
324
- 'transaction_id' => { 'value' => transaction_id, 'encode' => true }
325
- )
326
- _query_url = APIHelper.clean_url _query_builder
327
-
328
- # Prepare headers.
329
- _headers = {
330
- 'accept' => 'application/json',
331
- 'content-type' => 'application/json; charset=utf-8'
332
- }
333
-
334
- # Prepare and execute HttpRequest.
335
- _request = config.http_client.post(
336
- _query_url,
337
- headers: _headers,
338
- parameters: body.to_json
339
- )
340
- OAuth2.apply(config, _request)
341
- _response = execute_request(_request)
342
-
343
- # Return appropriate response type.
344
- decoded = APIHelper.json_deserialize(_response.raw_body)
345
- _errors = APIHelper.map_response(decoded, ['errors'])
346
- ApiResponse.new(
347
- _response, data: decoded, errors: _errors
348
- )
349
- end
350
-
351
163
  # Cancels a transaction that was created with the
352
164
  # [Charge]($e/Transactions/Charge)
353
165
  # endpoint with a `delay_capture` value of `true`.
@@ -127,7 +127,7 @@ module Square
127
127
  # Prepare headers.
128
128
  _headers = {
129
129
  'accept' => 'application/json',
130
- 'content-type' => 'application/json; charset=utf-8'
130
+ 'Content-Type' => 'application/json'
131
131
  }
132
132
 
133
133
  # Prepare and execute HttpRequest.
@@ -369,7 +369,7 @@ module Square
369
369
  # Prepare headers.
370
370
  _headers = {
371
371
  'accept' => 'application/json',
372
- 'content-type' => 'application/json; charset=utf-8'
372
+ 'Content-Type' => 'application/json'
373
373
  }
374
374
 
375
375
  # Prepare and execute HttpRequest.
@@ -8,13 +8,14 @@ module Square
8
8
  def self.serialize_array(key, array, formatting: 'indexed')
9
9
  tuples = []
10
10
 
11
- if formatting == 'unindexed'
11
+ case formatting
12
+ when 'unindexed'
12
13
  tuples += array.map { |element| ["#{key}[]", element] }
13
- elsif formatting == 'indexed'
14
+ when 'indexed'
14
15
  tuples += array.map.with_index do |element, index|
15
16
  ["#{key}[#{index}]", element]
16
17
  end
17
- elsif formatting == 'plain'
18
+ when 'plain'
18
19
  tuples += array.map { |element| [key, element] }
19
20
  else
20
21
  raise ArgumentError, 'Invalid format provided.'
@@ -55,7 +56,7 @@ module Square
55
56
  end
56
57
 
57
58
  # Find the template parameter and replace it with its value.
58
- query_builder = query_builder.gsub('{' + key.to_s + '}', replace_value)
59
+ query_builder = query_builder.gsub("{#{key}}", replace_value)
59
60
  end
60
61
  query_builder
61
62
  end
@@ -80,15 +81,16 @@ module Square
80
81
  unless value.nil?
81
82
  if value.instance_of? Array
82
83
  value.compact!
83
- query_builder += if array_serialization == 'csv'
84
+ query_builder += case array_serialization
85
+ when 'csv'
84
86
  "#{seperator}#{key}=#{value.map do |element|
85
87
  CGI.escape(element.to_s)
86
88
  end.join(',')}"
87
- elsif array_serialization == 'psv'
89
+ when 'psv'
88
90
  "#{seperator}#{key}=#{value.map do |element|
89
91
  CGI.escape(element.to_s)
90
92
  end.join('|')}"
91
- elsif array_serialization == 'tsv'
93
+ when 'tsv'
92
94
  "#{seperator}#{key}=#{value.map do |element|
93
95
  CGI.escape(element.to_s)
94
96
  end.join("\t")}"
@@ -114,7 +116,7 @@ module Square
114
116
  raise ArgumentError, 'Invalid Url.' unless url.instance_of? String
115
117
 
116
118
  # Ensure that the urls are absolute.
117
- matches = url.match(%r{^(https?:\/\/[^\/]+)})
119
+ matches = url.match(%r{^(https?://[^/]+)})
118
120
  raise ArgumentError, 'Invalid Url format.' if matches.nil?
119
121
 
120
122
  # Get the http protocol match.
@@ -125,7 +127,7 @@ module Square
125
127
 
126
128
  # Remove redundant forward slashes.
127
129
  query = url[protocol.length...(!index.nil? ? index : url.length)]
128
- query.gsub!(%r{\/\/+}, '/')
130
+ query.gsub!(%r{//+}, '/')
129
131
 
130
132
  # Get the parameters.
131
133
  parameters = !index.nil? ? url[url.index('?')...url.length] : ''
@@ -137,7 +139,7 @@ module Square
137
139
  # Parses JSON string.
138
140
  # @param [String] A JSON string.
139
141
  def self.json_deserialize(json)
140
- return JSON.parse(json, symbolize_names: true)
142
+ JSON.parse(json, symbolize_names: true)
141
143
  rescue StandardError
142
144
  raise TypeError, 'Server responded with invalid JSON.'
143
145
  end
@@ -166,6 +168,7 @@ module Square
166
168
  a.each do |key, value_a|
167
169
  b.each do |k, value_b|
168
170
  next unless key == k
171
+
169
172
  x[k] = []
170
173
  if value_a.instance_of? Array
171
174
  value_a.each do |v|
@@ -207,13 +210,12 @@ module Square
207
210
  elsif obj.instance_of? Array
208
211
  if formatting == 'indexed'
209
212
  obj.each_with_index do |value, index|
210
- retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
211
- index.to_s + ']'))
213
+ retval.merge!(APIHelper.form_encode(value, "#{instance_name}[#{index}]"))
212
214
  end
213
215
  elsif serializable_types.map { |x| obj[0].is_a? x }.any?
214
216
  obj.each do |value|
215
217
  abc = if formatting == 'unindexed'
216
- APIHelper.form_encode(value, instance_name + '[]',
218
+ APIHelper.form_encode(value, "#{instance_name}[]",
217
219
  formatting: formatting)
218
220
  else
219
221
  APIHelper.form_encode(value, instance_name,
@@ -223,14 +225,14 @@ module Square
223
225
  end
224
226
  else
225
227
  obj.each_with_index do |value, index|
226
- retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
227
- index.to_s + ']', formatting: formatting))
228
+ retval.merge!(APIHelper.form_encode(value, "#{instance_name}[#{index}]",
229
+ formatting: formatting))
228
230
  end
229
231
  end
230
232
  elsif obj.instance_of? Hash
231
233
  obj.each do |key, value|
232
- retval.merge!(APIHelper.form_encode(value, instance_name + '[' +
233
- key.to_s + ']', formatting: formatting))
234
+ retval.merge!(APIHelper.form_encode(value, "#{instance_name}[#{key}]",
235
+ formatting: formatting))
234
236
  end
235
237
  elsif obj.instance_of? File
236
238
  retval[instance_name] = UploadIO.new(
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
- '13.0.0.20210721'
7
+ '16.0.0.20211117'
8
8
  end
9
9
 
10
10
  def square_version
@@ -23,12 +23,6 @@ module Square
23
23
  @o_auth ||= OAuthApi.new config
24
24
  end
25
25
 
26
- # Access to v1_employees controller.
27
- # @return [V1EmployeesApi] Returns the controller instance.
28
- def v1_employees
29
- @v1_employees ||= V1EmployeesApi.new config
30
- end
31
-
32
26
  # Access to v1_transactions controller.
33
27
  # @return [V1TransactionsApi] Returns the controller instance.
34
28
  def v1_transactions
@@ -215,15 +209,16 @@ module Square
215
209
  @terminal ||= TerminalApi.new config
216
210
  end
217
211
 
218
- def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
219
- backoff_factor: 2,
212
+ def initialize(http_client_instance: nil, timeout: 60, max_retries: 0,
213
+ retry_interval: 1, backoff_factor: 2,
220
214
  retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
221
215
  retry_methods: %i[get put], environment: 'production',
222
216
  custom_url: 'https://connect.squareup.com',
223
- square_version: '2021-07-21', access_token: 'TODO: Replace',
217
+ square_version: '2021-11-17', access_token: '',
224
218
  additional_headers: {}, config: nil)
225
219
  @config = if config.nil?
226
- Configuration.new(timeout: timeout, max_retries: max_retries,
220
+ Configuration.new(http_client_instance: http_client_instance,
221
+ timeout: timeout, max_retries: max_retries,
227
222
  retry_interval: retry_interval,
228
223
  backoff_factor: backoff_factor,
229
224
  retry_statuses: retry_statuses,
@@ -3,17 +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
7
- attr_reader :timeout
8
- attr_reader :max_retries
9
- attr_reader :retry_interval
10
- attr_reader :backoff_factor
11
- attr_reader :retry_statuses
12
- attr_reader :retry_methods
13
- attr_reader :environment
14
- attr_reader :custom_url
15
- attr_reader :square_version
16
- attr_reader :access_token
6
+ attr_reader :http_client, :http_client_instance, :timeout, :max_retries, :retry_interval,
7
+ :backoff_factor, :retry_statuses, :retry_methods, :environment, :custom_url,
8
+ :square_version, :access_token
17
9
 
18
10
  def additional_headers
19
11
  @additional_headers.clone
@@ -23,13 +15,16 @@ module Square
23
15
  attr_reader :environments
24
16
  end
25
17
 
26
- def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
27
- backoff_factor: 2,
18
+ def initialize(http_client_instance: nil, timeout: 60, max_retries: 0,
19
+ retry_interval: 1, backoff_factor: 2,
28
20
  retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
29
21
  retry_methods: %i[get put], environment: 'production',
30
22
  custom_url: 'https://connect.squareup.com',
31
- square_version: '2021-07-21', access_token: 'TODO: Replace',
23
+ square_version: '2021-11-17', access_token: '',
32
24
  additional_headers: {})
25
+ # The Http Client passed from the sdk user for making requests
26
+ @http_client_instance = http_client_instance
27
+
33
28
  # The value to use for connection timeout
34
29
  @timeout = timeout
35
30
 
@@ -68,10 +63,12 @@ module Square
68
63
  @http_client = create_http_client
69
64
  end
70
65
 
71
- def clone_with(timeout: nil, max_retries: nil, retry_interval: nil,
72
- backoff_factor: nil, retry_statuses: nil, retry_methods: nil,
73
- environment: nil, custom_url: nil, square_version: nil,
74
- access_token: nil, additional_headers: nil)
66
+ def clone_with(http_client_instance: nil, timeout: nil, max_retries: nil,
67
+ retry_interval: nil, backoff_factor: nil,
68
+ retry_statuses: nil, retry_methods: nil, environment: nil,
69
+ custom_url: nil, square_version: nil, access_token: nil,
70
+ additional_headers: nil)
71
+ http_client_instance ||= self.http_client_instance
75
72
  timeout ||= self.timeout
76
73
  max_retries ||= self.max_retries
77
74
  retry_interval ||= self.retry_interval
@@ -84,7 +81,8 @@ module Square
84
81
  access_token ||= self.access_token
85
82
  additional_headers ||= self.additional_headers
86
83
 
87
- Configuration.new(timeout: timeout, max_retries: max_retries,
84
+ Configuration.new(http_client_instance: http_client_instance,
85
+ timeout: timeout, max_retries: max_retries,
88
86
  retry_interval: retry_interval,
89
87
  backoff_factor: backoff_factor,
90
88
  retry_statuses: retry_statuses,
@@ -99,7 +97,8 @@ module Square
99
97
  retry_interval: retry_interval,
100
98
  backoff_factor: backoff_factor,
101
99
  retry_statuses: retry_statuses,
102
- retry_methods: retry_methods)
100
+ retry_methods: retry_methods,
101
+ http_client_instance: http_client_instance)
103
102
  end
104
103
 
105
104
  # All the environments the SDK can run in.
@@ -25,7 +25,7 @@ module Square
25
25
  end.new(*data.values)
26
26
 
27
27
  @cursor = data.fetch(:cursor, nil)
28
- data.reject! { |k| k == :cursor || k == :errors }
28
+ data.reject! { |k| %i[cursor errors].include?(k) }
29
29
  @data = Struct.new(*data.keys).new(*data.values) if data.keys.any?
30
30
  end
31
31
  else
@@ -7,7 +7,25 @@ module Square
7
7
  # The constructor.
8
8
  def initialize(timeout:, max_retries:, retry_interval:,
9
9
  backoff_factor:, retry_statuses:, retry_methods:,
10
- cache: false, verify: true)
10
+ http_client_instance: nil, cache: false, verify: true)
11
+ if http_client_instance.nil?
12
+ create_connection(timeout: timeout, max_retries: max_retries,
13
+ retry_interval: retry_interval, backoff_factor: backoff_factor,
14
+ retry_statuses: retry_statuses, retry_methods: retry_methods,
15
+ cache: cache, verify: verify)
16
+ else
17
+ if http_client_instance.instance_variable_get('@connection').nil?
18
+ raise ArgumentError,
19
+ "`connection` cannot be nil in `#{self.class}`. Please specify a valid value."
20
+ end
21
+ @connection = http_client_instance.instance_variable_get('@connection')
22
+ end
23
+ end
24
+
25
+ # Method to initialize connection.
26
+ def create_connection(timeout:, max_retries:, retry_interval:,
27
+ backoff_factor:, retry_statuses:, retry_methods:,
28
+ cache: false, verify: true)
11
29
  @connection = Faraday.new do |faraday|
12
30
  faraday.use Faraday::HttpCache, serializer: Marshal if cache
13
31
  faraday.use FaradayMiddleware::FollowRedirects
@@ -22,8 +40,9 @@ module Square
22
40
  methods: retry_methods
23
41
  faraday.adapter Faraday.default_adapter
24
42
  faraday.options[:params_encoder] = Faraday::FlatParamsEncoder
25
- faraday.options[:timeout] = timeout if timeout > 0
43
+ faraday.options[:timeout] = timeout if timeout.positive?
26
44
  end
45
+ @connection
27
46
  end
28
47
 
29
48
  # Method overridden from HttpClient.
@@ -6,7 +6,7 @@ module Square
6
6
  # @param [DateTime] The DateTime object
7
7
  # @return [String] The rfc1123 formatted datetime string
8
8
  def self.to_rfc1123(date_time)
9
- date_time.httpdate unless date_time.nil?
9
+ date_time&.httpdate
10
10
  end
11
11
 
12
12
  # Safely converts a map of DateTime objects into a map of rfc1123 format string
@@ -86,7 +86,7 @@ module Square
86
86
  # @param [DateTime] The DateTime object
87
87
  # @return [String] The rfc3339 formatted datetime string
88
88
  def self.to_rfc3339(date_time)
89
- date_time.rfc3339 unless date_time.nil?
89
+ date_time&.rfc3339
90
90
  end
91
91
 
92
92
  # Safely converts a map of DateTime objects into a map of rfc1123 format string
@@ -1,8 +1,7 @@
1
1
  module Square
2
2
  # A utility to allow users to set the content-type for files
3
3
  class FileWrapper
4
- attr_reader :content_type
5
- attr_reader :file
4
+ attr_reader :content_type, :file
6
5
 
7
6
  def initialize(file, content_type: 'application/octet-stream')
8
7
  @file = file