square.rb 12.0.0.20210616 → 13.0.0.20210721

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: 2899ef8f7b608c506ec04abc840c1c80f24109063086e5f756049544919e7d6e
4
- data.tar.gz: 5835b5bc55af2f9cd9618dc5d09cdc47b1d197c23cf45d8293c4f59e90521c33
3
+ metadata.gz: 0f0db97e9e88ea1a9f5f7f9db716b8f2ce36473400c34f57ec01622e2b0b584b
4
+ data.tar.gz: 999b75d8c4ded30c3895d6cecf97d18883a6018ec9b79a53b85f1bed20f56de4
5
5
  SHA512:
6
- metadata.gz: 3352454a34c03eeaebff9db1e805f8c12bf929deaf045c4b0a258caf917c5b4dad010bfd18741881c99057a254890d5f8ef4887f53360430915a3c746b3e7311
7
- data.tar.gz: ff8762e1244f9a074599fbb05b2441fbc2f16c715bfc466f8ab3c49b53d88b3664eee9622d9b44e0f8b4c5209b8eeedebaaaf284495bdd620e72f698dfcefab2
6
+ metadata.gz: 2a74a9814e8d3d9edb5f9a36439c85f41c593f91941a3938c869b602b8fa65f2cf1ce6b115f43ed65c6a76ec6d36c8e237a5f855e3d12dbe90f6c906c9c7390d
7
+ data.tar.gz: a9d2ecd07e5616d2341b095519414007ab0e4bfc5159a90e3fb7e4b9d6337add73859641da52ccda4ee4bffb8ea39a59a37f487638c931f75c0ab1c77bb4dbce
data/lib/square.rb CHANGED
@@ -9,6 +9,7 @@ require_relative 'square/client.rb'
9
9
 
10
10
  # Utilities
11
11
  require_relative 'square/utilities/file_wrapper.rb'
12
+ require_relative 'square/utilities/date_time_helper.rb'
12
13
 
13
14
  # Http
14
15
  require_relative 'square/http/api_response.rb'
@@ -8,7 +8,7 @@ module Square
8
8
  @http_call_back = http_call_back
9
9
 
10
10
  @global_headers = {
11
- 'user-agent' => 'Square-Ruby-SDK/12.0.0.20210616',
11
+ 'user-agent' => 'Square-Ruby-SDK/13.0.0.20210721',
12
12
  'Square-Version' => config.square_version
13
13
  }
14
14
  end
@@ -5,6 +5,46 @@ module Square
5
5
  super(config, http_call_back: http_call_back)
6
6
  end
7
7
 
8
+ # Deprecated version of
9
+ # [RetrieveInventoryAdjustment]($e/Inventory/RetrieveInventoryAdjustment)
10
+ # after the endpoint URL
11
+ # is updated to conform to the standard convention.
12
+ # @param [String] adjustment_id Required parameter: ID of the
13
+ # [InventoryAdjustment]($m/InventoryAdjustment) to retrieve.
14
+ # @return [RetrieveInventoryAdjustmentResponse Hash] response from the API call
15
+ def deprecated_retrieve_inventory_adjustment(adjustment_id:)
16
+ warn 'Endpoint deprecated_retrieve_inventory_adjustment in InventoryApi '\
17
+ 'is deprecated'
18
+ # Prepare query url.
19
+ _query_builder = config.get_base_uri
20
+ _query_builder << '/v2/inventory/adjustment/{adjustment_id}'
21
+ _query_builder = APIHelper.append_url_with_template_parameters(
22
+ _query_builder,
23
+ 'adjustment_id' => { 'value' => adjustment_id, 'encode' => true }
24
+ )
25
+ _query_url = APIHelper.clean_url _query_builder
26
+
27
+ # Prepare headers.
28
+ _headers = {
29
+ 'accept' => 'application/json'
30
+ }
31
+
32
+ # Prepare and execute HttpRequest.
33
+ _request = config.http_client.get(
34
+ _query_url,
35
+ headers: _headers
36
+ )
37
+ OAuth2.apply(config, _request)
38
+ _response = execute_request(_request)
39
+
40
+ # Return appropriate response type.
41
+ decoded = APIHelper.json_deserialize(_response.raw_body)
42
+ _errors = APIHelper.map_response(decoded, ['errors'])
43
+ ApiResponse.new(
44
+ _response, data: decoded, errors: _errors
45
+ )
46
+ end
47
+
8
48
  # Returns the [InventoryAdjustment]($m/InventoryAdjustment) object
9
49
  # with the provided `adjustment_id`.
10
50
  # @param [String] adjustment_id Required parameter: ID of the
@@ -13,7 +53,7 @@ module Square
13
53
  def retrieve_inventory_adjustment(adjustment_id:)
14
54
  # Prepare query url.
15
55
  _query_builder = config.get_base_uri
16
- _query_builder << '/v2/inventory/adjustment/{adjustment_id}'
56
+ _query_builder << '/v2/inventory/adjustments/{adjustment_id}'
17
57
  _query_builder = APIHelper.append_url_with_template_parameters(
18
58
  _query_builder,
19
59
  'adjustment_id' => { 'value' => adjustment_id, 'encode' => true }
@@ -41,6 +81,123 @@ module Square
41
81
  )
42
82
  end
43
83
 
84
+ # Deprecated version of
85
+ # [BatchChangeInventory]($e/Inventory/BatchChangeInventory) after the
86
+ # endpoint URL
87
+ # is updated to conform to the standard convention.
88
+ # @param [BatchChangeInventoryRequest] body Required parameter: An object
89
+ # containing the fields to POST for the request. See the corresponding
90
+ # object definition for field details.
91
+ # @return [BatchChangeInventoryResponse Hash] response from the API call
92
+ def deprecated_batch_change_inventory(body:)
93
+ warn 'Endpoint deprecated_batch_change_inventory in InventoryApi is depr'\
94
+ 'ecated'
95
+ # Prepare query url.
96
+ _query_builder = config.get_base_uri
97
+ _query_builder << '/v2/inventory/batch-change'
98
+ _query_url = APIHelper.clean_url _query_builder
99
+
100
+ # Prepare headers.
101
+ _headers = {
102
+ 'accept' => 'application/json',
103
+ 'content-type' => 'application/json; charset=utf-8'
104
+ }
105
+
106
+ # Prepare and execute HttpRequest.
107
+ _request = config.http_client.post(
108
+ _query_url,
109
+ headers: _headers,
110
+ parameters: body.to_json
111
+ )
112
+ OAuth2.apply(config, _request)
113
+ _response = execute_request(_request)
114
+
115
+ # Return appropriate response type.
116
+ decoded = APIHelper.json_deserialize(_response.raw_body)
117
+ _errors = APIHelper.map_response(decoded, ['errors'])
118
+ ApiResponse.new(
119
+ _response, data: decoded, errors: _errors
120
+ )
121
+ end
122
+
123
+ # Deprecated version of
124
+ # [BatchRetrieveInventoryChanges]($e/Inventory/BatchRetrieveInventoryChanges
125
+ # ) after the endpoint URL
126
+ # is updated to conform to the standard convention.
127
+ # @param [BatchRetrieveInventoryChangesRequest] body Required parameter: An
128
+ # object containing the fields to POST for the request. See the
129
+ # corresponding object definition for field details.
130
+ # @return [BatchRetrieveInventoryChangesResponse Hash] response from the API call
131
+ def deprecated_batch_retrieve_inventory_changes(body:)
132
+ warn 'Endpoint deprecated_batch_retrieve_inventory_changes in InventoryA'\
133
+ 'pi is deprecated'
134
+ # Prepare query url.
135
+ _query_builder = config.get_base_uri
136
+ _query_builder << '/v2/inventory/batch-retrieve-changes'
137
+ _query_url = APIHelper.clean_url _query_builder
138
+
139
+ # Prepare headers.
140
+ _headers = {
141
+ 'accept' => 'application/json',
142
+ 'content-type' => 'application/json; charset=utf-8'
143
+ }
144
+
145
+ # Prepare and execute HttpRequest.
146
+ _request = config.http_client.post(
147
+ _query_url,
148
+ headers: _headers,
149
+ parameters: body.to_json
150
+ )
151
+ OAuth2.apply(config, _request)
152
+ _response = execute_request(_request)
153
+
154
+ # Return appropriate response type.
155
+ decoded = APIHelper.json_deserialize(_response.raw_body)
156
+ _errors = APIHelper.map_response(decoded, ['errors'])
157
+ ApiResponse.new(
158
+ _response, data: decoded, errors: _errors
159
+ )
160
+ end
161
+
162
+ # Deprecated version of
163
+ # [BatchRetrieveInventoryCounts]($e/Inventory/BatchRetrieveInventoryCounts)
164
+ # after the endpoint URL
165
+ # is updated to conform to the standard convention.
166
+ # @param [BatchRetrieveInventoryCountsRequest] body Required parameter: An
167
+ # object containing the fields to POST for the request. See the
168
+ # corresponding object definition for field details.
169
+ # @return [BatchRetrieveInventoryCountsResponse Hash] response from the API call
170
+ def deprecated_batch_retrieve_inventory_counts(body:)
171
+ warn 'Endpoint deprecated_batch_retrieve_inventory_counts in InventoryAp'\
172
+ 'i is deprecated'
173
+ # Prepare query url.
174
+ _query_builder = config.get_base_uri
175
+ _query_builder << '/v2/inventory/batch-retrieve-counts'
176
+ _query_url = APIHelper.clean_url _query_builder
177
+
178
+ # Prepare headers.
179
+ _headers = {
180
+ 'accept' => 'application/json',
181
+ 'content-type' => 'application/json; charset=utf-8'
182
+ }
183
+
184
+ # Prepare and execute HttpRequest.
185
+ _request = config.http_client.post(
186
+ _query_url,
187
+ headers: _headers,
188
+ parameters: body.to_json
189
+ )
190
+ OAuth2.apply(config, _request)
191
+ _response = execute_request(_request)
192
+
193
+ # Return appropriate response type.
194
+ decoded = APIHelper.json_deserialize(_response.raw_body)
195
+ _errors = APIHelper.map_response(decoded, ['errors'])
196
+ ApiResponse.new(
197
+ _response, data: decoded, errors: _errors
198
+ )
199
+ end
200
+
44
201
  # Applies adjustments and counts to the provided item quantities.
45
202
  # On success: returns the current calculated counts for all objects
46
203
  # referenced in the request.
@@ -52,7 +209,7 @@ module Square
52
209
  def batch_change_inventory(body:)
53
210
  # Prepare query url.
54
211
  _query_builder = config.get_base_uri
55
- _query_builder << '/v2/inventory/batch-change'
212
+ _query_builder << '/v2/inventory/changes/batch-create'
56
213
  _query_url = APIHelper.clean_url _query_builder
57
214
 
58
215
  # Prepare headers.
@@ -91,7 +248,7 @@ module Square
91
248
  def batch_retrieve_inventory_changes(body:)
92
249
  # Prepare query url.
93
250
  _query_builder = config.get_base_uri
94
- _query_builder << '/v2/inventory/batch-retrieve-changes'
251
+ _query_builder << '/v2/inventory/changes/batch-retrieve'
95
252
  _query_url = APIHelper.clean_url _query_builder
96
253
 
97
254
  # Prepare headers.
@@ -134,7 +291,7 @@ module Square
134
291
  def batch_retrieve_inventory_counts(body:)
135
292
  # Prepare query url.
136
293
  _query_builder = config.get_base_uri
137
- _query_builder << '/v2/inventory/batch-retrieve-counts'
294
+ _query_builder << '/v2/inventory/counts/batch-retrieve'
138
295
  _query_url = APIHelper.clean_url _query_builder
139
296
 
140
297
  # Prepare headers.
@@ -160,6 +317,46 @@ module Square
160
317
  )
161
318
  end
162
319
 
320
+ # Deprecated version of
321
+ # [RetrieveInventoryPhysicalCount]($e/Inventory/RetrieveInventoryPhysicalCou
322
+ # nt) after the endpoint URL
323
+ # is updated to conform to the standard convention.
324
+ # @param [String] physical_count_id Required parameter: ID of the
325
+ # [InventoryPhysicalCount]($m/InventoryPhysicalCount) to retrieve.
326
+ # @return [RetrieveInventoryPhysicalCountResponse Hash] response from the API call
327
+ def deprecated_retrieve_inventory_physical_count(physical_count_id:)
328
+ warn 'Endpoint deprecated_retrieve_inventory_physical_count in Inventory'\
329
+ 'Api is deprecated'
330
+ # Prepare query url.
331
+ _query_builder = config.get_base_uri
332
+ _query_builder << '/v2/inventory/physical-count/{physical_count_id}'
333
+ _query_builder = APIHelper.append_url_with_template_parameters(
334
+ _query_builder,
335
+ 'physical_count_id' => { 'value' => physical_count_id, 'encode' => true }
336
+ )
337
+ _query_url = APIHelper.clean_url _query_builder
338
+
339
+ # Prepare headers.
340
+ _headers = {
341
+ 'accept' => 'application/json'
342
+ }
343
+
344
+ # Prepare and execute HttpRequest.
345
+ _request = config.http_client.get(
346
+ _query_url,
347
+ headers: _headers
348
+ )
349
+ OAuth2.apply(config, _request)
350
+ _response = execute_request(_request)
351
+
352
+ # Return appropriate response type.
353
+ decoded = APIHelper.json_deserialize(_response.raw_body)
354
+ _errors = APIHelper.map_response(decoded, ['errors'])
355
+ ApiResponse.new(
356
+ _response, data: decoded, errors: _errors
357
+ )
358
+ end
359
+
163
360
  # Returns the [InventoryPhysicalCount]($m/InventoryPhysicalCount)
164
361
  # object with the provided `physical_count_id`.
165
362
  # @param [String] physical_count_id Required parameter: ID of the
@@ -168,7 +365,7 @@ module Square
168
365
  def retrieve_inventory_physical_count(physical_count_id:)
169
366
  # Prepare query url.
170
367
  _query_builder = config.get_base_uri
171
- _query_builder << '/v2/inventory/physical-count/{physical_count_id}'
368
+ _query_builder << '/v2/inventory/physical-counts/{physical_count_id}'
172
369
  _query_builder = APIHelper.append_url_with_template_parameters(
173
370
  _query_builder,
174
371
  'physical_count_id' => { 'value' => physical_count_id, 'encode' => true }
@@ -196,6 +393,42 @@ module Square
196
393
  )
197
394
  end
198
395
 
396
+ # Returns the [InventoryTransfer]($m/InventoryTransfer) object
397
+ # with the provided `transfer_id`.
398
+ # @param [String] transfer_id Required parameter: ID of the
399
+ # [InventoryTransfer]($m/InventoryTransfer) to retrieve.
400
+ # @return [RetrieveInventoryTransferResponse Hash] response from the API call
401
+ def retrieve_inventory_transfer(transfer_id:)
402
+ # Prepare query url.
403
+ _query_builder = config.get_base_uri
404
+ _query_builder << '/v2/inventory/transfers/{transfer_id}'
405
+ _query_builder = APIHelper.append_url_with_template_parameters(
406
+ _query_builder,
407
+ 'transfer_id' => { 'value' => transfer_id, 'encode' => true }
408
+ )
409
+ _query_url = APIHelper.clean_url _query_builder
410
+
411
+ # Prepare headers.
412
+ _headers = {
413
+ 'accept' => 'application/json'
414
+ }
415
+
416
+ # Prepare and execute HttpRequest.
417
+ _request = config.http_client.get(
418
+ _query_url,
419
+ headers: _headers
420
+ )
421
+ OAuth2.apply(config, _request)
422
+ _response = execute_request(_request)
423
+
424
+ # Return appropriate response type.
425
+ decoded = APIHelper.json_deserialize(_response.raw_body)
426
+ _errors = APIHelper.map_response(decoded, ['errors'])
427
+ ApiResponse.new(
428
+ _response, data: decoded, errors: _errors
429
+ )
430
+ end
431
+
199
432
  # Retrieves the current calculated stock count for a given
200
433
  # [CatalogObject]($m/CatalogObject) at a given set of
201
434
  # [Location]($m/Location)s. Responses are paginated and unsorted.
@@ -252,6 +485,11 @@ module Square
252
485
  # Returns a set of physical counts and inventory adjustments for the
253
486
  # provided [CatalogObject]($m/CatalogObject) at the requested
254
487
  # [Location]($m/Location)s.
488
+ # You can achieve the same result by calling
489
+ # [BatchRetrieveInventoryChanges]($e/Inventory/BatchRetrieveInventoryChanges
490
+ # )
491
+ # and having the `catalog_object_ids` list contain a single element of the
492
+ # `CatalogObject` ID.
255
493
  # Results are paginated and sorted in descending order according to their
256
494
  # `occurred_at` timestamp (newest first).
257
495
  # There are no limits on how far back the caller can page. This endpoint can
@@ -272,6 +510,7 @@ module Square
272
510
  def retrieve_inventory_changes(catalog_object_id:,
273
511
  location_ids: nil,
274
512
  cursor: nil)
513
+ warn 'Endpoint retrieve_inventory_changes in InventoryApi is deprecated'
275
514
  # Prepare query url.
276
515
  _query_builder = config.get_base_uri
277
516
  _query_builder << '/v2/inventory/{catalog_object_id}/changes'
@@ -120,12 +120,16 @@ module Square
120
120
  # account.
121
121
  # - If you are not using the Orders API to manage orders,
122
122
  # you first perform a client-side computation to compute the points.
123
- # For spend-based and visit-based programs, you can call
123
+ # For spend-based and visit-based programs, you can first call
124
124
  # [CalculateLoyaltyPoints]($e/Loyalty/CalculateLoyaltyPoints) to compute the
125
- # points. For more information,
126
- # see [Loyalty Program
127
- # Overview](https://developer.squareup.com/docs/loyalty/overview).
128
- # You then provide the points in a request to this endpoint.
125
+ # points
126
+ # that you provide to this endpoint.
127
+ # __Note:__ The country of the seller's Square account determines whether
128
+ # tax is included in the purchase amount when accruing points for
129
+ # spend-based and visit-based programs.
130
+ # For more information, see [Availability of Square
131
+ # Loyalty](https://developer.squareup.com/docs/loyalty-api/overview#loyalty-
132
+ # market-availability).
129
133
  # @param [String] account_id Required parameter: The [loyalty
130
134
  # account]($m/LoyaltyAccount) ID to which to add the points.
131
135
  # @param [AccumulateLoyaltyPointsRequest] body Required parameter: An object
@@ -341,6 +345,12 @@ module Square
341
345
  # An application might call this endpoint to show the points that a buyer
342
346
  # can earn with the
343
347
  # specific purchase.
348
+ # __Note:__ The country of the seller's Square account determines whether
349
+ # tax is included in the purchase amount when accruing points for
350
+ # spend-based and visit-based programs.
351
+ # For more information, see [Availability of Square
352
+ # Loyalty](https://developer.squareup.com/docs/loyalty-api/overview#loyalty-
353
+ # market-availability).
344
354
  # @param [String] program_id Required parameter: The [loyalty
345
355
  # program]($m/LoyaltyProgram) ID, which defines the rules for accruing
346
356
  # points.
@@ -265,17 +265,5 @@ module Square
265
265
  end
266
266
  val
267
267
  end
268
-
269
- # Safely converts a string into an rfc3339 DateTime object
270
- # @param [String] The datetime string
271
- # @return [DateTime] A DateTime object of rfc3339 format
272
- def self.rfc3339(date_time)
273
- # missing timezone information
274
- if date_time.end_with?('Z') || date_time.index('+')
275
- DateTime.rfc3339(date_time)
276
- else
277
- DateTime.rfc3339(date_time + 'Z')
278
- end
279
- end
280
268
  end
281
269
  end
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
- '12.0.0.20210616'
7
+ '13.0.0.20210721'
8
8
  end
9
9
 
10
10
  def square_version
@@ -220,7 +220,7 @@ module Square
220
220
  retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
221
221
  retry_methods: %i[get put], environment: 'production',
222
222
  custom_url: 'https://connect.squareup.com',
223
- square_version: '2021-06-16', access_token: 'TODO: Replace',
223
+ square_version: '2021-07-21', access_token: 'TODO: Replace',
224
224
  additional_headers: {}, config: nil)
225
225
  @config = if config.nil?
226
226
  Configuration.new(timeout: timeout, max_retries: max_retries,
@@ -28,7 +28,7 @@ module Square
28
28
  retry_statuses: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
29
29
  retry_methods: %i[get put], environment: 'production',
30
30
  custom_url: 'https://connect.squareup.com',
31
- square_version: '2021-06-16', access_token: 'TODO: Replace',
31
+ square_version: '2021-07-21', access_token: 'TODO: Replace',
32
32
  additional_headers: {})
33
33
  # The value to use for connection timeout
34
34
  @timeout = timeout
@@ -0,0 +1,151 @@
1
+ require 'date'
2
+ module Square
3
+ # A utility that supports dateTime conversion to different formats
4
+ class DateTimeHelper
5
+ # Safely converts a DateTime object into a rfc1123 format string
6
+ # @param [DateTime] The DateTime object
7
+ # @return [String] The rfc1123 formatted datetime string
8
+ def self.to_rfc1123(date_time)
9
+ date_time.httpdate unless date_time.nil?
10
+ end
11
+
12
+ # Safely converts a map of DateTime objects into a map of rfc1123 format string
13
+ # @param [hash] a map of DateTime objects
14
+ # @return [hash] a map of rfc1123 formatted datetime string
15
+ def self.to_rfc1123_map(date_time, hash, key)
16
+ return if date_time.nil?
17
+
18
+ hash[key] = {}
19
+ date_time.each do |k, v|
20
+ hash[key][k] =
21
+ if v.is_a?(BaseModel)
22
+ v.to_hash
23
+ else
24
+ v.is_a?(DateTime) ? DateTimeHelper.to_rfc1123(v) : v
25
+ end
26
+ end
27
+ hash[key]
28
+ end
29
+
30
+ # Safely converts an array of DateTime objects into an array of rfc1123 format string
31
+ # @param [Array] an array of DateTime objects
32
+ # @return [Array] an array of rfc1123 formatted datetime string
33
+ def self.to_rfc1123_array(date_time, hash, key)
34
+ return if date_time.nil?
35
+
36
+ hash[key] = date_time.map do |v|
37
+ if v.is_a?(BaseModel)
38
+ v.to_hash
39
+ else
40
+ v.is_a?(DateTime) ? DateTimeHelper.to_rfc1123(v) : v
41
+ end
42
+ end
43
+ end
44
+
45
+ # Safely converts a DateTime object into a unix format string
46
+ # @param [DateTime] The DateTime object
47
+ # @return [String] The unix formatted datetime string
48
+ def self.to_unix(date_time)
49
+ date_time.to_time.utc.to_i unless date_time.nil?
50
+ end
51
+
52
+ # Safely converts a map of DateTime objects into a map of unix format string
53
+ # @param [hash] a map of DateTime objects
54
+ # @return [hash] a map of unix formatted datetime string
55
+ def self.to_unix_map(date_time, hash, key)
56
+ return if date_time.nil?
57
+
58
+ hash[key] = {}
59
+ date_time.each do |k, v|
60
+ hash[key][k] =
61
+ if v.is_a?(BaseModel)
62
+ v.to_hash
63
+ else
64
+ v.is_a?(DateTime) ? DateTimeHelper.to_unix(v) : v
65
+ end
66
+ end
67
+ hash[key]
68
+ end
69
+
70
+ # Safely converts an array of DateTime objects into a map of unix format string
71
+ # @param [hash] an array of DateTime objects
72
+ # @return [hash] an array of unix formatted datetime string
73
+ def self.to_unix_array(date_time, hash, key)
74
+ return if date_time.nil?
75
+
76
+ hash[key] = date_time.map do |v|
77
+ if v.is_a?(BaseModel)
78
+ v.to_hash
79
+ else
80
+ v.is_a?(DateTime) ? DateTimeHelper.to_unix(v) : v
81
+ end
82
+ end
83
+ end
84
+
85
+ # Safely converts a DateTime object into a rfc3339 format string
86
+ # @param [DateTime] The DateTime object
87
+ # @return [String] The rfc3339 formatted datetime string
88
+ def self.to_rfc3339(date_time)
89
+ date_time.rfc3339 unless date_time.nil?
90
+ end
91
+
92
+ # Safely converts a map of DateTime objects into a map of rfc1123 format string
93
+ # @param [hash] a map of DateTime objects
94
+ # @return [hash] a map of rfc1123 formatted datetime string
95
+ def self.to_rfc3339_map(date_time, hash, key)
96
+ return if date_time.nil?
97
+
98
+ hash[key] = {}
99
+ date_time.each do |k, v|
100
+ hash[key][k] =
101
+ if v.is_a?(BaseModel)
102
+ v.to_hash
103
+ else
104
+ v.is_a?(DateTime) ? DateTimeHelper.to_rfc3339(v) : v
105
+ end
106
+ end
107
+ hash[key]
108
+ end
109
+
110
+ # Safely converts an array of DateTime objects into an array of rfc1123 format string
111
+ # @param [Array] an array of DateTime objects
112
+ # @return [Array] an array of rfc1123 formatted datetime string
113
+ def self.to_rfc3339_array(date_time, hash, key)
114
+ return if date_time.nil?
115
+
116
+ hash[key] = date_time.map do |v|
117
+ if v.is_a?(BaseModel)
118
+ v.to_hash
119
+ else
120
+ v.is_a?(DateTime) ? DateTimeHelper.to_rfc3339(v) : v
121
+ end
122
+ end
123
+ end
124
+
125
+ # Safely converts a rfc1123 format string into a DateTime object
126
+ # @param [String] The rfc1123 formatted datetime string
127
+ # @return [DateTime] A DateTime object
128
+ def self.from_rfc1123(date_time)
129
+ DateTime.httpdate(date_time)
130
+ end
131
+
132
+ # Safely converts a unix format string into a DateTime object
133
+ # @param [String] The unix formatted datetime string
134
+ # @return [DateTime] A DateTime object
135
+ def self.from_unix(date_time)
136
+ Time.at(date_time.to_i).utc.to_datetime
137
+ end
138
+
139
+ # Safely converts a rfc3339 format string into a DateTime object
140
+ # @param [String] The rfc3339 formatted datetime string
141
+ # @return [DateTime] A DateTime object
142
+ def self.from_rfc3339(date_time)
143
+ # missing timezone information
144
+ if date_time.end_with?('Z') || date_time.index('+')
145
+ DateTime.rfc3339(date_time)
146
+ else
147
+ DateTime.rfc3339("#{date_time}Z")
148
+ end
149
+ end
150
+ end
151
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: square.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.0.0.20210616
4
+ version: 13.0.0.20210721
5
5
  platform: ruby
6
6
  authors:
7
7
  - Square Developer Platform
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-15 00:00:00.000000000 Z
11
+ date: 2021-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -183,6 +183,7 @@ files:
183
183
  - lib/square/http/http_method_enum.rb
184
184
  - lib/square/http/http_request.rb
185
185
  - lib/square/http/http_response.rb
186
+ - lib/square/utilities/date_time_helper.rb
186
187
  - lib/square/utilities/file_wrapper.rb
187
188
  - spec/user_journey_spec.rb
188
189
  - test/api/api_test_base.rb