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,96 +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
+ # OrdersController
4
6
  class OrdersController < BaseController
5
- @@instance = OrdersController.new
6
- # Singleton instance of the controller class
7
- def self.instance
8
- @@instance
9
- end
7
+ @instance = OrdersController.new
10
8
 
11
- # TODO: type endpoint description here
12
- # @param [CreateOrderRequestModel] body Required parameter: Example:
13
- # @return OrderModel response from the API call
14
- def create_order(body)
15
- begin
16
- @logger.info("create_order called.")
17
-
18
- # validate required parameters
19
- @logger.info("Validating required parameters for create_order.")
20
- validate_parameters({
21
- 'body' => body
22
- })
23
-
24
- # prepare query url
25
- @logger.info("Preparing query URL for create_order.")
26
- _query_builder = Configuration.get_base_uri()
27
- _query_builder << '/orders'
28
- _query_url = APIHelper.clean_url _query_builder
29
-
30
- # prepare headers
31
- @logger.info("Preparing headers for create_order.")
32
- _headers = {
33
- 'accept' => 'application/json',
34
- 'content-type' => 'application/json; charset=utf-8'
35
- }
36
-
37
- # prepare and execute HttpRequest
38
- @logger.info('Preparing and executing HttpRequest for create_order.')
39
- _request = @http_client.post _query_url, headers: _headers, parameters: body.to_json
40
- BasicAuth.apply(_request)
41
- _context = execute_request(_request, name: 'create_order')
42
- validate_response(_context)
43
-
44
- # return appropriate response type
45
- @logger.info("Returning response for create_order.")
46
- decoded = APIHelper.json_deserialize(_context.response.raw_body)
47
- return OrderModel.from_hash(decoded)
9
+ class << self
10
+ attr_accessor :instance
11
+ end
48
12
 
49
- rescue Exception => e
50
- @logger.error(e)
51
- raise e
52
- end
13
+ def instance
14
+ self.class.instance
53
15
  end
54
16
 
55
- # TODO: type endpoint description here
56
- # @param [String] reference_order_id Required parameter: Reference Order ID
17
+ # Retrieves a single order
18
+ # @param [String] reference_order_id Required parameter: Reference Order
19
+ # ID
57
20
  # @return OrderModel response from the API call
58
21
  def get_order(reference_order_id)
59
22
  begin
60
23
  @logger.info("get_order called.")
61
-
62
- # validate required parameters
24
+ # Validate required parameters.
63
25
  @logger.info("Validating required parameters for get_order.")
64
- validate_parameters({
26
+ validate_parameters(
65
27
  'reference_order_id' => reference_order_id
66
- })
67
-
68
- # prepare query url
28
+ )
29
+ # Prepare query url.
69
30
  @logger.info("Preparing query URL for get_order.")
70
- _query_builder = Configuration.get_base_uri()
31
+ _query_builder = Configuration.get_base_uri
71
32
  _query_builder << '/orders/{referenceOrderID}'
72
- _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
33
+ _query_builder = APIHelper.append_url_with_template_parameters(
34
+ _query_builder,
73
35
  'referenceOrderID' => reference_order_id
74
- }
36
+ )
75
37
  _query_url = APIHelper.clean_url _query_builder
76
38
 
77
- # prepare headers
39
+ # Prepare headers.
78
40
  @logger.info("Preparing headers for get_order.")
79
41
  _headers = {
80
42
  'accept' => 'application/json'
81
43
  }
82
44
 
83
- # prepare and execute HttpRequest
45
+ # Prepare and execute HttpRequest.
84
46
  @logger.info('Preparing and executing HttpRequest for get_order.')
85
- _request = @http_client.get _query_url, headers: _headers
47
+ _request = @http_client.get(
48
+ _query_url,
49
+ headers: _headers
50
+ )
86
51
  BasicAuth.apply(_request)
87
52
  _context = execute_request(_request, name: 'get_order')
53
+
54
+ # Validate response against endpoint and global error codes.
55
+ @logger.info("Validating response for get_order.")
56
+ unless _context.response.status_code.between?(200, 208)
57
+ raise RaasGenericException.new(
58
+ 'API Error',
59
+ _context
60
+ )
61
+ end
88
62
  validate_response(_context)
89
63
 
90
- # return appropriate response type
64
+ # Return appropriate response type.
91
65
  @logger.info("Returning response for get_order.")
92
66
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
93
- return OrderModel.from_hash(decoded)
67
+ OrderModel.from_hash(decoded)
94
68
 
95
69
  rescue Exception => e
96
70
  @logger.error(e)
@@ -98,45 +72,57 @@ module Raas
98
72
  end
99
73
  end
100
74
 
101
- # TODO: type endpoint description here
102
- # @param [String] reference_order_id Required parameter: Example:
75
+ # Resends an order
76
+ # @param [String] reference_order_id Required parameter: The order's
77
+ # reference order id
103
78
  # @return ResendOrderResponseModel response from the API call
104
79
  def create_resend_order(reference_order_id)
105
80
  begin
106
81
  @logger.info("create_resend_order called.")
107
-
108
- # validate required parameters
82
+ # Validate required parameters.
109
83
  @logger.info("Validating required parameters for create_resend_order.")
110
- validate_parameters({
84
+ validate_parameters(
111
85
  'reference_order_id' => reference_order_id
112
- })
113
-
114
- # prepare query url
86
+ )
87
+ # Prepare query url.
115
88
  @logger.info("Preparing query URL for create_resend_order.")
116
- _query_builder = Configuration.get_base_uri()
89
+ _query_builder = Configuration.get_base_uri
117
90
  _query_builder << '/orders/{referenceOrderID}/resends'
118
- _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
91
+ _query_builder = APIHelper.append_url_with_template_parameters(
92
+ _query_builder,
119
93
  'referenceOrderID' => reference_order_id
120
- }
94
+ )
121
95
  _query_url = APIHelper.clean_url _query_builder
122
96
 
123
- # prepare headers
97
+ # Prepare headers.
124
98
  @logger.info("Preparing headers for create_resend_order.")
125
99
  _headers = {
126
100
  'accept' => 'application/json'
127
101
  }
128
102
 
129
- # prepare and execute HttpRequest
103
+ # Prepare and execute HttpRequest.
130
104
  @logger.info('Preparing and executing HttpRequest for create_resend_order.')
131
- _request = @http_client.post _query_url, headers: _headers
105
+ _request = @http_client.post(
106
+ _query_url,
107
+ headers: _headers
108
+ )
132
109
  BasicAuth.apply(_request)
133
110
  _context = execute_request(_request, name: 'create_resend_order')
111
+
112
+ # Validate response against endpoint and global error codes.
113
+ @logger.info("Validating response for create_resend_order.")
114
+ unless _context.response.status_code.between?(200, 208)
115
+ raise RaasGenericException.new(
116
+ 'API Error',
117
+ _context
118
+ )
119
+ end
134
120
  validate_response(_context)
135
121
 
136
- # return appropriate response type
122
+ # Return appropriate response type.
137
123
  @logger.info("Returning response for create_resend_order.")
138
124
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
139
- return ResendOrderResponseModel.from_hash(decoded)
125
+ ResendOrderResponseModel.from_hash(decoded)
140
126
 
141
127
  rescue Exception => e
142
128
  @logger.error(e)
@@ -144,51 +130,126 @@ module Raas
144
130
  end
145
131
  end
146
132
 
147
- # TODO: type endpoint description here
148
- # @param [String] account_identifier Optional parameter: Example:
149
- # @param [String] customer_identifier Optional parameter: Example:
150
- # @param [String] external_ref_id Optional parameter: Example:
151
- # @param [DateTime] start_date Optional parameter: Example:
152
- # @param [DateTime] end_date Optional parameter: Example:
153
- # @param [Integer] elements_per_block Optional parameter: Example:
154
- # @param [Integer] page Optional parameter: Example:
133
+ # Retrieves a list of orders under a platform
134
+ # @param [String] account_identifier Optional parameter: Account
135
+ # identifier
136
+ # @param [String] customer_identifier Optional parameter: Customer
137
+ # identifier
138
+ # @param [String] external_ref_id Optional parameter: External reference
139
+ # id
140
+ # @param [DateTime] start_date Optional parameter: The start date
141
+ # @param [DateTime] end_date Optional parameter: The end date
142
+ # @param [Integer] elements_per_block Optional parameter: The number of
143
+ # elements per page
144
+ # @param [Integer] page Optional parameter: The page number to return
155
145
  # @return GetOrdersResponseModel response from the API call
156
- def get_orders(options = Hash.new)
146
+ def get_orders(options = {})
157
147
  begin
158
148
  @logger.info("get_orders called.")
159
-
160
- # prepare query url
149
+ # Prepare query url.
161
150
  @logger.info("Preparing query URL for get_orders.")
162
- _query_builder = Configuration.get_base_uri()
151
+ _query_builder = Configuration.get_base_uri
163
152
  _query_builder << '/orders'
164
- _query_builder = APIHelper.append_url_with_query_parameters _query_builder, {
165
- 'accountIdentifier' => options['account_identifier'],
166
- 'customerIdentifier' => options['customer_identifier'],
167
- 'externalRefID' => options['external_ref_id'],
168
- 'startDate' => options['start_date'],
169
- 'endDate' => options['end_date'],
170
- 'elementsPerBlock' => options['elements_per_block'],
171
- 'page' => options['page']
172
- }, array_serialization: Configuration.array_serialization
153
+ _query_builder = APIHelper.append_url_with_query_parameters(
154
+ _query_builder,
155
+ {
156
+ 'accountIdentifier' => options['account_identifier'],
157
+ 'customerIdentifier' => options['customer_identifier'],
158
+ 'externalRefID' => options['external_ref_id'],
159
+ 'startDate' => options['start_date'],
160
+ 'endDate' => options['end_date'],
161
+ 'elementsPerBlock' => options['elements_per_block'],
162
+ 'page' => options['page']
163
+ },
164
+ array_serialization: Configuration.array_serialization
165
+ )
173
166
  _query_url = APIHelper.clean_url _query_builder
174
167
 
175
- # prepare headers
168
+ # Prepare headers.
176
169
  @logger.info("Preparing headers for get_orders.")
177
170
  _headers = {
178
171
  'accept' => 'application/json'
179
172
  }
180
173
 
181
- # prepare and execute HttpRequest
174
+ # Prepare and execute HttpRequest.
182
175
  @logger.info('Preparing and executing HttpRequest for get_orders.')
183
- _request = @http_client.get _query_url, headers: _headers
176
+ _request = @http_client.get(
177
+ _query_url,
178
+ headers: _headers
179
+ )
184
180
  BasicAuth.apply(_request)
185
181
  _context = execute_request(_request, name: 'get_orders')
182
+
183
+ # Validate response against endpoint and global error codes.
184
+ @logger.info("Validating response for get_orders.")
185
+ unless _context.response.status_code.between?(200, 208)
186
+ raise RaasGenericException.new(
187
+ 'API Error',
188
+ _context
189
+ )
190
+ end
186
191
  validate_response(_context)
187
192
 
188
- # return appropriate response type
193
+ # Return appropriate response type.
189
194
  @logger.info("Returning response for get_orders.")
190
195
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
191
- return GetOrdersResponseModel.from_hash(decoded)
196
+ GetOrdersResponseModel.from_hash(decoded)
197
+
198
+ rescue Exception => e
199
+ @logger.error(e)
200
+ raise e
201
+ end
202
+ end
203
+
204
+ # Places an order
205
+ # @param [CreateOrderRequestModel] body Required parameter: A
206
+ # CreateOrderRequest object
207
+ # @return OrderModel response from the API call
208
+ def create_order(body)
209
+ begin
210
+ @logger.info("create_order called.")
211
+ # Validate required parameters.
212
+ @logger.info("Validating required parameters for create_order.")
213
+ validate_parameters(
214
+ 'body' => body
215
+ )
216
+ # Prepare query url.
217
+ @logger.info("Preparing query URL for create_order.")
218
+ _query_builder = Configuration.get_base_uri
219
+ _query_builder << '/orders'
220
+ _query_url = APIHelper.clean_url _query_builder
221
+
222
+ # Prepare headers.
223
+ @logger.info("Preparing headers for create_order.")
224
+ _headers = {
225
+ 'accept' => 'application/json',
226
+ 'content-type' => 'application/json; charset=utf-8'
227
+ }
228
+
229
+ # Prepare and execute HttpRequest.
230
+ @logger.info('Preparing and executing HttpRequest for create_order.')
231
+ _request = @http_client.post(
232
+ _query_url,
233
+ headers: _headers,
234
+ parameters: body.to_json
235
+ )
236
+ BasicAuth.apply(_request)
237
+ _context = execute_request(_request, name: 'create_order')
238
+
239
+ # Validate response against endpoint and global error codes.
240
+ @logger.info("Validating response for create_order.")
241
+ unless _context.response.status_code.between?(200, 208)
242
+ raise RaasGenericException.new(
243
+ 'API Error',
244
+ _context
245
+ )
246
+ end
247
+ validate_response(_context)
248
+
249
+ # Return appropriate response type.
250
+ @logger.info("Returning response for create_order.")
251
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
252
+ OrderModel.from_hash(decoded)
192
253
 
193
254
  rescue Exception => e
194
255
  @logger.error(e)
@@ -1,41 +1,58 @@
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
+ # StatusController
4
6
  class StatusController < BaseController
5
- @@instance = StatusController.new
6
- # Singleton instance of the controller class
7
- def self.instance
8
- @@instance
7
+ @instance = StatusController.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
- # Retrieve system status
17
+ # Retrieves system status
12
18
  # @return SystemStatusResponseModel response from the API call
13
19
  def get_system_status
14
20
  begin
15
21
  @logger.info("get_system_status called.")
16
-
17
- # prepare query url
22
+ # Prepare query url.
18
23
  @logger.info("Preparing query URL for get_system_status.")
19
- _query_builder = Configuration.get_base_uri()
24
+ _query_builder = Configuration.get_base_uri
20
25
  _query_builder << '/pulse'
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_system_status.")
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_system_status.')
31
- _request = @http_client.get _query_url, headers: _headers
36
+ _request = @http_client.get(
37
+ _query_url,
38
+ headers: _headers
39
+ )
32
40
  _context = execute_request(_request, name: 'get_system_status')
41
+
42
+ # Validate response against endpoint and global error codes.
43
+ @logger.info("Validating response for get_system_status.")
44
+ unless _context.response.status_code.between?(200, 208)
45
+ raise RaasGenericException.new(
46
+ 'API Error',
47
+ _context
48
+ )
49
+ end
33
50
  validate_response(_context)
34
51
 
35
- # return appropriate response type
52
+ # Return appropriate response type.
36
53
  @logger.info("Returning response for get_system_status.")
37
54
  decoded = APIHelper.json_deserialize(_context.response.raw_body)
38
- return SystemStatusResponseModel.from_hash(decoded)
55
+ SystemStatusResponseModel.from_hash(decoded)
39
56
 
40
57
  rescue Exception => e
41
58
  @logger.error(e)
@@ -1,11 +1,13 @@
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
+ # Class for exceptions when there is a network error, status code error, etc.
4
6
  class APIException < StandardError
5
7
  attr_reader :context, :response_code
6
8
 
7
9
  # The constructor.
8
- # @param [String] The reason for raising an exception
10
+ # @param [String] The reason for raising an exception.
9
11
  # @param [HttpContext] The HttpContext of the API call.
10
12
  def initialize(reason, context)
11
13
  super(reason)
@@ -1,7 +1,9 @@
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
  require 'date'
4
5
  module Raas
6
+ # RaaS API 4xx Exception
5
7
  class RaasClientException < APIException
6
8
  # Request timestamp
7
9
  # @return [DateTime]
@@ -28,30 +30,30 @@ module Raas
28
30
  attr_accessor :errors
29
31
 
30
32
  # The constructor.
31
- # @param [String] The reason for raising an exception
33
+ # @param [String] The reason for raising an exception.
32
34
  # @param [HttpContext] The HttpContext of the API call.
33
35
  def initialize(reason, context)
34
36
  super(reason, context)
35
- begin
36
- hash = APIHelper.json_deserialize(@context.response.raw_body)
37
- unbox(hash)
38
- rescue TypeError
39
- end
37
+ hash = APIHelper.json_deserialize(@context.response.raw_body)
38
+ unbox(hash)
40
39
  end
41
40
 
42
41
  # Populates this object by extracting properties from a hash.
43
- # @param [Hash] The deserialized response sent by the server in the response body.
42
+ # @param [Hash] The deserialized response sent by the server in the
43
+ # response body.
44
44
  def unbox(hash)
45
- @timestamp = DateTime.rfc3339(hash['timestamp']) if hash['timestamp']
45
+ @timestamp = APIHelper.rfc3339(hash['timestamp']) if hash['timestamp']
46
46
  @request_id = hash['requestId']
47
47
  @path = hash['path']
48
48
  @http_code = hash['httpCode']
49
49
  @http_phrase = hash['httpPhrase']
50
50
  # Parameter is an array, so we need to iterate through it
51
51
  @errors = nil
52
- if hash['errors'] != nil
53
- @errors = Array.new
54
- hash['errors'].each{|structure| @errors << (RaasClientErrorModel.from_hash(structure) if structure)}
52
+ unless hash['errors'].nil?
53
+ @errors = []
54
+ hash['errors'].each do |structure|
55
+ @errors << (RaasClientErrorModel.from_hash(structure) if structure)
56
+ end
55
57
  end
56
58
  end
57
59
  end