currency_cloud 1.7.0 → 1.8.0

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/currency_cloud.gemspec +1 -1
  4. data/lib/currency_cloud/client.rb +2 -2
  5. data/lib/currency_cloud/payment.rb +21 -0
  6. data/lib/currency_cloud/payment_submission_info.rb +5 -0
  7. data/lib/currency_cloud/payment_validation_result.rb +19 -0
  8. data/lib/currency_cloud/request_handler.rb +14 -3
  9. data/lib/currency_cloud/version.rb +1 -1
  10. data/spec/integration/errors_spec.rb +12 -4
  11. data/spec/integration/payments_spec.rb +30 -0
  12. data/spec/support/vcr_cassettes/Accounts/can_retrieve_account_payment_charges_settings.yml +2 -2
  13. data/spec/support/vcr_cassettes/Accounts/can_update_account_payment_charges_settings.yml +2 -2
  14. data/spec/support/vcr_cassettes/Conversions/can_cancel_conversion/with_notes/has_a_non-empty_notes_attribute.yml +3 -3
  15. data/spec/support/vcr_cassettes/Conversions/can_cancel_conversion/without_notes/has_a_empty_notes_attribute.yml +3 -3
  16. data/spec/support/vcr_cassettes/Conversions/can_cancellation_quote.yml +2 -2
  17. data/spec/support/vcr_cassettes/Conversions/can_date_change_conversion.yml +3 -3
  18. data/spec/support/vcr_cassettes/Conversions/can_retrieve_cancellation_quote.yml +3 -3
  19. data/spec/support/vcr_cassettes/Conversions/can_retrieve_date_change_quote.yml +3 -3
  20. data/spec/support/vcr_cassettes/Conversions/can_retrieve_profit_and_loss.yml +2 -2
  21. data/spec/support/vcr_cassettes/Conversions/can_split_conversion.yml +3 -3
  22. data/spec/support/vcr_cassettes/Conversions/can_split_history.yml +3 -3
  23. data/spec/support/vcr_cassettes/Conversions/can_split_preview.yml +3 -3
  24. data/spec/support/vcr_cassettes/FundingAccounts/can_find.yml +2 -2
  25. data/spec/support/vcr_cassettes/FundingAccounts/can_find_bad_request.yml +2 -2
  26. data/spec/support/vcr_cassettes/FundingAccounts/can_find_missing_currency.yml +2 -2
  27. data/spec/support/vcr_cassettes/FundingAccounts/can_find_unauthorized.yml +1 -1
  28. data/spec/support/vcr_cassettes/IBANs/can_IBANs_for_a_specific_subaccount.yml +2 -2
  29. data/spec/support/vcr_cassettes/IBANs/can_IBANs_for_subaccounts.yml +2 -2
  30. data/spec/support/vcr_cassettes/IBANs/can_find.yml +1 -1
  31. data/spec/support/vcr_cassettes/Payments/can_authorise/when_payment_ids_are_valid.yml +5 -5
  32. data/spec/support/vcr_cassettes/Payments/can_create.yml +3 -3
  33. data/spec/support/vcr_cassettes/Payments/can_create_bad_request.yml +2 -2
  34. data/spec/support/vcr_cassettes/Payments/can_get_the_new_submission.yml +205 -0
  35. data/spec/support/vcr_cassettes/Payments/can_get_the_submission.yml +4 -4
  36. data/spec/support/vcr_cassettes/Payments/can_retrieve_confirmation.yml +3 -3
  37. data/spec/support/vcr_cassettes/Payments/can_retrieve_payment_delivery_date.yml +2 -2
  38. data/spec/support/vcr_cassettes/Payments/can_retrieve_payment_tracking_info.yml +2 -2
  39. data/spec/support/vcr_cassettes/Payments/can_retrieve_quote_payment_fee.yml +2 -2
  40. data/spec/support/vcr_cassettes/Payments/can_validate.yml +160 -0
  41. data/spec/support/vcr_cassettes/Payments/can_validate_and_create_with_sca.yml +217 -0
  42. data/spec/support/vcr_cassettes/Rates/can_provided_detailed_rate_with_conversion_date_preference.yml +1 -1
  43. data/spec/support/vcr_cassettes/Reference/can_retrieve_bank_details.yml +2 -2
  44. data/spec/support/vcr_cassettes/Reference/can_retrieve_conversion_dates.yml +2 -2
  45. data/spec/support/vcr_cassettes/Reference/can_retrieve_currencies.yml +2 -2
  46. data/spec/support/vcr_cassettes/Reference/can_retrieve_payer_required_details.yml +2 -2
  47. data/spec/support/vcr_cassettes/Reference/can_retrieve_payment_dates.yml +2 -2
  48. data/spec/support/vcr_cassettes/Reference/can_retrieve_payment_fee_rules.yml +1 -1
  49. data/spec/support/vcr_cassettes/Reference/can_retrieve_payment_purpose_codes.yml +2 -2
  50. data/spec/support/vcr_cassettes/Reference/can_retrieve_settlement_accounts.yml +2 -2
  51. data/spec/support/vcr_cassettes/Reports/can_create_payments_report.yml +2 -2
  52. data/spec/support/vcr_cassettes/Reports/can_find_report_requests.yml +2 -2
  53. data/spec/support/vcr_cassettes/Reports/can_retrieve_report_request.yml +2 -2
  54. data/spec/support/vcr_cassettes/TermsAndConditions/can_accept_terms.yml +3 -3
  55. data/spec/support/vcr_cassettes/Transactions/can_retrieve_sender_details.yml +2 -2
  56. data/spec/support/vcr_cassettes/Transfers/can_cancel.yml +3 -3
  57. data/spec/support/vcr_cassettes/Transfers/can_create.yml +2 -2
  58. data/spec/support/vcr_cassettes/Transfers/can_find.yml +3 -3
  59. data/spec/support/vcr_cassettes/Transfers/can_retrieve.yml +3 -3
  60. data/spec/support/vcr_cassettes/VirtualAccounts/can_find.yml +2 -2
  61. data/spec/support/vcr_cassettes/VirtualAccounts/can_find_VANs_for_a_specific_subaccount.yml +2 -2
  62. data/spec/support/vcr_cassettes/VirtualAccounts/can_find_VANs_for_subaccounts.yml +2 -2
  63. data/spec/support/vcr_cassettes/WithdrawalAccounts/can_find_withdrawal_accounts.yml +3 -3
  64. data/spec/support/vcr_cassettes/WithdrawalAccounts/can_find_withdrawal_accounts2.yml +3 -3
  65. data/spec/support/vcr_cassettes/WithdrawalAccounts/can_pull_funds.yml +3 -3
  66. metadata +12 -5
  67. data/.travis.yml +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51d4fea8a3c90b42a1bcc51aa1576b371a7fb8921a821379d08fe5d4eed6a388
4
- data.tar.gz: d8b2e7d4a7492f292fbb7d3dee938932324bfc2a999c68a49b5de1224708777f
3
+ metadata.gz: 383eb1f56133c9410c17f17a38023ff9c63d820f5e10c1784f46e51fe0632556
4
+ data.tar.gz: 3cba7634d2cef99d4c741675ad096fe6b7e88c4f3fae5aecb1114d2351ac8af9
5
5
  SHA512:
6
- metadata.gz: 44c8f5d54f5f8a95b7001781e0696a760234c1bbdfd3832202c262dcaf44c753a17faf5908b86493ce28164ef97e9b30cdc5820af1a829ab2d0a710a2caeddce
7
- data.tar.gz: f0f637e7719b40b0e9dff06df8a82ad6b5166ab06736ba23cc5ca000c1e40321255b40c1e1e83b45b47ec0a4cdc34e701a299c334da6fc8b9ae0fc45253708fa
6
+ metadata.gz: cb0ae5227d01960a94276ec5a01058221281085285a187b62f8e4600246d90e4e194a6e3963f7170ec8e82b0616a1b9e631fbe9132bb2a72377cd85328dfd0c5
7
+ data.tar.gz: e97f59d4c75d11459d6e9d35a017599f28f6607fe6fb5bac0dbff883343f34e9e0b969c57a105f9efe4e9c11e49e7a4dbda4bef32eb9775cec67da254ac2b39e
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Gem Version](https://badge.fury.io/rb/currency_cloud.svg)](http://badge.fury.io/rb/currency_cloud) [![Build Status](https://travis-ci.org/CurrencyCloud/currencycloud-ruby.png?branch=master)](https://travis-ci.org/CurrencyCloud/currencycloud-ruby)
1
+ [![Gem Version](https://badge.fury.io/rb/currency_cloud.svg)](http://badge.fury.io/rb/currency_cloud) [![CodeQL](https://github.com/CurrencyCloud/currencycloud-ruby/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/CurrencyCloud/currencycloud-ruby/actions/workflows/github-code-scanning/codeql)
2
2
 
3
3
  # Currencycloud
4
4
 
@@ -20,7 +20,7 @@ If you want to build the gem from source:
20
20
 
21
21
  ## Supported Ruby versions
22
22
 
23
- This library aims to support and is [tested against][travis] the following Ruby
23
+ This library aims to support and is tested against the following Ruby
24
24
  implementations:
25
25
 
26
26
  * MRI 2.5
@@ -161,6 +161,9 @@ Once a feature has been marked as deprecated, we no longer develop the code or i
161
161
  ```
162
162
  2025-05-13
163
163
  - GET /payments/{id}/submission (to be removed 2025-10-01)
164
+
165
+ 2025-07-07
166
+ - Remove support for Ruby versions 2.5, 2.6 and 2.7
164
167
  ```
165
168
 
166
169
  # Security Consideration
@@ -174,8 +177,7 @@ We actively support the latest version of the SDK. We support the immediate prev
174
177
 
175
178
  Copyright (c) 2016-2019 Currencycloud. See [LICENSE][license] for details.
176
179
 
177
- [developer]: https://developer.currencycloud.com/documentation/getting-started/introduction/
178
- [travis]: https://travis-ci.org/CurrencyCloud/currencycloud-ruby
180
+ [developer]: https://developer.currencycloud.com/guides/getting-started/introduction/
179
181
  [jruby]: http://jruby.org/
180
182
  [rubinius]: http://rubini.us/
181
183
  [httparty]: https://github.com/jnunemaker/httparty
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency('httparty', '~> 0.21')
17
17
 
18
18
  s.add_dependency('json', '>= 2.3', '< 2.7.6')
19
- s.add_development_dependency('rake', '~> 13.2.1')
19
+ s.add_development_dependency('rake', '~> 13.3.0')
20
20
 
21
21
  s.add_development_dependency('addressable', '<= 2.9.0')
22
22
  s.add_development_dependency('rspec', '~> 3.1')
@@ -8,8 +8,8 @@ module CurrencyCloud
8
8
  request.get(build_url(url), params)
9
9
  end
10
10
 
11
- def post(url, params = {})
12
- request.post(build_url(url), params)
11
+ def post(url, params = {}, opts = {})
12
+ request.post(build_url(url), params, opts)
13
13
  end
14
14
 
15
15
  def build_url(url)
@@ -39,5 +39,26 @@ module CurrencyCloud
39
39
  result = client.get("#{id}/tracking_info")
40
40
  PaymentTrackingInfo.new(result)
41
41
  end
42
+
43
+ def self.validate(params, sca_to_authenticated_user = false)
44
+ headers = { 'x-sca-to-authenticated-user' => sca_to_authenticated_user.to_s }
45
+ opts = { headers: headers, return_response_headers: true }
46
+ body, response_headers = client.post("validate", params, opts)
47
+ PaymentValidationResult.new(body, response_headers)
48
+ end
49
+
50
+ def self.create(params = {}, sca_id = nil, sca_token = nil)
51
+ # If no SCA values are provided
52
+ return super(params) if sca_id.nil? && sca_token.nil?
53
+
54
+ headers = {}
55
+ headers['x-sca-id'] = sca_id unless sca_id.nil?
56
+ headers['x-sca-token'] = sca_token unless sca_token.nil?
57
+
58
+ opts = { headers: headers }
59
+ attrs = client.post("create", params, opts)
60
+ new(attrs)
61
+ end
62
+
42
63
  end
43
64
  end
@@ -0,0 +1,5 @@
1
+ module CurrencyCloud
2
+ class PaymentSubmissionInfo
3
+ include CurrencyCloud::Resource
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ module CurrencyCloud
2
+ class PaymentValidationResult
3
+ include CurrencyCloud::Resource
4
+ attr_reader :response_headers
5
+
6
+ def initialize(data, response_headers = {})
7
+ super(data)
8
+ @response_headers = response_headers
9
+ end
10
+
11
+ def to_yaml(options = {})
12
+ # Only exclude @response_headers from serialization
13
+ {
14
+ 'attributes' => @attributes,
15
+ 'changed_attributes' => @changed_attributes
16
+ }.to_yaml(options)
17
+ end
18
+ end
19
+ end
@@ -14,9 +14,18 @@ module CurrencyCloud
14
14
  end
15
15
 
16
16
  def post(route, params = {}, opts = {})
17
- retry_authenticate('post', route, params, opts) do |url, new_params, options|
17
+ return_response_headers = opts.delete(:return_response_headers) || false
18
+ raw_response = nil
19
+ response = retry_authenticate('post', route, params, opts) do |url, new_params, options|
18
20
  options[:body] = new_params
19
- HTTParty.post(url, options)
21
+ raw_response = HTTParty.post(url, options)
22
+ raw_response
23
+ end
24
+
25
+ if return_response_headers
26
+ [response, raw_response&.headers || {}]
27
+ else
28
+ response
20
29
  end
21
30
  end
22
31
 
@@ -47,7 +56,9 @@ module CurrencyCloud
47
56
  end
48
57
 
49
58
  def process_options(opts)
50
- options = { headers: headers }
59
+ # Add request specific headers
60
+ request_headers = opts.delete(:headers) || {}
61
+ options = { headers: headers.merge(request_headers) }
51
62
  options.merge(opts)
52
63
  end
53
64
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module CurrencyCloud
4
4
  API_VERSION = "v2".freeze # API Version
5
- VERSION = "1.7.0".freeze # Gem Version
5
+ VERSION = "1.8.0".freeze # Gem Version
6
6
  end
@@ -16,7 +16,8 @@ describe 'Error', vcr: true do
16
16
  CurrencyCloud.login_id = 'non-existent-login-id'
17
17
  CurrencyCloud.api_key = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef'
18
18
 
19
- expected_error = %{CurrencyCloud::BadRequestError---
19
+ expected_error = %{CurrencyCloud::BadRequestError
20
+ ---
20
21
  platform: #{platform}
21
22
  request:
22
23
  parameters:
@@ -36,7 +37,11 @@ errors:
36
37
  length: 64
37
38
  }
38
39
 
39
- expect { CurrencyCloud.session }.to raise_error(CurrencyCloud::BadRequestError, expected_error)
40
+ expect { CurrencyCloud.session }.to raise_error(CurrencyCloud::BadRequestError) do |error|
41
+ # Normalize error msg to avoid differences in platform
42
+ normalized_error = error.to_s.sub('CurrencyCloud::BadRequestError---', "CurrencyCloud::BadRequestError\n---")
43
+ expect(normalized_error).to eq(expected_error)
44
+ end
40
45
  end
41
46
 
42
47
  it 'is raised on a bad request' do
@@ -88,7 +93,8 @@ errors:
88
93
  CurrencyCloud.session
89
94
  expect(0).to eq 1, 'expected exception that was not raised'
90
95
  rescue CurrencyCloud::UnexpectedError => error
91
- expected_error = %(CurrencyCloud::UnexpectedError---
96
+ expected_error = %(CurrencyCloud::UnexpectedError
97
+ ---
92
98
  platform: #{platform}
93
99
  request:
94
100
  parameters:
@@ -99,7 +105,9 @@ request:
99
105
  inner_error: Timeout::Error
100
106
  )
101
107
 
102
- expect(error.to_s).to eq(expected_error)
108
+ # Normalize error msg to avoid differences in platform
109
+ normalized_error = error.to_s.sub('CurrencyCloud::UnexpectedError---', "CurrencyCloud::UnexpectedError\n---")
110
+ expect(normalized_error).to eq(expected_error)
103
111
  expect(error.inner_error).to_not be_nil
104
112
  expect(error.inner_error.class).to eq(Timeout::Error)
105
113
  end
@@ -145,4 +145,34 @@ describe 'Payments', vcr: true do
145
145
  end
146
146
  end
147
147
 
148
+ it "can #validate" do
149
+ payment_validation_result = CurrencyCloud::Payment.validate(payment_details, true)
150
+ expect(payment_validation_result).to be_a(CurrencyCloud::PaymentValidationResult)
151
+ expect(payment_validation_result.validation_result).to eq('success')
152
+ expect(payment_validation_result.response_headers).to have_key('x-sca-id')
153
+ expect(payment_validation_result.response_headers).to have_key('x-sca-required')
154
+ expect(payment_validation_result.response_headers['x-sca-id']).not_to be_empty
155
+ expect(payment_validation_result.response_headers['x-sca-required']).to eq('false')
156
+ end
157
+
158
+ it "can #validate and #create with sca" do
159
+ payment_validation_result = CurrencyCloud::Payment.validate(payment_details, false)
160
+ expect(payment_validation_result).to be_a(CurrencyCloud::PaymentValidationResult)
161
+ expect(payment_validation_result.validation_result).to eq('success')
162
+ expect(payment_validation_result.response_headers).to have_key('x-sca-id')
163
+ expect(payment_validation_result.response_headers).to have_key('x-sca-required')
164
+ expect(payment_validation_result.response_headers).to have_key('x-sca-type')
165
+ expect(payment_validation_result.response_headers['x-sca-id']).not_to be_empty
166
+ expect(payment_validation_result.response_headers['x-sca-required']).to eq('true')
167
+ expect(payment_validation_result.response_headers['x-sca-type']).to eq('SMS')
168
+
169
+ sca_id = payment_validation_result.response_headers['x-sca-id']
170
+ sca_token = '123456'
171
+ payment = CurrencyCloud::Payment.create(payment_details, sca_id, sca_token)
172
+
173
+ expect(payment).to_not be_nil
174
+ expect(payment).to be_a(CurrencyCloud::Payment)
175
+ expect(payment.reference).to eq("Testing SCA payments")
176
+ expect(payment.reason).to eq 'Testing SCA payments'
177
+ end
148
178
  end
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -58,7 +58,7 @@ http_interactions:
58
58
  X-Auth-Token:
59
59
  - deadbeefdeadbeefdeadbeefdeadbeef
60
60
  User-Agent:
61
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
61
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
62
62
  response:
63
63
  status:
64
64
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -58,7 +58,7 @@ http_interactions:
58
58
  X-Auth-Token:
59
59
  - deadbeefdeadbeefdeadbeefdeadbeef
60
60
  User-Agent:
61
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
61
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
62
62
  response:
63
63
  status:
64
64
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -112,7 +112,7 @@ http_interactions:
112
112
  X-Auth-Token:
113
113
  - deadbeefdeadbeefdeadbeefdeadbeef
114
114
  User-Agent:
115
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
115
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
116
116
  response:
117
117
  status:
118
118
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -112,7 +112,7 @@ http_interactions:
112
112
  X-Auth-Token:
113
113
  - deadbeefdeadbeefdeadbeefdeadbeef
114
114
  User-Agent:
115
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
115
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
116
116
  response:
117
117
  status:
118
118
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -58,7 +58,7 @@ http_interactions:
58
58
  X-Auth-Token:
59
59
  - deadbeefdeadbeefdeadbeefdeadbeef
60
60
  User-Agent:
61
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
61
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
62
62
  response:
63
63
  status:
64
64
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -112,7 +112,7 @@ http_interactions:
112
112
  X-Auth-Token:
113
113
  - deadbeefdeadbeefdeadbeefdeadbeef
114
114
  User-Agent:
115
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
115
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
116
116
  response:
117
117
  status:
118
118
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -37,7 +37,7 @@ http_interactions:
37
37
  X-Auth-Token:
38
38
  - deadbeefdeadbeefdeadbeefdeadbeef
39
39
  User-Agent:
40
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
40
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
41
41
  response:
42
42
  status:
43
43
  code: 200
@@ -66,7 +66,7 @@ http_interactions:
66
66
  X-Auth-Token:
67
67
  - deadbeefdeadbeefdeadbeefdeadbeef
68
68
  User-Agent:
69
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
69
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
70
70
  response:
71
71
  status:
72
72
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -37,7 +37,7 @@ http_interactions:
37
37
  X-Auth-Token:
38
38
  - deadbeefdeadbeefdeadbeefdeadbeef
39
39
  User-Agent:
40
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
40
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
41
41
  response:
42
42
  status:
43
43
  code: 200
@@ -66,7 +66,7 @@ http_interactions:
66
66
  X-Auth-Token:
67
67
  - deadbeefdeadbeefdeadbeefdeadbeef
68
68
  User-Agent:
69
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
69
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
70
70
  response:
71
71
  status:
72
72
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -37,7 +37,7 @@ http_interactions:
37
37
  X-Auth-Token:
38
38
  - deadbeefdeadbeefdeadbeefdeadbeef
39
39
  User-Agent:
40
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
40
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
41
41
  response:
42
42
  status:
43
43
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -112,7 +112,7 @@ http_interactions:
112
112
  X-Auth-Token:
113
113
  - deadbeefdeadbeefdeadbeefdeadbeef
114
114
  User-Agent:
115
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
115
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
116
116
  response:
117
117
  status:
118
118
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -37,7 +37,7 @@ http_interactions:
37
37
  X-Auth-Token:
38
38
  - deadbeefdeadbeefdeadbeefdeadbeef
39
39
  User-Agent:
40
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
40
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
41
41
  response:
42
42
  status:
43
43
  code: 200
@@ -66,7 +66,7 @@ http_interactions:
66
66
  X-Auth-Token:
67
67
  - deadbeefdeadbeefdeadbeefdeadbeef
68
68
  User-Agent:
69
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
69
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
70
70
  response:
71
71
  status:
72
72
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -37,7 +37,7 @@ http_interactions:
37
37
  X-Auth-Token:
38
38
  - deadbeefdeadbeefdeadbeefdeadbeef
39
39
  User-Agent:
40
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
40
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
41
41
  response:
42
42
  status:
43
43
  code: 200
@@ -66,7 +66,7 @@ http_interactions:
66
66
  X-Auth-Token:
67
67
  - deadbeefdeadbeefdeadbeefdeadbeef
68
68
  User-Agent:
69
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
69
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
70
70
  response:
71
71
  status:
72
72
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -64,7 +64,7 @@ http_interactions:
64
64
  X-Auth-Token:
65
65
  - deadbeefdeadbeefdeadbeefdeadbeef
66
66
  User-Agent:
67
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
67
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
68
68
  response:
69
69
  status:
70
70
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -64,7 +64,7 @@ http_interactions:
64
64
  X-Auth-Token:
65
65
  - deadbeefdeadbeefdeadbeefdeadbeef
66
66
  User-Agent:
67
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
67
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
68
68
  response:
69
69
  status:
70
70
  code: 400
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -64,7 +64,7 @@ http_interactions:
64
64
  X-Auth-Token:
65
65
  - deadbeefdeadbeefdeadbeefdeadbeef
66
66
  User-Agent:
67
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
67
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
68
68
  response:
69
69
  status:
70
70
  code: 400
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 401
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -60,7 +60,7 @@ http_interactions:
60
60
  X-Auth-Token:
61
61
  - deadbeefdeadbeefdeadbeefdeadbeef
62
62
  User-Agent:
63
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: login_id=development%40currencycloud.com&api_key=deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
9
9
  headers:
10
10
  User-Agent:
11
- - CurrencyCloudSDK/2.0 Ruby/1.7.0
11
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
12
12
  response:
13
13
  status:
14
14
  code: 200