tangocard-raas 1.1.2 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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)