square.rb 26.1.0.20230119 → 27.0.0.20230419

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -0
  3. data/lib/square/api/apple_pay_api.rb +14 -30
  4. data/lib/square/api/bank_accounts_api.rb +40 -90
  5. data/lib/square/api/base_api.rb +42 -42
  6. data/lib/square/api/booking_custom_attributes_api.rb +171 -336
  7. data/lib/square/api/bookings_api.rb +140 -263
  8. data/lib/square/api/cards_api.rb +58 -120
  9. data/lib/square/api/cash_drawers_api.rb +47 -103
  10. data/lib/square/api/catalog_api.rb +200 -426
  11. data/lib/square/api/checkout_api.rb +86 -176
  12. data/lib/square/api/customer_custom_attributes_api.rb +157 -310
  13. data/lib/square/api/customer_groups_api.rb +69 -145
  14. data/lib/square/api/customer_segments_api.rb +26 -61
  15. data/lib/square/api/customers_api.rb +147 -294
  16. data/lib/square/api/devices_api.rb +42 -89
  17. data/lib/square/api/disputes_api.rb +132 -290
  18. data/lib/square/api/employees_api.rb +28 -63
  19. data/lib/square/api/gift_card_activities_api.rb +34 -66
  20. data/lib/square/api/gift_cards_api.rb +109 -207
  21. data/lib/square/api/inventory_api.rb +204 -391
  22. data/lib/square/api/invoices_api.rb +121 -240
  23. data/lib/square/api/labor_api.rb +223 -459
  24. data/lib/square/api/location_custom_attributes_api.rb +173 -338
  25. data/lib/square/api/locations_api.rb +54 -112
  26. data/lib/square/api/loyalty_api.rb +283 -535
  27. data/lib/square/api/merchants_api.rb +25 -60
  28. data/lib/square/api/mobile_authorization_api.rb +14 -30
  29. data/lib/square/api/o_auth_api.rb +54 -109
  30. data/lib/square/api/order_custom_attributes_api.rb +174 -339
  31. data/lib/square/api/orders_api.rb +115 -222
  32. data/lib/square/api/payments_api.rb +118 -217
  33. data/lib/square/api/payouts_api.rb +54 -107
  34. data/lib/square/api/refunds_api.rb +59 -104
  35. data/lib/square/api/sites_api.rb +11 -28
  36. data/lib/square/api/snippets_api.rb +42 -90
  37. data/lib/square/api/subscriptions_api.rb +150 -299
  38. data/lib/square/api/team_api.rb +114 -224
  39. data/lib/square/api/terminal_api.rb +162 -328
  40. data/lib/square/api/transactions_api.rb +64 -128
  41. data/lib/square/api/v1_transactions_api.rb +155 -296
  42. data/lib/square/api/vendors_api.rb +100 -193
  43. data/lib/square/api/webhook_subscriptions_api.rb +124 -244
  44. data/lib/square/api_helper.rb +1 -437
  45. data/lib/square/client.rb +77 -47
  46. data/lib/square/configuration.rb +28 -53
  47. data/lib/square/exceptions/api_exception.rb +1 -11
  48. data/lib/square/http/api_response.rb +13 -19
  49. data/lib/square/http/auth/o_auth2.rb +14 -7
  50. data/lib/square/http/http_call_back.rb +1 -15
  51. data/lib/square/http/http_method_enum.rb +1 -4
  52. data/lib/square/http/http_request.rb +1 -45
  53. data/lib/square/http/http_response.rb +1 -20
  54. data/lib/square/utilities/date_time_helper.rb +1 -146
  55. data/lib/square/utilities/file_wrapper.rb +5 -5
  56. data/lib/square.rb +6 -6
  57. data/spec/user_journey_spec.rb +2 -2
  58. data/test/api/api_test_base.rb +13 -5
  59. data/test/api/test_catalog_api.rb +5 -4
  60. data/test/api/test_customers_api.rb +3 -2
  61. data/test/api/test_employees_api.rb +4 -3
  62. data/test/api/test_labor_api.rb +6 -5
  63. data/test/api/test_locations_api.rb +3 -2
  64. data/test/api/test_merchants_api.rb +4 -3
  65. data/test/api/test_payments_api.rb +4 -3
  66. data/test/api/test_refunds_api.rb +4 -3
  67. metadata +11 -111
  68. data/lib/square/exceptions/validation_exception.rb +0 -13
  69. data/lib/square/http/faraday_client.rb +0 -93
  70. data/lib/square/http/http_client.rb +0 -118
  71. data/test/test_helper.rb +0 -89
metadata CHANGED
@@ -1,153 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: square.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 26.1.0.20230119
4
+ version: 27.0.0.20230419
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: 2023-01-19 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logging
14
+ name: apimatic_core_interfaces
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.3'
19
+ version: 0.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.3'
26
+ version: 0.1.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: faraday
28
+ name: apimatic_core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 2.0.1
37
- type: :runtime
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: '2.0'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 2.0.1
47
- - !ruby/object:Gem::Dependency
48
- name: faraday-follow_redirects
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '0.2'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '0.2'
61
- - !ruby/object:Gem::Dependency
62
- name: faraday-multipart
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '1.0'
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.0'
75
- - !ruby/object:Gem::Dependency
76
- name: faraday-gzip
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '0.1'
33
+ version: 0.2.0
82
34
  type: :runtime
83
35
  prerelease: false
84
36
  version_requirements: !ruby/object:Gem::Requirement
85
37
  requirements:
86
38
  - - "~>"
87
39
  - !ruby/object:Gem::Version
88
- version: '0.1'
89
- - !ruby/object:Gem::Dependency
90
- name: faraday-retry
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1.0'
96
- type: :runtime
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1.0'
103
- - !ruby/object:Gem::Dependency
104
- name: faraday-net_http_persistent
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '2.0'
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '2.0'
117
- - !ruby/object:Gem::Dependency
118
- name: certifi
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '2018.1'
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: 2018.01.18
127
- type: :runtime
128
- prerelease: false
129
- version_requirements: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: '2018.1'
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- version: 2018.01.18
40
+ version: 0.2.0
137
41
  - !ruby/object:Gem::Dependency
138
- name: faraday-http-cache
42
+ name: apimatic_faraday_client_adapter
139
43
  requirement: !ruby/object:Gem::Requirement
140
44
  requirements:
141
45
  - - "~>"
142
46
  - !ruby/object:Gem::Version
143
- version: '2.2'
47
+ version: 0.1.0
144
48
  type: :runtime
145
49
  prerelease: false
146
50
  version_requirements: !ruby/object:Gem::Requirement
147
51
  requirements:
148
52
  - - "~>"
149
53
  - !ruby/object:Gem::Version
150
- version: '2.2'
54
+ version: 0.1.0
151
55
  - !ruby/object:Gem::Dependency
152
56
  name: minitest
153
57
  requirement: !ruby/object:Gem::Requirement
@@ -237,12 +141,9 @@ files:
237
141
  - lib/square/client.rb
238
142
  - lib/square/configuration.rb
239
143
  - lib/square/exceptions/api_exception.rb
240
- - lib/square/exceptions/validation_exception.rb
241
144
  - lib/square/http/api_response.rb
242
145
  - lib/square/http/auth/o_auth2.rb
243
- - lib/square/http/faraday_client.rb
244
146
  - lib/square/http/http_call_back.rb
245
- - lib/square/http/http_client.rb
246
147
  - lib/square/http/http_method_enum.rb
247
148
  - lib/square/http/http_request.rb
248
149
  - lib/square/http/http_response.rb
@@ -259,7 +160,6 @@ files:
259
160
  - test/api/test_payments_api.rb
260
161
  - test/api/test_refunds_api.rb
261
162
  - test/http_response_catcher.rb
262
- - test/test_helper.rb
263
163
  homepage: ''
264
164
  licenses:
265
165
  - Apache-2.0
@@ -1,13 +0,0 @@
1
- module Square
2
- # Class for exceptions when there is a schema validation error.
3
- class ValidationException < StandardError
4
- attr_reader :reason
5
-
6
- # The constructor.
7
- # @param [String] The reason for raising an exception.
8
- def initialize(value, template)
9
- @reason = "The value #{value} provided doesn't validate against the schema #{template}"
10
- super(reason)
11
- end
12
- end
13
- end
@@ -1,93 +0,0 @@
1
- require 'faraday/http_cache'
2
- require 'faraday/retry'
3
- require 'faraday/multipart'
4
- require 'faraday/follow_redirects'
5
- require 'faraday/gzip'
6
- require 'faraday/net_http_persistent'
7
-
8
- module Square
9
- # An implementation of HttpClient.
10
- class FaradayClient < HttpClient
11
- # The attribute readers for properties.
12
- attr_reader :connection
13
-
14
- # The constructor.
15
- def initialize(timeout:, max_retries:, retry_interval:,
16
- backoff_factor:, retry_statuses:, retry_methods:,
17
- connection:, adapter:, cache: false, verify: true)
18
- @connection = if connection.nil?
19
- create_connection(timeout: timeout, max_retries: max_retries,
20
- retry_interval: retry_interval, backoff_factor: backoff_factor,
21
- retry_statuses: retry_statuses, retry_methods: retry_methods,
22
- adapter: adapter, cache: cache, verify: verify)
23
- else
24
- connection
25
- end
26
- end
27
-
28
- # Method to initialize connection.
29
- def create_connection(timeout:, max_retries:, retry_interval:,
30
- backoff_factor:, retry_statuses:, retry_methods:,
31
- adapter:, cache: false, verify: true)
32
- Faraday.new do |faraday|
33
- faraday.use Faraday::HttpCache, serializer: Marshal if cache
34
- faraday.use Faraday::FollowRedirects::Middleware
35
- faraday.request :gzip
36
- faraday.request :multipart
37
- faraday.request :url_encoded
38
- faraday.ssl[:ca_file] = Certifi.where
39
- faraday.ssl[:verify] = verify
40
- faraday.request :retry, max: max_retries, interval: retry_interval,
41
- backoff_factor: backoff_factor,
42
- retry_statuses: retry_statuses,
43
- methods: retry_methods,
44
- retry_if: proc { |env, _exc|
45
- env.request.context['forced_retry'] ||= false
46
- }
47
- faraday.adapter adapter
48
- faraday.options[:params_encoder] = Faraday::FlatParamsEncoder
49
- faraday.options[:timeout] = timeout if timeout.positive?
50
- end
51
- end
52
-
53
- # Method overridden from HttpClient.
54
- def execute_as_string(http_request)
55
- response = @connection.send(
56
- http_request.http_method.downcase,
57
- http_request.query_url
58
- ) do |request|
59
- request.headers = http_request.headers.map { |k, v| [k.to_s, v.to_s] }
60
- request.options.context ||= {}
61
- request.options.context.merge!(http_request.context)
62
- unless http_request.http_method == HttpMethodEnum::GET &&
63
- http_request.parameters.empty?
64
- request.body = http_request.parameters
65
- end
66
- end
67
- convert_response(response, http_request)
68
- end
69
-
70
- # Method overridden from HttpClient.
71
- def execute_as_binary(http_request)
72
- response = @connection.send(
73
- http_request.http_method.downcase,
74
- http_request.query_url
75
- ) do |request|
76
- request.headers = http_request.headers
77
- request.options.context ||= {}
78
- request.options.context.merge!(http_request.context)
79
- unless http_request.http_method == HttpMethodEnum::GET &&
80
- http_request.parameters.empty?
81
- request.body = http_request.parameters
82
- end
83
- end
84
- convert_response(response, http_request)
85
- end
86
-
87
- # Method overridden from HttpClient.
88
- def convert_response(response, http_request)
89
- HttpResponse.new(response.status, response.reason_phrase,
90
- response.headers, response.body, http_request)
91
- end
92
- end
93
- end
@@ -1,118 +0,0 @@
1
- module Square
2
- # An interface for the methods that an HTTP Client must implement.
3
- #
4
- # This class should not be instantiated but should be used as a base class
5
- # for HTTP Client classes.
6
- class HttpClient
7
- # Execute an HttpRequest when the response is expected to be a string.
8
- # @param [HttpRequest] The HttpRequest to be executed.
9
- def execute_as_string(_http_request)
10
- raise NotImplementedError, 'This method needs
11
- to be implemented in a child class.'
12
- end
13
-
14
- # Execute an HttpRequest when the response is expected to be binary.
15
- # @param [HttpRequest] The HttpRequest to be executed.
16
- def execute_as_binary(_http_request)
17
- raise NotImplementedError, 'This method needs
18
- to be implemented in a child class.'
19
- end
20
-
21
- # Converts the HTTP Response from the client to an HttpResponse object.
22
- # @param [Dynamic] The response object received from the client.
23
- def convert_response(_response)
24
- raise NotImplementedError, 'This method needs
25
- to be implemented in a child class.'
26
- end
27
-
28
- # Get a GET HttpRequest object.
29
- # @param [String] The URL to send the request to.
30
- # @param [Hash, Optional] The headers for the HTTP Request.
31
- # @param [Hash, Optional] The context for the HTTP Request.
32
- def get(query_url,
33
- headers: {},
34
- context: {})
35
- HttpRequest.new(HttpMethodEnum::GET,
36
- query_url,
37
- headers: headers,
38
- context: context)
39
- end
40
-
41
- # Get a HEAD HttpRequest object.
42
- # @param [String] The URL to send the request to.
43
- # @param [Hash, Optional] The headers for the HTTP Request.
44
- # @param [Hash, Optional] The context for the HTTP Request.
45
- def head(query_url,
46
- headers: {},
47
- context: {})
48
- HttpRequest.new(HttpMethodEnum::HEAD,
49
- query_url,
50
- headers: headers,
51
- context: context)
52
- end
53
-
54
- # Get a POST HttpRequest object.
55
- # @param [String] The URL to send the request to.
56
- # @param [Hash, Optional] The headers for the HTTP Request.
57
- # @param [Hash, Optional] The parameters for the HTTP Request.
58
- # @param [Hash, Optional] The context for the HTTP Request.
59
- def post(query_url,
60
- headers: {},
61
- parameters: {},
62
- context: {})
63
- HttpRequest.new(HttpMethodEnum::POST,
64
- query_url,
65
- headers: headers,
66
- parameters: parameters,
67
- context: context)
68
- end
69
-
70
- # Get a PUT HttpRequest object.
71
- # @param [String] The URL to send the request to.
72
- # @param [Hash, Optional] The headers for the HTTP Request.
73
- # @param [Hash, Optional] The parameters for the HTTP Request.
74
- # @param [Hash, Optional] The context for the HTTP Request.
75
- def put(query_url,
76
- headers: {},
77
- parameters: {},
78
- context: {})
79
- HttpRequest.new(HttpMethodEnum::PUT,
80
- query_url,
81
- headers: headers,
82
- parameters: parameters,
83
- context: context)
84
- end
85
-
86
- # Get a PATCH HttpRequest object.
87
- # @param [String] The URL to send the request to.
88
- # @param [Hash, Optional] The headers for the HTTP Request.
89
- # @param [Hash, Optional] The parameters for the HTTP Request.
90
- # @param [Hash, Optional] The context for the HTTP Request.
91
- def patch(query_url,
92
- headers: {},
93
- parameters: {},
94
- context: {})
95
- HttpRequest.new(HttpMethodEnum::PATCH,
96
- query_url,
97
- headers: headers,
98
- parameters: parameters,
99
- context: context)
100
- end
101
-
102
- # Get a DELETE HttpRequest object.
103
- # @param [String] The URL to send the request to.
104
- # @param [Hash, Optional] The headers for the HTTP Request.
105
- # @param [Hash, Optional] The parameters for the HTTP Request.
106
- # @param [Hash, Optional] The context for the HTTP Request.
107
- def delete(query_url,
108
- headers: {},
109
- parameters: nil,
110
- context: {})
111
- HttpRequest.new(HttpMethodEnum::DELETE,
112
- query_url,
113
- headers: headers,
114
- parameters: parameters,
115
- context: context)
116
- end
117
- end
118
- end
data/test/test_helper.rb DELETED
@@ -1,89 +0,0 @@
1
- require 'tempfile'
2
- require 'open-uri'
3
-
4
- class TestHelper
5
-
6
- @cache = Hash.new
7
-
8
- # Class method to compare the received headers with the expected headers.
9
- # @param [Hash] A hash of expected headers (keys in lower case).
10
- # @param [Hash] A hash of received headers.
11
- # @param [Boolean, optional] A flag which determines if we allow extra headers.
12
- def self.match_headers(expected_headers,
13
- received_headers,
14
- allow_extra: true)
15
- return false if ((received_headers.length < expected_headers.length) ||
16
- ((allow_extra == false) && (received_headers.length > expected_headers.length)))
17
-
18
- received_headers = Hash[received_headers.map{|k, v| [k.to_s.downcase, v]}]
19
- expected_headers.each do |e_key, e_value|
20
- return false unless received_headers.key?(e_key)
21
- return false if ((e_value != nil) &&
22
- (e_value != received_headers[e_key]))
23
- end
24
-
25
- return true
26
- end
27
-
28
- # Class method to compare the received body with the expected body.
29
- # @param [Dynamic] The expected body.
30
- # @param [Dynamic] The received body.
31
- # @param [Boolean, optional] A flag which determines if we check values in dictionaries.
32
- # @param [Boolean, optional] A flag which determines if we check the order of array elements.
33
- # @param [Boolean, optional] A flag which determines if we check the count of array elements.
34
- def self.match_body(expected_body,
35
- received_body,
36
- check_values: false,
37
- check_order: false,
38
- check_count: false)
39
- if expected_body.instance_of? Hash
40
- return false unless received_body.instance_of? Hash
41
- for key in expected_body.keys
42
- return false unless received_body.keys.include? key
43
- if check_values or expected_body[key].instance_of? Hash
44
- return false unless TestHelper.match_body(expected_body[key],
45
- received_body[key],
46
- check_values: check_values,
47
- check_order: check_order,
48
- check_count: check_count)
49
- end
50
- end
51
- elsif expected_body.instance_of? Array
52
- return false unless received_body.instance_of? Array
53
- if check_count == true && (expected_body.length != received_body.length)
54
- return false
55
- else
56
- previous_matches = Array.new
57
- expected_body.each.with_index do |expected_element, i|
58
- matches = (received_body.map.with_index do |received_element, j|
59
- j if TestHelper.match_body(expected_element,
60
- received_element,
61
- check_values: check_values,
62
- check_order: check_order,
63
- check_count: check_count)
64
- end).compact
65
- return false if matches.length == 0
66
- if check_order == true
67
- return false if (i != 0 && matches.map{|x| previous_matches.map{|y| y > x}.all?}.all?)
68
- previous_matches = matches
69
- end
70
- end
71
- end
72
- elsif expected_body != received_body
73
- return false
74
- end
75
- return true
76
- end
77
-
78
- # Class method which takes a URL, downloads the file (if not already downloaded
79
- # for this test session) and returns the path of the file.
80
- # @param [String] The URL of the required file.
81
- def self.get_file(url)
82
- unless @cache.keys.include? url
83
- @cache[url] = Tempfile.new('APIMatic')
84
- @cache[url].binmode
85
- @cache[url].write(URI.open(url, {ssl_ca_cert: Certifi.where}).read)
86
- end
87
- return @cache[url].path
88
- end
89
- end