tangocard-raas 1.1.2

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 (50) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +175 -0
  3. data/README.md +542 -0
  4. data/lib/raas.rb +61 -0
  5. data/lib/raas/api_helper.rb +181 -0
  6. data/lib/raas/configuration.rb +72 -0
  7. data/lib/raas/controllers/accounts_controller.rb +189 -0
  8. data/lib/raas/controllers/base_controller.rb +68 -0
  9. data/lib/raas/controllers/catalog_controller.rb +47 -0
  10. data/lib/raas/controllers/customers_controller.rb +137 -0
  11. data/lib/raas/controllers/exchange_rates_controller.rb +36 -0
  12. data/lib/raas/controllers/orders_controller.rb +199 -0
  13. data/lib/raas/controllers/status_controller.rb +46 -0
  14. data/lib/raas/exceptions/api_exception.rb +16 -0
  15. data/lib/raas/exceptions/raas_client_exception.rb +58 -0
  16. data/lib/raas/exceptions/raas_generic_exception.rb +53 -0
  17. data/lib/raas/exceptions/raas_server_exception.rb +58 -0
  18. data/lib/raas/http/auth/basic_auth.rb +17 -0
  19. data/lib/raas/http/faraday_client.rb +43 -0
  20. data/lib/raas/http/http_call_back.rb +17 -0
  21. data/lib/raas/http/http_client.rb +84 -0
  22. data/lib/raas/http/http_context.rb +15 -0
  23. data/lib/raas/http/http_method_enum.rb +7 -0
  24. data/lib/raas/http/http_request.rb +44 -0
  25. data/lib/raas/http/http_response.rb +19 -0
  26. data/lib/raas/models/account_model.rb +88 -0
  27. data/lib/raas/models/account_summary_model.rb +61 -0
  28. data/lib/raas/models/base_model.rb +32 -0
  29. data/lib/raas/models/brand_model.rb +129 -0
  30. data/lib/raas/models/catalog_model.rb +47 -0
  31. data/lib/raas/models/create_account_request_model.rb +51 -0
  32. data/lib/raas/models/create_customer_request_model.rb +42 -0
  33. data/lib/raas/models/create_order_request_model.rb +132 -0
  34. data/lib/raas/models/currency_breakdown_model.rb +69 -0
  35. data/lib/raas/models/customer_model.rb +75 -0
  36. data/lib/raas/models/exchange_rate_model.rb +61 -0
  37. data/lib/raas/models/exchange_rate_response_model.rb +47 -0
  38. data/lib/raas/models/get_orders_response_model.rb +47 -0
  39. data/lib/raas/models/item_model.rb +133 -0
  40. data/lib/raas/models/name_email_model.rb +51 -0
  41. data/lib/raas/models/order_model.rb +187 -0
  42. data/lib/raas/models/page_model.rb +60 -0
  43. data/lib/raas/models/raas_client_error_model.rb +60 -0
  44. data/lib/raas/models/raas_server_error_model.rb +42 -0
  45. data/lib/raas/models/resend_order_response_model.rb +43 -0
  46. data/lib/raas/models/reward_credential_model.rb +51 -0
  47. data/lib/raas/models/reward_model.rb +56 -0
  48. data/lib/raas/models/system_status_response_model.rb +33 -0
  49. data/lib/raas/raas_client.rb +53 -0
  50. metadata +175 -0
@@ -0,0 +1,68 @@
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module Raas
4
+ class BaseController
5
+ attr_accessor :http_client, :http_call_back
6
+
7
+ @@http_client = FaradayClient.new(timeout: 15)
8
+
9
+ @@global_headers = {
10
+ 'user-agent' => 'TangoCardv2NGSDK'
11
+ }
12
+
13
+ def initialize(http_client: nil, http_call_back: nil)
14
+ @http_client = http_client ||= @@http_client
15
+ @http_call_back = http_call_back
16
+ @logger = Logging.logger[self]
17
+ @logger.info("Instantiated controller class.")
18
+ end
19
+
20
+ def validate_parameters(args)
21
+ args.each do |_name, value|
22
+ if value.nil?
23
+ raise ArgumentError.new 'Required parameter #{name} cannot be nil.'
24
+ end
25
+ end
26
+ end
27
+
28
+ def execute_request(request, binary: false, name: nil)
29
+ @logger.info("Calling the on_before_request method of http_call_back for #{name}.") if @http_call_back
30
+ @http_call_back.on_before_request(request) if @http_call_back
31
+
32
+ @logger.info("Merging global headers with endpoint headers for #{name}.")
33
+ APIHelper.clean_hash(request.headers)
34
+ request.headers = @@global_headers.clone.merge(request.headers)
35
+
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)
38
+ @logger.debug("Raw response for #{name} is: #{response.inspect}")
39
+ @logger.info("Wrapping request and response in a context object for #{name}.")
40
+ context = HttpContext.new(request, response)
41
+
42
+ @logger.info("Calling on_after_response method of http_call_back for #{name}.") if @http_call_back
43
+ @http_call_back.on_after_response(context) if @http_call_back
44
+
45
+ return context
46
+ end
47
+
48
+ 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
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,47 @@
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module Raas
4
+ class CatalogController < BaseController
5
+ @@instance = CatalogController.new
6
+ # Singleton instance of the controller class
7
+ def self.instance
8
+ @@instance
9
+ end
10
+
11
+ # Get Catalog
12
+ # @return CatalogModel response from the API call
13
+ def get_catalog
14
+ begin
15
+ @logger.info("get_catalog called.")
16
+
17
+ # prepare query url
18
+ @logger.info("Preparing query URL for get_catalog.")
19
+ _query_builder = Configuration.get_base_uri()
20
+ _query_builder << '/catalogs'
21
+ _query_url = APIHelper.clean_url _query_builder
22
+
23
+ # prepare headers
24
+ @logger.info("Preparing headers for get_catalog.")
25
+ _headers = {
26
+ 'accept' => 'application/json'
27
+ }
28
+
29
+ # prepare and execute HttpRequest
30
+ @logger.info('Preparing and executing HttpRequest for get_catalog.')
31
+ _request = @http_client.get _query_url, headers: _headers
32
+ BasicAuth.apply(_request)
33
+ _context = execute_request(_request, name: 'get_catalog')
34
+ validate_response(_context)
35
+
36
+ # return appropriate response type
37
+ @logger.info("Returning response for get_catalog.")
38
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
39
+ return CatalogModel.from_hash(decoded)
40
+
41
+ rescue Exception => e
42
+ @logger.error(e)
43
+ raise e
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,137 @@
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module Raas
4
+ class CustomersController < BaseController
5
+ @@instance = CustomersController.new
6
+ # Singleton instance of the controller class
7
+ def self.instance
8
+ @@instance
9
+ end
10
+
11
+ # Get a customer
12
+ # @param [String] customer_identifier Required parameter: Customer Identifier
13
+ # @return CustomerModel response from the API call
14
+ def get_customer(customer_identifier)
15
+ begin
16
+ @logger.info("get_customer called.")
17
+
18
+ # validate required parameters
19
+ @logger.info("Validating required parameters for get_customer.")
20
+ validate_parameters({
21
+ 'customer_identifier' => customer_identifier
22
+ })
23
+
24
+ # prepare query url
25
+ @logger.info("Preparing query URL for get_customer.")
26
+ _query_builder = Configuration.get_base_uri()
27
+ _query_builder << '/customers/{customerIdentifier}'
28
+ _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
29
+ 'customerIdentifier' => customer_identifier
30
+ }
31
+ _query_url = APIHelper.clean_url _query_builder
32
+
33
+ # prepare headers
34
+ @logger.info("Preparing headers for get_customer.")
35
+ _headers = {
36
+ 'accept' => 'application/json'
37
+ }
38
+
39
+ # prepare and execute HttpRequest
40
+ @logger.info('Preparing and executing HttpRequest for get_customer.')
41
+ _request = @http_client.get _query_url, headers: _headers
42
+ BasicAuth.apply(_request)
43
+ _context = execute_request(_request, name: 'get_customer')
44
+ validate_response(_context)
45
+
46
+ # return appropriate response type
47
+ @logger.info("Returning response for get_customer.")
48
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
49
+ return CustomerModel.from_hash(decoded)
50
+
51
+ rescue Exception => e
52
+ @logger.error(e)
53
+ raise e
54
+ end
55
+ end
56
+
57
+ # Create a new customer
58
+ # @param [CreateCustomerRequestModel] body Required parameter: Request Body
59
+ # @return CustomerModel response from the API call
60
+ def create_customer(body)
61
+ begin
62
+ @logger.info("create_customer called.")
63
+
64
+ # validate required parameters
65
+ @logger.info("Validating required parameters for create_customer.")
66
+ validate_parameters({
67
+ 'body' => body
68
+ })
69
+
70
+ # prepare query url
71
+ @logger.info("Preparing query URL for create_customer.")
72
+ _query_builder = Configuration.get_base_uri()
73
+ _query_builder << '/customers'
74
+ _query_url = APIHelper.clean_url _query_builder
75
+
76
+ # prepare headers
77
+ @logger.info("Preparing headers for create_customer.")
78
+ _headers = {
79
+ 'accept' => 'application/json',
80
+ 'content-type' => 'application/json; charset=utf-8'
81
+ }
82
+
83
+ # prepare and execute HttpRequest
84
+ @logger.info('Preparing and executing HttpRequest for create_customer.')
85
+ _request = @http_client.post _query_url, headers: _headers, parameters: body.to_json
86
+ BasicAuth.apply(_request)
87
+ _context = execute_request(_request, name: 'create_customer')
88
+ validate_response(_context)
89
+
90
+ # return appropriate response type
91
+ @logger.info("Returning response for create_customer.")
92
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
93
+ return CustomerModel.from_hash(decoded)
94
+
95
+ rescue Exception => e
96
+ @logger.error(e)
97
+ raise e
98
+ end
99
+ end
100
+
101
+ # Gets all customers under the platform
102
+ # @return List of CustomerModel response from the API call
103
+ def get_all_customers
104
+ begin
105
+ @logger.info("get_all_customers called.")
106
+
107
+ # prepare query url
108
+ @logger.info("Preparing query URL for get_all_customers.")
109
+ _query_builder = Configuration.get_base_uri()
110
+ _query_builder << '/customers'
111
+ _query_url = APIHelper.clean_url _query_builder
112
+
113
+ # prepare headers
114
+ @logger.info("Preparing headers for get_all_customers.")
115
+ _headers = {
116
+ 'accept' => 'application/json'
117
+ }
118
+
119
+ # prepare and execute HttpRequest
120
+ @logger.info('Preparing and executing HttpRequest for get_all_customers.')
121
+ _request = @http_client.get _query_url, headers: _headers
122
+ BasicAuth.apply(_request)
123
+ _context = execute_request(_request, name: 'get_all_customers')
124
+ validate_response(_context)
125
+
126
+ # return appropriate response type
127
+ @logger.info("Returning response for get_all_customers.")
128
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
129
+ return decoded.map{|element| CustomerModel.from_hash(element)}
130
+
131
+ rescue Exception => e
132
+ @logger.error(e)
133
+ raise e
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,36 @@
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module Raas
4
+ class ExchangeRatesController < BaseController
5
+ @@instance = ExchangeRatesController.new
6
+ # Singleton instance of the controller class
7
+ def self.instance
8
+ @@instance
9
+ end
10
+
11
+ # Retrieve current exchange rates
12
+ # @return void response from the API call
13
+ def get_exchange_rates
14
+ begin
15
+ @logger.info("get_exchange_rates called.")
16
+
17
+ # prepare query url
18
+ @logger.info("Preparing query URL for get_exchange_rates.")
19
+ _query_builder = Configuration.get_base_uri()
20
+ _query_builder << '/exchangerate'
21
+ _query_url = APIHelper.clean_url _query_builder
22
+
23
+ # prepare and execute HttpRequest
24
+ @logger.info('Preparing and executing HttpRequest for get_exchange_rates.')
25
+ _request = @http_client.get _query_url
26
+ BasicAuth.apply(_request)
27
+ _context = execute_request(_request, name: 'get_exchange_rates')
28
+ validate_response(_context)
29
+
30
+ rescue Exception => e
31
+ @logger.error(e)
32
+ raise e
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,199 @@
1
+ # This file was automatically generated for Tango Card, Inc. by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module Raas
4
+ class OrdersController < BaseController
5
+ @@instance = OrdersController.new
6
+ # Singleton instance of the controller class
7
+ def self.instance
8
+ @@instance
9
+ end
10
+
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)
48
+
49
+ rescue Exception => e
50
+ @logger.error(e)
51
+ raise e
52
+ end
53
+ end
54
+
55
+ # TODO: type endpoint description here
56
+ # @param [String] reference_order_id Required parameter: Reference Order ID
57
+ # @return OrderModel response from the API call
58
+ def get_order(reference_order_id)
59
+ begin
60
+ @logger.info("get_order called.")
61
+
62
+ # validate required parameters
63
+ @logger.info("Validating required parameters for get_order.")
64
+ validate_parameters({
65
+ 'reference_order_id' => reference_order_id
66
+ })
67
+
68
+ # prepare query url
69
+ @logger.info("Preparing query URL for get_order.")
70
+ _query_builder = Configuration.get_base_uri()
71
+ _query_builder << '/orders/{referenceOrderID}'
72
+ _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
73
+ 'referenceOrderID' => reference_order_id
74
+ }
75
+ _query_url = APIHelper.clean_url _query_builder
76
+
77
+ # prepare headers
78
+ @logger.info("Preparing headers for get_order.")
79
+ _headers = {
80
+ 'accept' => 'application/json'
81
+ }
82
+
83
+ # prepare and execute HttpRequest
84
+ @logger.info('Preparing and executing HttpRequest for get_order.')
85
+ _request = @http_client.get _query_url, headers: _headers
86
+ BasicAuth.apply(_request)
87
+ _context = execute_request(_request, name: 'get_order')
88
+ validate_response(_context)
89
+
90
+ # return appropriate response type
91
+ @logger.info("Returning response for get_order.")
92
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
93
+ return OrderModel.from_hash(decoded)
94
+
95
+ rescue Exception => e
96
+ @logger.error(e)
97
+ raise e
98
+ end
99
+ end
100
+
101
+ # TODO: type endpoint description here
102
+ # @param [String] reference_order_id Required parameter: Example:
103
+ # @return ResendOrderResponseModel response from the API call
104
+ def create_resend_order(reference_order_id)
105
+ begin
106
+ @logger.info("create_resend_order called.")
107
+
108
+ # validate required parameters
109
+ @logger.info("Validating required parameters for create_resend_order.")
110
+ validate_parameters({
111
+ 'reference_order_id' => reference_order_id
112
+ })
113
+
114
+ # prepare query url
115
+ @logger.info("Preparing query URL for create_resend_order.")
116
+ _query_builder = Configuration.get_base_uri()
117
+ _query_builder << '/orders/{referenceOrderID}/resends'
118
+ _query_builder = APIHelper.append_url_with_template_parameters _query_builder, {
119
+ 'referenceOrderID' => reference_order_id
120
+ }
121
+ _query_url = APIHelper.clean_url _query_builder
122
+
123
+ # prepare headers
124
+ @logger.info("Preparing headers for create_resend_order.")
125
+ _headers = {
126
+ 'accept' => 'application/json'
127
+ }
128
+
129
+ # prepare and execute HttpRequest
130
+ @logger.info('Preparing and executing HttpRequest for create_resend_order.')
131
+ _request = @http_client.post _query_url, headers: _headers
132
+ BasicAuth.apply(_request)
133
+ _context = execute_request(_request, name: 'create_resend_order')
134
+ validate_response(_context)
135
+
136
+ # return appropriate response type
137
+ @logger.info("Returning response for create_resend_order.")
138
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
139
+ return ResendOrderResponseModel.from_hash(decoded)
140
+
141
+ rescue Exception => e
142
+ @logger.error(e)
143
+ raise e
144
+ end
145
+ end
146
+
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:
155
+ # @return GetOrdersResponseModel response from the API call
156
+ def get_orders(options = Hash.new)
157
+ begin
158
+ @logger.info("get_orders called.")
159
+
160
+ # prepare query url
161
+ @logger.info("Preparing query URL for get_orders.")
162
+ _query_builder = Configuration.get_base_uri()
163
+ _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
173
+ _query_url = APIHelper.clean_url _query_builder
174
+
175
+ # prepare headers
176
+ @logger.info("Preparing headers for get_orders.")
177
+ _headers = {
178
+ 'accept' => 'application/json'
179
+ }
180
+
181
+ # prepare and execute HttpRequest
182
+ @logger.info('Preparing and executing HttpRequest for get_orders.')
183
+ _request = @http_client.get _query_url, headers: _headers
184
+ BasicAuth.apply(_request)
185
+ _context = execute_request(_request, name: 'get_orders')
186
+ validate_response(_context)
187
+
188
+ # return appropriate response type
189
+ @logger.info("Returning response for get_orders.")
190
+ decoded = APIHelper.json_deserialize(_context.response.raw_body)
191
+ return GetOrdersResponseModel.from_hash(decoded)
192
+
193
+ rescue Exception => e
194
+ @logger.error(e)
195
+ raise e
196
+ end
197
+ end
198
+ end
199
+ end