tangocard-raas 1.1.2 → 2.2.1

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +28 -175
  3. data/README.md +38 -525
  4. data/lib/raas.rb +32 -19
  5. data/lib/raas/api_helper.rb +146 -54
  6. data/lib/raas/configuration.rb +22 -30
  7. data/lib/raas/controllers/accounts_controller.rb +146 -92
  8. data/lib/raas/controllers/base_controller.rb +32 -29
  9. data/lib/raas/controllers/catalog_controller.rb +31 -14
  10. data/lib/raas/controllers/customers_controller.rb +113 -72
  11. data/lib/raas/controllers/exchange_rates_controller.rb +40 -12
  12. data/lib/raas/controllers/fund_controller.rb +345 -0
  13. data/lib/raas/controllers/orders_controller.rb +166 -105
  14. data/lib/raas/controllers/status_controller.rb +31 -14
  15. data/lib/raas/exceptions/api_exception.rb +4 -2
  16. data/lib/raas/exceptions/raas_client_exception.rb +14 -12
  17. data/lib/raas/exceptions/raas_generic_exception.rb +9 -9
  18. data/lib/raas/exceptions/raas_server_exception.rb +14 -12
  19. data/lib/raas/http/auth/basic_auth.rb +7 -4
  20. data/lib/raas/http/faraday_client.rb +19 -7
  21. data/lib/raas/http/http_call_back.rb +11 -6
  22. data/lib/raas/http/http_client.rb +50 -32
  23. data/lib/raas/http/http_context.rb +5 -2
  24. data/lib/raas/http/http_method_enum.rb +6 -2
  25. data/lib/raas/http/http_request.rb +7 -3
  26. data/lib/raas/http/http_response.rb +3 -1
  27. data/lib/raas/models/account_model.rb +32 -23
  28. data/lib/raas/models/account_summary_model.rb +26 -17
  29. data/lib/raas/models/base_model.rb +11 -9
  30. data/lib/raas/models/billing_address_model.rb +105 -0
  31. data/lib/raas/models/brand_model.rb +39 -35
  32. data/lib/raas/models/catalog_model.rb +15 -13
  33. data/lib/raas/models/create_account_request_model.rb +14 -14
  34. data/lib/raas/models/create_credit_card_request_model.rb +96 -0
  35. data/lib/raas/models/create_customer_request_model.rb +12 -12
  36. data/lib/raas/models/create_order_request_model.rb +45 -35
  37. data/lib/raas/models/credit_card_model.rb +124 -0
  38. data/lib/raas/models/currency_breakdown_model.rb +18 -18
  39. data/lib/raas/models/customer_model.rb +24 -22
  40. data/lib/raas/models/deposit_request_model.rb +60 -0
  41. data/lib/raas/models/deposit_response_model.rb +80 -0
  42. data/lib/raas/models/exchange_rate_model.rb +18 -17
  43. data/lib/raas/models/exchange_rate_response_model.rb +17 -15
  44. data/lib/raas/models/full_name_email_model.rb +42 -0
  45. data/lib/raas/models/get_deposit_response_model.rb +80 -0
  46. data/lib/raas/models/get_orders_response_model.rb +16 -14
  47. data/lib/raas/models/item_model.rb +36 -34
  48. data/lib/raas/models/name_email_model.rb +14 -14
  49. data/lib/raas/models/new_credit_card_model.rb +51 -0
  50. data/lib/raas/models/order_model.rb +124 -92
  51. data/lib/raas/models/order_summary_model.rb +155 -0
  52. data/lib/raas/models/page_model.rb +16 -16
  53. data/lib/raas/models/raas_client_error_model.rb +16 -16
  54. data/lib/raas/models/raas_server_error_model.rb +12 -12
  55. data/lib/raas/models/resend_order_response_model.rb +11 -11
  56. data/lib/raas/models/reward_credential_model.rb +14 -14
  57. data/lib/raas/models/reward_model.rb +16 -14
  58. data/lib/raas/models/system_status_response_model.rb +10 -10
  59. data/lib/raas/models/unregister_credit_card_request_model.rb +51 -0
  60. data/lib/raas/models/unregister_credit_card_response_model.rb +53 -0
  61. data/lib/raas/raas_client.rb +36 -25
  62. data/test/controllers/controller_test_base.rb +31 -0
  63. data/test/controllers/test_accounts_controller.rb +79 -0
  64. data/test/controllers/test_catalog_controller.rb +65 -0
  65. data/test/controllers/test_customers_controller.rb +61 -0
  66. data/test/controllers/test_exchange_rates_controller.rb +35 -0
  67. data/test/controllers/test_fund_controller.rb +108 -0
  68. data/test/controllers/test_orders_controller.rb +86 -0
  69. data/test/controllers/test_status_controller.rb +27 -0
  70. data/test/http_response_catcher.rb +16 -0
  71. data/test/test_helper.rb +91 -0
  72. metadata +32 -10
@@ -1,98 +1,70 @@
1
- # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0
2
+ # ( https://apimatic.io ).
2
3
 
3
4
  module Raas
5
+ # AccountsController
4
6
  class AccountsController < BaseController
5
- @@instance = AccountsController.new
6
- # Singleton instance of the controller class
7
- def self.instance
8
- @@instance
7
+ @instance = AccountsController.new
8
+
9
+ class << self
10
+ attr_accessor :instance
11
+ end
12
+
13
+ def instance
14
+ self.class.instance
9
15
  end
10
16
 
11
- # Gets a list of accounts for a given customer
12
- # @param [String] customer_identifier Required parameter: Customer Identifier
17
+ # Retrieves a list of accounts for a given customer
18
+ # @param [String] customer_identifier Required parameter: Customer
19
+ # Identifier
13
20
  # @return List of AccountSummaryModel response from the API call
14
21
  def get_accounts_by_customer(customer_identifier)
15
22
  begin
16
23
  @logger.info("get_accounts_by_customer called.")
17
-
18
- # validate required parameters
24
+ # Validate required parameters.
19
25
  @logger.info("Validating required parameters for get_accounts_by_customer.")
20
- validate_parameters({
26
+ validate_parameters(
21
27
  'customer_identifier' => customer_identifier
22
- })
23
-
24
- # prepare query url
28
+ )
29
+ # Prepare query url.
25
30
  @logger.info("Preparing query URL for get_accounts_by_customer.")
26
- _query_builder = Configuration.get_base_uri()
31
+ _query_builder = Configuration.get_base_uri
27
32
  _query_builder << '/customers/{customerIdentifier}/accounts'
28
- _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
33
+ _query_builder = APIHelper.append_url_with_template_parameters(
34
+ _query_builder,
29
35
  'customerIdentifier' => customer_identifier
30
- }
36
+ )
31
37
  _query_url = APIHelper.clean_url _query_builder
32
38
 
33
- # prepare headers
39
+ # Prepare headers.
34
40
  @logger.info("Preparing headers for get_accounts_by_customer.")
35
41
  _headers = {
36
42
  'accept' => 'application/json'
37
43
  }
38
44
 
39
- # prepare and execute HttpRequest
45
+ # Prepare and execute HttpRequest.
40
46
  @logger.info('Preparing and executing HttpRequest for get_accounts_by_customer.')
41
- _request = @http_client.get _query_url, headers: _headers
47
+ _request = @http_client.get(
48
+ _query_url,
49
+ headers: _headers
50
+ )
42
51
  BasicAuth.apply(_request)
43
52
  _context = execute_request(_request, name: 'get_accounts_by_customer')
44
- validate_response(_context)
45
53
 
46
- # return appropriate response type
47
- @logger.info("Returning response for get_accounts_by_customer.")
48
- decoded = APIHelper.json_deserialize(_context.response.raw_body)
49
- return decoded.map{|element| AccountSummaryModel.from_hash(element)}
50
-
51
- rescue Exception => e
52
- @logger.error(e)
53
- raise e
54
- end
55
- end
56
-
57
- # Get an account
58
- # @param [String] account_identifier Required parameter: Account Identifier
59
- # @return AccountModel response from the API call
60
- def get_account(account_identifier)
61
- begin
62
- @logger.info("get_account called.")
63
-
64
- # validate required parameters
65
- @logger.info("Validating required parameters for get_account.")
66
- validate_parameters({
67
- 'account_identifier' => account_identifier
68
- })
69
-
70
- # prepare query url
71
- @logger.info("Preparing query URL for get_account.")
72
- _query_builder = Configuration.get_base_uri()
73
- _query_builder << '/accounts/{accountIdentifier}'
74
- _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
75
- 'accountIdentifier' => account_identifier
76
- }
77
- _query_url = APIHelper.clean_url _query_builder
78
-
79
- # prepare headers
80
- @logger.info("Preparing headers for get_account.")
81
- _headers = {
82
- 'accept' => 'application/json'
83
- }
84
-
85
- # prepare and execute HttpRequest
86
- @logger.info('Preparing and executing HttpRequest for get_account.')
87
- _request = @http_client.get _query_url, headers: _headers
88
- BasicAuth.apply(_request)
89
- _context = execute_request(_request, name: 'get_account')
54
+ # Validate response against endpoint and global error codes.
55
+ @logger.info("Validating response for get_accounts_by_customer.")
56
+ unless _context.response.status_code.between?(200, 208)
57
+ raise RaasGenericException.new(
58
+ 'API Error',
59
+ _context
60
+ )
61
+ end
90
62
  validate_response(_context)
91
63
 
92
- # return appropriate response type
93
- @logger.info("Returning response for get_account.")
64
+ # Return appropriate response type.
65
+ @logger.info("Returning response for get_accounts_by_customer.")
94
66
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
95
- return AccountModel.from_hash(decoded)
67
+ decoded.map { |element| AccountSummaryModel.from_hash(element) }
96
68
 
97
69
  rescue Exception => e
98
70
  @logger.error(e)
@@ -100,49 +72,62 @@ module Raas
100
72
  end
101
73
  end
102
74
 
103
- # Create an account under a given customer
104
- # @param [String] customer_identifier Required parameter: Customer Identifier
75
+ # Creates an account under a given customer
76
+ # @param [String] customer_identifier Required parameter: Customer
77
+ # Identifier
105
78
  # @param [CreateAccountRequestModel] body Required parameter: Request Body
106
79
  # @return AccountModel response from the API call
107
80
  def create_account(customer_identifier,
108
81
  body)
109
82
  begin
110
83
  @logger.info("create_account called.")
111
-
112
- # validate required parameters
84
+ # Validate required parameters.
113
85
  @logger.info("Validating required parameters for create_account.")
114
- validate_parameters({
86
+ validate_parameters(
115
87
  'customer_identifier' => customer_identifier,
116
88
  'body' => body
117
- })
118
-
119
- # prepare query url
89
+ )
90
+ # Prepare query url.
120
91
  @logger.info("Preparing query URL for create_account.")
121
- _query_builder = Configuration.get_base_uri()
92
+ _query_builder = Configuration.get_base_uri
122
93
  _query_builder << '/customers/{customerIdentifier}/accounts'
123
- _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
94
+ _query_builder = APIHelper.append_url_with_template_parameters(
95
+ _query_builder,
124
96
  'customerIdentifier' => customer_identifier
125
- }
97
+ )
126
98
  _query_url = APIHelper.clean_url _query_builder
127
99
 
128
- # prepare headers
100
+ # Prepare headers.
129
101
  @logger.info("Preparing headers for create_account.")
130
102
  _headers = {
131
103
  'accept' => 'application/json',
132
104
  'content-type' => 'application/json; charset=utf-8'
133
105
  }
134
106
 
135
- # prepare and execute HttpRequest
107
+ # Prepare and execute HttpRequest.
136
108
  @logger.info('Preparing and executing HttpRequest for create_account.')
137
- _request = @http_client.post _query_url, headers: _headers, parameters: body.to_json
109
+ _request = @http_client.post(
110
+ _query_url,
111
+ headers: _headers,
112
+ parameters: body.to_json
113
+ )
138
114
  BasicAuth.apply(_request)
139
115
  _context = execute_request(_request, name: 'create_account')
116
+
117
+ # Validate response against endpoint and global error codes.
118
+ @logger.info("Validating response for create_account.")
119
+ unless _context.response.status_code.between?(200, 208)
120
+ raise RaasGenericException.new(
121
+ 'API Error',
122
+ _context
123
+ )
124
+ end
140
125
  validate_response(_context)
141
126
 
142
- # return appropriate response type
127
+ # Return appropriate response type.
143
128
  @logger.info("Returning response for create_account.")
144
129
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
145
- return AccountModel.from_hash(decoded)
130
+ AccountModel.from_hash(decoded)
146
131
 
147
132
  rescue Exception => e
148
133
  @logger.error(e)
@@ -150,35 +135,104 @@ module Raas
150
135
  end
151
136
  end
152
137
 
153
- # Gets all accounts under the platform
138
+ # Retrieves all accounts under the platform
154
139
  # @return List of AccountModel response from the API call
155
140
  def get_all_accounts
156
141
  begin
157
142
  @logger.info("get_all_accounts called.")
158
-
159
- # prepare query url
143
+ # Prepare query url.
160
144
  @logger.info("Preparing query URL for get_all_accounts.")
161
- _query_builder = Configuration.get_base_uri()
145
+ _query_builder = Configuration.get_base_uri
162
146
  _query_builder << '/accounts'
163
147
  _query_url = APIHelper.clean_url _query_builder
164
148
 
165
- # prepare headers
149
+ # Prepare headers.
166
150
  @logger.info("Preparing headers for get_all_accounts.")
167
151
  _headers = {
168
152
  'accept' => 'application/json'
169
153
  }
170
154
 
171
- # prepare and execute HttpRequest
155
+ # Prepare and execute HttpRequest.
172
156
  @logger.info('Preparing and executing HttpRequest for get_all_accounts.')
173
- _request = @http_client.get _query_url, headers: _headers
157
+ _request = @http_client.get(
158
+ _query_url,
159
+ headers: _headers
160
+ )
174
161
  BasicAuth.apply(_request)
175
162
  _context = execute_request(_request, name: 'get_all_accounts')
163
+
164
+ # Validate response against endpoint and global error codes.
165
+ @logger.info("Validating response for get_all_accounts.")
166
+ unless _context.response.status_code.between?(200, 208)
167
+ raise RaasGenericException.new(
168
+ 'API Error',
169
+ _context
170
+ )
171
+ end
176
172
  validate_response(_context)
177
173
 
178
- # return appropriate response type
174
+ # Return appropriate response type.
179
175
  @logger.info("Returning response for get_all_accounts.")
180
176
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
181
- return decoded.map{|element| AccountModel.from_hash(element)}
177
+ decoded.map { |element| AccountModel.from_hash(element) }
178
+
179
+ rescue Exception => e
180
+ @logger.error(e)
181
+ raise e
182
+ end
183
+ end
184
+
185
+ # Retrieves a single account
186
+ # @param [String] account_identifier Required parameter: Account
187
+ # Identifier
188
+ # @return AccountModel response from the API call
189
+ def get_account(account_identifier)
190
+ begin
191
+ @logger.info("get_account called.")
192
+ # Validate required parameters.
193
+ @logger.info("Validating required parameters for get_account.")
194
+ validate_parameters(
195
+ 'account_identifier' => account_identifier
196
+ )
197
+ # Prepare query url.
198
+ @logger.info("Preparing query URL for get_account.")
199
+ _query_builder = Configuration.get_base_uri
200
+ _query_builder << '/accounts/{accountIdentifier}'
201
+ _query_builder = APIHelper.append_url_with_template_parameters(
202
+ _query_builder,
203
+ 'accountIdentifier' => account_identifier
204
+ )
205
+ _query_url = APIHelper.clean_url _query_builder
206
+
207
+ # Prepare headers.
208
+ @logger.info("Preparing headers for get_account.")
209
+ _headers = {
210
+ 'accept' => 'application/json'
211
+ }
212
+
213
+ # Prepare and execute HttpRequest.
214
+ @logger.info('Preparing and executing HttpRequest for get_account.')
215
+ _request = @http_client.get(
216
+ _query_url,
217
+ headers: _headers
218
+ )
219
+ BasicAuth.apply(_request)
220
+ _context = execute_request(_request, name: 'get_account')
221
+
222
+ # Validate response against endpoint and global error codes.
223
+ @logger.info("Validating response for get_account.")
224
+ unless _context.response.status_code.between?(200, 208)
225
+ raise RaasGenericException.new(
226
+ 'API Error',
227
+ _context
228
+ )
229
+ end
230
+ validate_response(_context)
231
+
232
+ # Return appropriate response type.
233
+ @logger.info("Returning response for get_account.")
234
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
235
+ AccountModel.from_hash(decoded)
182
236
 
183
237
  rescue Exception => e
184
238
  @logger.error(e)
@@ -1,18 +1,18 @@
1
- # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0
2
+ # ( https://apimatic.io ).
2
3
 
3
4
  module Raas
5
+ # Base controller.
4
6
  class BaseController
5
7
  attr_accessor :http_client, :http_call_back
6
8
 
7
- @@http_client = FaradayClient.new(timeout: 15)
8
-
9
- @@global_headers = {
10
- 'user-agent' => 'TangoCardv2NGSDK'
11
- }
12
-
13
9
  def initialize(http_client: nil, http_call_back: nil)
14
- @http_client = http_client ||= @@http_client
10
+ @http_client = http_client || FaradayClient.new(timeout: 60)
15
11
  @http_call_back = http_call_back
12
+
13
+ @global_headers = {
14
+ 'user-agent' => 'V2NGSDK'
15
+ }
16
16
  @logger = Logging.logger[self]
17
17
  @logger.info("Instantiated controller class.")
18
18
  end
@@ -20,7 +20,7 @@ module Raas
20
20
  def validate_parameters(args)
21
21
  args.each do |_name, value|
22
22
  if value.nil?
23
- raise ArgumentError.new 'Required parameter #{name} cannot be nil.'
23
+ raise ArgumentError, "Required parameter #{_name} cannot be nil."
24
24
  end
25
25
  end
26
26
  end
@@ -31,10 +31,14 @@ module Raas
31
31
 
32
32
  @logger.info("Merging global headers with endpoint headers for #{name}.")
33
33
  APIHelper.clean_hash(request.headers)
34
- request.headers = @@global_headers.clone.merge(request.headers)
34
+ request.headers = @global_headers.clone.merge(request.headers)
35
35
 
36
36
  @logger.debug("Raw request for #{name} is: #{request.inspect}")
37
- response = binary ? @http_client.execute_as_binary(request) : @http_client.execute_as_string(request)
37
+ response = if binary
38
+ @http_client.execute_as_binary(request)
39
+ else
40
+ @http_client.execute_as_string(request)
41
+ end
38
42
  @logger.debug("Raw response for #{name} is: #{response.inspect}")
39
43
  @logger.info("Wrapping request and response in a context object for #{name}.")
40
44
  context = HttpContext.new(request, response)
@@ -42,27 +46,26 @@ module Raas
42
46
  @logger.info("Calling on_after_response method of http_call_back for #{name}.") if @http_call_back
43
47
  @http_call_back.on_after_response(context) if @http_call_back
44
48
 
45
- return context
49
+ context
46
50
  end
47
51
 
48
52
  def validate_response(context)
49
- if context.response.status_code == 400
50
- raise RaasClientException.new 'Bad Request', context
51
- elsif context.response.status_code == 401
52
- raise RaasGenericException.new 'Unauthorized - Invalid Credentials', context
53
- elsif context.response.status_code == 403
54
- raise RaasClientException.new 'Forbidden', context
55
- elsif context.response.status_code == 404
56
- raise RaasGenericException.new 'Not Found', context
57
- elsif context.response.status_code == 409
58
- raise RaasClientException.new 'Conflict', context
59
- elsif context.response.status_code == 500
60
- raise RaasServerException.new 'Internal Server Error - Retry Later', context
61
- elsif context.response.status_code == 503
62
- raise RaasServerException.new 'Service Unavailable - Retry Later', context
63
- elsif !context.response.status_code.between?(200, 208) #[200,208] = HTTP OK
64
- raise RaasGenericException.new 'API Error', context
65
- end
53
+ raise RaasClientException.new 'Bad Request', context if
54
+ context.response.status_code == 400
55
+ raise RaasGenericException.new 'Unauthorized - Invalid Credentials', context if
56
+ context.response.status_code == 401
57
+ raise RaasClientException.new 'Forbidden', context if
58
+ context.response.status_code == 403
59
+ raise RaasGenericException.new 'Not Found', context if
60
+ context.response.status_code == 404
61
+ raise RaasClientException.new 'Conflict', context if
62
+ context.response.status_code == 409
63
+ raise RaasServerException.new 'Internal Server Error - Retry Later', context if
64
+ context.response.status_code == 500
65
+ raise RaasServerException.new 'Service Unavailable - Retry Later', context if
66
+ context.response.status_code == 503
67
+ raise RaasGenericException.new 'API Error', context unless
68
+ context.response.status_code.between?(200, 208) # [200,208] = HTTP OK
66
69
  end
67
70
  end
68
71
  end
@@ -1,42 +1,59 @@
1
- # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0
2
+ # ( https://apimatic.io ).
2
3
 
3
4
  module Raas
5
+ # CatalogController
4
6
  class CatalogController < BaseController
5
- @@instance = CatalogController.new
6
- # Singleton instance of the controller class
7
- def self.instance
8
- @@instance
7
+ @instance = CatalogController.new
8
+
9
+ class << self
10
+ attr_accessor :instance
11
+ end
12
+
13
+ def instance
14
+ self.class.instance
9
15
  end
10
16
 
11
- # Get Catalog
17
+ # Retrieves a platform's catalog
12
18
  # @return CatalogModel response from the API call
13
19
  def get_catalog
14
20
  begin
15
21
  @logger.info("get_catalog called.")
16
-
17
- # prepare query url
22
+ # Prepare query url.
18
23
  @logger.info("Preparing query URL for get_catalog.")
19
- _query_builder = Configuration.get_base_uri()
24
+ _query_builder = Configuration.get_base_uri
20
25
  _query_builder << '/catalogs'
21
26
  _query_url = APIHelper.clean_url _query_builder
22
27
 
23
- # prepare headers
28
+ # Prepare headers.
24
29
  @logger.info("Preparing headers for get_catalog.")
25
30
  _headers = {
26
31
  'accept' => 'application/json'
27
32
  }
28
33
 
29
- # prepare and execute HttpRequest
34
+ # Prepare and execute HttpRequest.
30
35
  @logger.info('Preparing and executing HttpRequest for get_catalog.')
31
- _request = @http_client.get _query_url, headers: _headers
36
+ _request = @http_client.get(
37
+ _query_url,
38
+ headers: _headers
39
+ )
32
40
  BasicAuth.apply(_request)
33
41
  _context = execute_request(_request, name: 'get_catalog')
42
+
43
+ # Validate response against endpoint and global error codes.
44
+ @logger.info("Validating response for get_catalog.")
45
+ unless _context.response.status_code.between?(200, 208)
46
+ raise RaasGenericException.new(
47
+ 'API Error',
48
+ _context
49
+ )
50
+ end
34
51
  validate_response(_context)
35
52
 
36
- # return appropriate response type
53
+ # Return appropriate response type.
37
54
  @logger.info("Returning response for get_catalog.")
38
55
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
39
- return CatalogModel.from_hash(decoded)
56
+ CatalogModel.from_hash(decoded)
40
57
 
41
58
  rescue Exception => e
42
59
  @logger.error(e)