currency_cloud 1.6.1 → 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 +8 -5
  3. data/currency_cloud.gemspec +1 -1
  4. data/lib/currency_cloud/client.rb +2 -2
  5. data/lib/currency_cloud/payment.rb +26 -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 +39 -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: '09098620dee8897122a2811ff91237dbb6eaedc70f8579c80609b1bfde84ee48'
4
- data.tar.gz: 24e2cfa670a5528523aaaa3f1b61d1984c86734ab3d6fa14587d4eb90690c61c
3
+ metadata.gz: 383eb1f56133c9410c17f17a38023ff9c63d820f5e10c1784f46e51fe0632556
4
+ data.tar.gz: 3cba7634d2cef99d4c741675ad096fe6b7e88c4f3fae5aecb1114d2351ac8af9
5
5
  SHA512:
6
- metadata.gz: 245945ff015090fcd25a6695b758233fc9b34c51a06eefa00cc647602a71670954a2b8bf36d4adf9e7dac5bec9633f3ded966cb3e6bee5aeaa50ac29936cf4a4
7
- data.tar.gz: 3031f5e4a8d774242e948ca468d3ba62559b1028b5774aace07acfe4b5fa43628472d994b9f952b86f411662c7058000d24dc4790bb76389130c7df900bc5666
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
@@ -159,7 +159,11 @@ Once a feature has been marked as deprecated, we no longer develop the code or i
159
159
 
160
160
  ### List of features being deprecated
161
161
  ```
162
- (No features are currently being deprecated)
162
+ 2025-05-13
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
163
167
  ```
164
168
 
165
169
  # Security Consideration
@@ -173,8 +177,7 @@ We actively support the latest version of the SDK. We support the immediate prev
173
177
 
174
178
  Copyright (c) 2016-2019 Currencycloud. See [LICENSE][license] for details.
175
179
 
176
- [developer]: https://developer.currencycloud.com/documentation/getting-started/introduction/
177
- [travis]: https://travis-ci.org/CurrencyCloud/currencycloud-ruby
180
+ [developer]: https://developer.currencycloud.com/guides/getting-started/introduction/
178
181
  [jruby]: http://jruby.org/
179
182
  [rubinius]: http://rubini.us/
180
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)
@@ -10,6 +10,11 @@ module CurrencyCloud
10
10
  PaymentSubmission.new(result)
11
11
  end
12
12
 
13
+ def submission_info(params = {})
14
+ result = client.get("#{id}/submission_info", params)
15
+ PaymentSubmissionInfo.new(result)
16
+ end
17
+
13
18
  def self.authorise(*ids)
14
19
  result = client.post("authorise", payment_ids: ids)['authorisations']
15
20
  result.map { |pa| PaymentAuthorisationResult.new(pa) }
@@ -34,5 +39,26 @@ module CurrencyCloud
34
39
  result = client.get("#{id}/tracking_info")
35
40
  PaymentTrackingInfo.new(result)
36
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
+
37
63
  end
38
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.6.1".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
@@ -45,6 +45,15 @@ describe 'Payments', vcr: true do
45
45
  expect(submission).to be_a(CurrencyCloud::PaymentSubmission)
46
46
  end
47
47
 
48
+ it 'can get the new submission' do
49
+ payment = CurrencyCloud::Payment.create(payment_details)
50
+ expect(payment).to_not be_nil
51
+
52
+ submission = payment.submission_info
53
+ expect(submission).to_not be_nil
54
+ expect(submission).to be_a(CurrencyCloud::PaymentSubmissionInfo)
55
+ end
56
+
48
57
  describe "can #authorise" do
49
58
  before do
50
59
  @payment = CurrencyCloud::Payment.create(payment_details)
@@ -136,4 +145,34 @@ describe 'Payments', vcr: true do
136
145
  end
137
146
  end
138
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
139
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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.0
63
+ - CurrencyCloudSDK/2.0 Ruby/1.8.0
64
64
  response:
65
65
  status:
66
66
  code: 200