moneykit 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/moneykit/api/access_token_api.rb +9 -9
  4. data/lib/moneykit/api/account_numbers_api.rb +6 -6
  5. data/lib/moneykit/api/accounts_api.rb +15 -15
  6. data/lib/moneykit/api/identity_api.rb +6 -6
  7. data/lib/moneykit/api/institutions_api.rb +7 -7
  8. data/lib/moneykit/api/link_session_api.rb +7 -7
  9. data/lib/moneykit/api/links_api.rb +76 -13
  10. data/lib/moneykit/api/products_api.rb +6 -6
  11. data/lib/moneykit/api/transactions_api.rb +28 -28
  12. data/lib/moneykit/api/users_api.rb +14 -14
  13. data/lib/moneykit/api/webhooks_api.rb +97 -0
  14. data/lib/moneykit/api_client.rb +40 -36
  15. data/lib/moneykit/api_error.rb +1 -1
  16. data/lib/moneykit/configuration.rb +20 -30
  17. data/lib/moneykit/models/account.rb +27 -54
  18. data/lib/moneykit/models/account_balances.rb +18 -27
  19. data/lib/moneykit/models/account_group.rb +23 -26
  20. data/lib/moneykit/models/account_identity.rb +34 -59
  21. data/lib/moneykit/models/account_numbers.rb +75 -51
  22. data/lib/moneykit/models/account_numbers_link_product.rb +18 -28
  23. data/lib/moneykit/models/account_numbers_product_settings.rb +16 -21
  24. data/lib/moneykit/models/account_with_account_numbers.rb +29 -56
  25. data/lib/moneykit/models/accounts_link_product.rb +17 -25
  26. data/lib/moneykit/models/ach_number.rb +19 -26
  27. data/lib/moneykit/models/address.rb +17 -28
  28. data/lib/moneykit/models/api_error_auth_expired_access_token_response.rb +17 -24
  29. data/lib/moneykit/models/api_error_auth_unauthorized_response.rb +18 -25
  30. data/lib/moneykit/models/api_error_rate_limit_exceeded_response.rb +17 -24
  31. data/lib/moneykit/models/bacs_number.rb +18 -25
  32. data/lib/moneykit/models/basic_account_details.rb +20 -29
  33. data/lib/moneykit/models/country.rb +1 -1
  34. data/lib/moneykit/models/create_link_session_request.rb +48 -45
  35. data/lib/moneykit/models/create_link_session_response.rb +17 -24
  36. data/lib/moneykit/models/currency.rb +1 -1
  37. data/lib/moneykit/models/cursor_pagination.rb +17 -24
  38. data/lib/moneykit/models/customer_app.rb +18 -25
  39. data/lib/moneykit/models/eft_number.rb +19 -26
  40. data/lib/moneykit/models/email.rb +17 -22
  41. data/lib/moneykit/models/exchange_token_request.rb +17 -24
  42. data/lib/moneykit/models/exchange_token_response.rb +19 -26
  43. data/lib/moneykit/models/generate_access_token_response.rb +19 -26
  44. data/lib/moneykit/models/get_account_numbers_response.rb +23 -26
  45. data/lib/moneykit/models/get_account_response.rb +19 -26
  46. data/lib/moneykit/models/get_accounts_response.rb +25 -31
  47. data/lib/moneykit/models/get_institutions_response.rb +25 -31
  48. data/lib/moneykit/models/get_transactions_response.rb +34 -39
  49. data/lib/moneykit/models/get_user_accounts_response.rb +24 -32
  50. data/lib/moneykit/models/get_user_links_response.rb +24 -32
  51. data/lib/moneykit/models/get_user_transactions_response.rb +32 -34
  52. data/lib/moneykit/models/http_validation_error.rb +24 -28
  53. data/lib/moneykit/models/identity_link_product.rb +18 -28
  54. data/lib/moneykit/models/identity_product_settings.rb +16 -21
  55. data/lib/moneykit/models/identity_response.rb +24 -30
  56. data/lib/moneykit/models/institution.rb +29 -38
  57. data/lib/moneykit/models/institution_error_not_found_response.rb +17 -24
  58. data/lib/moneykit/models/international_number.rb +18 -25
  59. data/lib/moneykit/models/introspect_client_response.rb +22 -29
  60. data/lib/moneykit/models/jwk_set.rb +23 -26
  61. data/lib/moneykit/models/link_common.rb +25 -39
  62. data/lib/moneykit/models/link_error_bad_config_response.rb +269 -0
  63. data/lib/moneykit/models/link_error_bad_state_response.rb +19 -28
  64. data/lib/moneykit/models/link_error_deleted_response.rb +17 -24
  65. data/lib/moneykit/models/link_error_forbidden_action_response.rb +18 -25
  66. data/lib/moneykit/models/link_error_not_found_response.rb +17 -24
  67. data/lib/moneykit/models/link_error_unauthorized_access_response.rb +17 -24
  68. data/lib/moneykit/models/link_permission_scope.rb +1 -1
  69. data/lib/moneykit/models/link_permissions.rb +23 -33
  70. data/lib/moneykit/models/link_products.rb +16 -21
  71. data/lib/moneykit/models/link_response.rb +26 -39
  72. data/lib/moneykit/models/link_session_customer_user.rb +20 -28
  73. data/lib/moneykit/models/link_session_customer_user_email.rb +18 -25
  74. data/lib/moneykit/models/link_session_customer_user_phone.rb +18 -26
  75. data/lib/moneykit/models/link_session_error_forbidden_config_response.rb +18 -25
  76. data/lib/moneykit/models/link_session_error_invalid_token_exchange.rb +18 -25
  77. data/lib/moneykit/models/link_session_setting_overrides.rb +19 -43
  78. data/lib/moneykit/models/link_state.rb +1 -1
  79. data/lib/moneykit/models/link_state_changed_webhook.rb +28 -31
  80. data/lib/moneykit/models/money_link_features.rb +27 -32
  81. data/lib/moneykit/models/owner.rb +42 -42
  82. data/lib/moneykit/models/phone_number.rb +18 -25
  83. data/lib/moneykit/models/phone_number_type.rb +1 -1
  84. data/lib/moneykit/models/product.rb +1 -1
  85. data/lib/moneykit/models/products_settings.rb +19 -24
  86. data/lib/moneykit/models/provider.rb +4 -2
  87. data/lib/moneykit/models/public_link_error.rb +43 -0
  88. data/lib/moneykit/models/refresh_products_request.rb +23 -34
  89. data/lib/moneykit/models/requested_link_permission.rb +19 -26
  90. data/lib/moneykit/models/response401_disconnect_links_id_delete.rb +75 -269
  91. data/lib/moneykit/models/response401_exchange_token_link_session_exchange_token_post.rb +74 -267
  92. data/lib/moneykit/models/response401_get_account_links_id_accounts_account_id_get.rb +75 -269
  93. data/lib/moneykit/models/response401_get_account_numbers_links_id_accounts_numbers_get.rb +75 -269
  94. data/lib/moneykit/models/response401_get_accounts_links_id_accounts_get.rb +75 -269
  95. data/lib/moneykit/models/response401_get_identities_links_id_identity_get.rb +75 -269
  96. data/lib/moneykit/models/response401_get_institution_institutions_institution_id_get.rb +74 -267
  97. data/lib/moneykit/models/response401_get_institutions_institutions_get.rb +74 -267
  98. data/lib/moneykit/models/response401_get_link_links_id_get.rb +75 -269
  99. data/lib/moneykit/models/response401_get_transactions_diff_links_id_transactions_sync_get.rb +75 -269
  100. data/lib/moneykit/models/response401_get_transactions_links_id_transactions_get.rb +75 -269
  101. data/lib/moneykit/models/response401_get_user_accounts_users_id_accounts_get.rb +74 -267
  102. data/lib/moneykit/models/response401_get_user_links_users_id_links_get.rb +74 -267
  103. data/lib/moneykit/models/response401_get_user_transactions_users_id_transactions_get.rb +74 -267
  104. data/lib/moneykit/models/response401_get_well_known_jwks_well_known_jwks_json_get.rb +74 -267
  105. data/lib/moneykit/models/response401_instrospect_client_auth_introspect_get.rb +74 -267
  106. data/lib/moneykit/models/response401_refresh_products_links_id_products_post.rb +75 -269
  107. data/lib/moneykit/models/response401_reset_login_links_id_reset_post.rb +102 -0
  108. data/lib/moneykit/models/response401_trigger_test_link_webhook_event_webhooks_test_link_id_post.rb +102 -0
  109. data/lib/moneykit/models/response401_update_link_links_id_patch.rb +75 -269
  110. data/lib/moneykit/models/transaction.rb +35 -35
  111. data/lib/moneykit/models/transaction_diff.rb +36 -37
  112. data/lib/moneykit/models/transaction_sync_response.rb +23 -30
  113. data/lib/moneykit/models/transaction_type.rb +1 -1
  114. data/lib/moneykit/models/transaction_type_filter.rb +1 -1
  115. data/lib/moneykit/models/transactions_link_product.rb +18 -28
  116. data/lib/moneykit/models/transactions_product_settings.rb +16 -21
  117. data/lib/moneykit/models/update_link_request.rb +21 -28
  118. data/lib/moneykit/models/validation_error.rb +25 -28
  119. data/lib/moneykit/models/validation_error_location_inner.rb +101 -0
  120. data/lib/moneykit/models/webhook_link_test_event.rb +40 -0
  121. data/lib/moneykit/models/webhook_test_link_request.rb +252 -0
  122. data/lib/moneykit/models/webhook_test_link_response.rb +220 -0
  123. data/lib/moneykit/version.rb +2 -2
  124. data/lib/moneykit.rb +10 -29
  125. data/lib/plaid_compatible/money_kit_plaid_compatible/api/plaid_api.rb +684 -679
  126. data/lib/plaid_compatible/money_kit_plaid_compatible/api_client.rb +330 -330
  127. data/lib/plaid_compatible/money_kit_plaid_compatible/api_error.rb +33 -33
  128. data/lib/plaid_compatible/money_kit_plaid_compatible/configuration.rb +245 -245
  129. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_balance.rb +198 -198
  130. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_base.rb +213 -213
  131. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_identity.rb +223 -223
  132. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_subtype.rb +89 -89
  133. data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_type.rb +22 -22
  134. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request.rb +198 -198
  135. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request_options.rb +175 -175
  136. data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_response.rb +194 -194
  137. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address.rb +183 -183
  138. data/lib/plaid_compatible/money_kit_plaid_compatible/models/address_data.rb +209 -209
  139. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_numbers.rb +211 -209
  140. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request.rb +198 -198
  141. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request_options.rb +175 -175
  142. data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_response.rb +200 -200
  143. data/lib/plaid_compatible/money_kit_plaid_compatible/models/country_code.rb +19 -19
  144. data/lib/plaid_compatible/money_kit_plaid_compatible/models/email.rb +184 -184
  145. data/lib/plaid_compatible/money_kit_plaid_compatible/models/http_validation_error.rb +171 -171
  146. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request.rb +198 -198
  147. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request_options.rb +175 -175
  148. data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_response.rb +194 -194
  149. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institution.rb +216 -214
  150. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_request.rb +202 -202
  151. data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_response.rb +183 -183
  152. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item.rb +246 -245
  153. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_error_webhook.rb +208 -208
  154. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_request.rb +192 -192
  155. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_response.rb +189 -189
  156. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_request.rb +192 -192
  157. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_response.rb +193 -193
  158. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_request.rb +192 -192
  159. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_response.rb +175 -175
  160. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_investments.rb +182 -182
  161. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_last_webhook.rb +182 -182
  162. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_nullable.rb +183 -183
  163. data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_transactions.rb +182 -182
  164. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request.rb +268 -266
  165. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request_user.rb +212 -212
  166. data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_response.rb +193 -193
  167. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_ach.rb +202 -202
  168. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_bacs.rb +193 -193
  169. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_eft.rb +202 -202
  170. data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_international.rb +193 -193
  171. data/lib/plaid_compatible/money_kit_plaid_compatible/models/owner.rb +211 -209
  172. data/lib/plaid_compatible/money_kit_plaid_compatible/models/personal_finance_category.rb +184 -184
  173. data/lib/plaid_compatible/money_kit_plaid_compatible/models/phone_number.rb +193 -193
  174. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error.rb +247 -245
  175. data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error_type.rb +30 -30
  176. data/lib/plaid_compatible/money_kit_plaid_compatible/models/products.rb +20 -20
  177. data/lib/plaid_compatible/money_kit_plaid_compatible/models/removed_transaction.rb +174 -174
  178. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transaction.rb +283 -283
  179. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request.rb +217 -217
  180. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request_options.rb +211 -211
  181. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_response.rb +217 -217
  182. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_request.rb +192 -192
  183. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_response.rb +175 -175
  184. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request.rb +215 -215
  185. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request_options.rb +184 -184
  186. data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_response.rb +228 -228
  187. data/lib/plaid_compatible/money_kit_plaid_compatible/models/validation_error.rb +187 -187
  188. data/lib/plaid_compatible/money_kit_plaid_compatible/models/webhook_environment_values.rb +19 -19
  189. data/lib/plaid_compatible/money_kit_plaid_compatible/version.rb +1 -1
  190. data/lib/plaid_compatible/money_kit_plaid_compatible.rb +13 -13
  191. data/moneykit.gemspec +2 -1
  192. metadata +14 -5
@@ -10,48 +10,48 @@
10
10
 
11
11
  module MoneyKit
12
12
  module PlaidCompatible
13
- class ApiError < StandardError
14
- attr_reader :code, :response_headers, :response_body, :data
13
+ class ApiError < StandardError
14
+ attr_reader :code, :response_headers, :response_body, :data
15
15
 
16
- # Usage examples:
17
- # ApiError.new
18
- # ApiError.new("message")
19
- # ApiError.new(:code => 500, :response_headers => {}, :response_body => "")
20
- # ApiError.new(:code => 404, :message => "Not Found")
21
- def initialize(arg = nil)
22
- if arg.is_a? Hash
23
- if arg.key?(:message) || arg.key?('message')
24
- super(arg[:message] || arg['message'])
16
+ # Usage examples:
17
+ # ApiError.new
18
+ # ApiError.new("message")
19
+ # ApiError.new(:code => 500, :response_headers => {}, :response_body => "")
20
+ # ApiError.new(:code => 404, :message => "Not Found")
21
+ def initialize(arg = nil)
22
+ if arg.is_a? Hash
23
+ if arg.key?(:message) || arg.key?('message')
24
+ super(arg[:message] || arg['message'])
25
+ else
26
+ super arg
27
+ end
28
+
29
+ arg.each do |k, v|
30
+ instance_variable_set "@#{k}", v
31
+ end
25
32
  else
26
33
  super arg
27
34
  end
28
-
29
- arg.each do |k, v|
30
- instance_variable_set "@#{k}", v
31
- end
32
- else
33
- super arg
34
35
  end
35
- end
36
36
 
37
- # Override to_s to display a friendly error message
38
- def to_s
39
- message
40
- end
37
+ # Override to_s to display a friendly error message
38
+ def to_s
39
+ message
40
+ end
41
41
 
42
- def message
43
- msg = if @message.nil?
44
- 'Error message: the server returns an error'
45
- else
46
- @message
47
- end
42
+ def message
43
+ msg = if @message.nil?
44
+ 'Error message: the server returns an error'
45
+ else
46
+ @message
47
+ end
48
48
 
49
- msg += "\nHTTP status code: #{code}" if code
50
- msg += "\nResponse headers: #{response_headers}" if response_headers
51
- msg += "\nResponse body: #{response_body}" if response_body
49
+ msg += "\nHTTP status code: #{code}" if code
50
+ msg += "\nResponse headers: #{response_headers}" if response_headers
51
+ msg += "\nResponse body: #{response_body}" if response_body
52
52
 
53
- msg
53
+ msg
54
+ end
54
55
  end
55
56
  end
56
- end
57
57
  end
@@ -10,276 +10,276 @@
10
10
 
11
11
  module MoneyKit
12
12
  module PlaidCompatible
13
- class Configuration
14
- # Plaid Environment mapping
15
- # production, development, sandbox
16
- Environment = { 'production' => 0, 'sandbox' => 1 }
17
-
18
- # Defines url scheme
19
- attr_accessor :scheme
20
-
21
- # Defines url host
22
- attr_accessor :host
23
-
24
- # Defines url base path
25
- attr_accessor :base_path
26
-
27
- # Define server configuration index
28
- attr_accessor :server_index
29
-
30
- # Define server operation configuration index
31
- attr_accessor :server_operation_index
32
-
33
- # Default server variables
34
- attr_accessor :server_variables
35
-
36
- # Default server operation variables
37
- attr_accessor :server_operation_variables
38
-
39
- # Defines API keys used with API Key authentications.
40
- #
41
- # @return [Hash] key: parameter name, value: parameter value (API key)
42
- #
43
- # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string)
44
- # config.api_key['api_key'] = 'xxx'
45
- attr_accessor :api_key
46
-
47
- # Defines API key prefixes used with API Key authentications.
48
- #
49
- # @return [Hash] key: parameter name, value: API key prefix
50
- #
51
- # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers)
52
- # config.api_key_prefix['api_key'] = 'Token'
53
- attr_accessor :api_key_prefix
54
-
55
- # Defines the username used with HTTP basic authentication.
56
- #
57
- # @return [String]
58
- attr_accessor :username
59
-
60
- # Defines the password used with HTTP basic authentication.
61
- #
62
- # @return [String]
63
- attr_accessor :password
64
-
65
- # Defines the access token (Bearer) used with OAuth2.
66
- attr_accessor :access_token
67
-
68
- # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
69
- # details will be logged with `logger.debug` (see the `logger` attribute).
70
- # Default to false.
71
- #
72
- # @return [true, false]
73
- attr_accessor :debugging
74
-
75
- # Defines the logger used for debugging.
76
- # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
77
- #
78
- # @return [#debug]
79
- attr_accessor :logger
80
-
81
- # Defines the temporary folder to store downloaded files
82
- # (for API endpoints that have file response).
83
- # Default to use `Tempfile`.
84
- #
85
- # @return [String]
86
- attr_accessor :temp_folder_path
87
-
88
- # The time limit for HTTP request in seconds.
89
- attr_accessor :timeout
90
-
91
- # Set this to false to skip client side validation in the operation.
92
- # Default to true.
93
- # @return [true, false]
94
- attr_accessor :client_side_validation
95
-
96
- ### TLS/SSL setting
97
- # Set this to false to skip verifying SSL certificate when calling API from https server.
98
- # Default to true.
99
- #
100
- # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
101
- #
102
- # @return [true, false]
103
- attr_accessor :ssl_verify
104
-
105
- ### TLS/SSL setting
106
- # Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
107
- #
108
- # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
109
- #
110
- attr_accessor :ssl_verify_mode
111
-
112
- ### TLS/SSL setting
113
- # Set this to customize the certificate file to verify the peer.
114
- #
115
- # @return [String] the path to the certificate file
116
- attr_accessor :ssl_ca_file
117
-
118
- ### TLS/SSL setting
119
- # Client certificate file (for client certificate)
120
- attr_accessor :ssl_client_cert
121
-
122
- ### TLS/SSL setting
123
- # Client private key file (for client certificate)
124
- attr_accessor :ssl_client_key
125
-
126
- # Set this to customize parameters encoding of array parameter with multi collectionFormat.
127
- # Default to nil.
128
- #
129
- # @see The params_encoding option of Ethon. Related source code:
130
- # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96
131
- attr_accessor :params_encoding
132
-
133
- attr_accessor :inject_format, :force_ending_format
134
-
135
- def initialize
136
- @scheme = 'https'
137
- @host = 'production.moneykit.com'
138
- @base_path = '/plaid-compatible'
139
- @server_index = 0
140
- @server_operation_index = {}
141
- @server_variables = {}
142
- @server_operation_variables = {}
143
- @api_key = {
144
- 'Plaid-Version' => ''
145
- }
146
- @api_key_prefix = {}
147
- @timeout = 60
148
- @client_side_validation = true
149
- @ssl_verify = true
150
- @ssl_verify_mode = nil
151
- @ssl_ca_file = nil
152
- @ssl_client_cert = nil
153
- @ssl_client_key = nil
154
- @debugging = false
155
- @inject_format = false
156
- @force_ending_format = false
157
- @logger = defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger : Logger.new(STDOUT)
158
-
159
- yield(self) if block_given?
160
- end
13
+ class Configuration
14
+ # Plaid Environment mapping
15
+ # production, development, sandbox
16
+ Environment = { 'production' => 0, 'sandbox' => 1 }
17
+
18
+ # Defines url scheme
19
+ attr_accessor :scheme
20
+
21
+ # Defines url host
22
+ attr_accessor :host
23
+
24
+ # Defines url base path
25
+ attr_accessor :base_path
26
+
27
+ # Define server configuration index
28
+ attr_accessor :server_index
29
+
30
+ # Define server operation configuration index
31
+ attr_accessor :server_operation_index
32
+
33
+ # Default server variables
34
+ attr_accessor :server_variables
35
+
36
+ # Default server operation variables
37
+ attr_accessor :server_operation_variables
38
+
39
+ # Defines API keys used with API Key authentications.
40
+ #
41
+ # @return [Hash] key: parameter name, value: parameter value (API key)
42
+ #
43
+ # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string)
44
+ # config.api_key['api_key'] = 'xxx'
45
+ attr_accessor :api_key
46
+
47
+ # Defines API key prefixes used with API Key authentications.
48
+ #
49
+ # @return [Hash] key: parameter name, value: API key prefix
50
+ #
51
+ # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers)
52
+ # config.api_key_prefix['api_key'] = 'Token'
53
+ attr_accessor :api_key_prefix
54
+
55
+ # Defines the username used with HTTP basic authentication.
56
+ #
57
+ # @return [String]
58
+ attr_accessor :username
59
+
60
+ # Defines the password used with HTTP basic authentication.
61
+ #
62
+ # @return [String]
63
+ attr_accessor :password
64
+
65
+ # Defines the access token (Bearer) used with OAuth2.
66
+ attr_accessor :access_token
67
+
68
+ # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response
69
+ # details will be logged with `logger.debug` (see the `logger` attribute).
70
+ # Default to false.
71
+ #
72
+ # @return [true, false]
73
+ attr_accessor :debugging
74
+
75
+ # Defines the logger used for debugging.
76
+ # Default to `Rails.logger` (when in Rails) or logging to STDOUT.
77
+ #
78
+ # @return [#debug]
79
+ attr_accessor :logger
80
+
81
+ # Defines the temporary folder to store downloaded files
82
+ # (for API endpoints that have file response).
83
+ # Default to use `Tempfile`.
84
+ #
85
+ # @return [String]
86
+ attr_accessor :temp_folder_path
87
+
88
+ # The time limit for HTTP request in seconds.
89
+ attr_accessor :timeout
90
+
91
+ # Set this to false to skip client side validation in the operation.
92
+ # Default to true.
93
+ # @return [true, false]
94
+ attr_accessor :client_side_validation
95
+
96
+ ### TLS/SSL setting
97
+ # Set this to false to skip verifying SSL certificate when calling API from https server.
98
+ # Default to true.
99
+ #
100
+ # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
101
+ #
102
+ # @return [true, false]
103
+ attr_accessor :ssl_verify
104
+
105
+ ### TLS/SSL setting
106
+ # Any `OpenSSL::SSL::` constant (see https://ruby-doc.org/stdlib-2.5.1/libdoc/openssl/rdoc/OpenSSL/SSL.html)
107
+ #
108
+ # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks.
109
+ #
110
+ attr_accessor :ssl_verify_mode
111
+
112
+ ### TLS/SSL setting
113
+ # Set this to customize the certificate file to verify the peer.
114
+ #
115
+ # @return [String] the path to the certificate file
116
+ attr_accessor :ssl_ca_file
117
+
118
+ ### TLS/SSL setting
119
+ # Client certificate file (for client certificate)
120
+ attr_accessor :ssl_client_cert
121
+
122
+ ### TLS/SSL setting
123
+ # Client private key file (for client certificate)
124
+ attr_accessor :ssl_client_key
125
+
126
+ # Set this to customize parameters encoding of array parameter with multi collectionFormat.
127
+ # Default to nil.
128
+ #
129
+ # @see The params_encoding option of Ethon. Related source code:
130
+ # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96
131
+ attr_accessor :params_encoding
132
+
133
+ attr_accessor :inject_format, :force_ending_format
134
+
135
+ def initialize
136
+ @scheme = 'https'
137
+ @host = 'production.moneykit.com'
138
+ @base_path = '/plaid-compatible'
139
+ @server_index = 0
140
+ @server_operation_index = {}
141
+ @server_variables = {}
142
+ @server_operation_variables = {}
143
+ @api_key = {
144
+ 'Plaid-Version' => ''
145
+ }
146
+ @api_key_prefix = {}
147
+ @timeout = 60
148
+ @client_side_validation = true
149
+ @ssl_verify = true
150
+ @ssl_verify_mode = nil
151
+ @ssl_ca_file = nil
152
+ @ssl_client_cert = nil
153
+ @ssl_client_key = nil
154
+ @debugging = false
155
+ @inject_format = false
156
+ @force_ending_format = false
157
+ @logger = defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger : Logger.new(STDOUT)
158
+
159
+ yield(self) if block_given?
160
+ end
161
161
 
162
- # The default Configuration object.
163
- def self.default
164
- @@default ||= Configuration.new
165
- end
162
+ # The default Configuration object.
163
+ def self.default
164
+ @@default ||= Configuration.new
165
+ end
166
166
 
167
- def configure
168
- yield(self) if block_given?
169
- end
167
+ def configure
168
+ yield(self) if block_given?
169
+ end
170
170
 
171
- def scheme=(scheme)
172
- # remove :// from scheme
173
- @scheme = scheme.sub(%r{://}, '')
174
- end
171
+ def scheme=(scheme)
172
+ # remove :// from scheme
173
+ @scheme = scheme.sub(%r{://}, '')
174
+ end
175
175
 
176
- def host=(host)
177
- # remove http(s):// and anything after a slash
178
- @host = host.sub(%r{https?://}, '').split('/').first
179
- end
176
+ def host=(host)
177
+ # remove http(s):// and anything after a slash
178
+ @host = host.sub(%r{https?://}, '').split('/').first
179
+ end
180
180
 
181
- def base_path=(base_path)
182
- # Add leading and trailing slashes to base_path
183
- @base_path = "/#{base_path}".gsub(%r{/+}, '/')
184
- @base_path = '' if @base_path == '/'
185
- end
181
+ def base_path=(base_path)
182
+ # Add leading and trailing slashes to base_path
183
+ @base_path = "/#{base_path}".gsub(%r{/+}, '/')
184
+ @base_path = '' if @base_path == '/'
185
+ end
186
186
 
187
- # Returns base URL for specified operation based on server settings
188
- def base_url(operation = nil)
189
- index = server_operation_index.fetch(operation, server_index)
190
- return "#{scheme}://#{[host, base_path].join('/').gsub(%r{/+}, '/')}".sub(%r{/+\z}, '') if index.nil?
187
+ # Returns base URL for specified operation based on server settings
188
+ def base_url(operation = nil)
189
+ index = server_operation_index.fetch(operation, server_index)
190
+ return "#{scheme}://#{[host, base_path].join('/').gsub(%r{/+}, '/')}".sub(%r{/+\z}, '') if index.nil?
191
191
 
192
- server_url(index, server_operation_variables.fetch(operation, server_variables),
193
- operation_server_settings[operation])
194
- end
192
+ server_url(index, server_operation_variables.fetch(operation, server_variables),
193
+ operation_server_settings[operation])
194
+ end
195
195
 
196
- # Gets API key (with prefix if set).
197
- # @param [String] param_name the parameter name of API key auth
198
- def api_key_with_prefix(param_name)
199
- if @api_key_prefix[param_name]
200
- "#{@api_key_prefix[param_name]} #{@api_key[param_name]}"
201
- else
202
- @api_key[param_name]
196
+ # Gets API key (with prefix if set).
197
+ # @param [String] param_name the parameter name of API key auth
198
+ def api_key_with_prefix(param_name)
199
+ if @api_key_prefix[param_name]
200
+ "#{@api_key_prefix[param_name]} #{@api_key[param_name]}"
201
+ else
202
+ @api_key[param_name]
203
+ end
203
204
  end
204
- end
205
205
 
206
- # Gets Basic Auth token string
207
- def basic_auth_token
208
- 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
209
- end
206
+ # Gets Basic Auth token string
207
+ def basic_auth_token
208
+ 'Basic ' + ["#{username}:#{password}"].pack('m').delete("\r\n")
209
+ end
210
210
 
211
- # Returns Auth Settings hash for api client.
212
- def auth_settings
213
- {
214
- 'clientId' =>
211
+ # Returns Auth Settings hash for api client.
212
+ def auth_settings
213
+ {
214
+ 'clientId' =>
215
+ {
216
+ type: 'api_key',
217
+ in: 'header',
218
+ key: 'PLAID-CLIENT-ID',
219
+ value: api_key_with_prefix('PLAID-CLIENT-ID')
220
+ },
221
+ 'secret' =>
222
+ {
223
+ type: 'api_key',
224
+ in: 'header',
225
+ key: 'PLAID-SECRET',
226
+ value: api_key_with_prefix('PLAID-SECRET')
227
+ }
228
+ }
229
+ end
230
+
231
+ # Returns an array of Server setting
232
+ def server_settings
233
+ [
215
234
  {
216
- type: 'api_key',
217
- in: 'header',
218
- key: 'PLAID-CLIENT-ID',
219
- value: api_key_with_prefix('PLAID-CLIENT-ID')
235
+ url: 'https://production.moneykit.com/plaid-compatible',
236
+ description: 'MoneyKit production environment (Live institution data)'
220
237
  },
221
- 'secret' =>
222
238
  {
223
- type: 'api_key',
224
- in: 'header',
225
- key: 'PLAID-SECRET',
226
- value: api_key_with_prefix('PLAID-SECRET')
239
+ url: 'https://sandbox.moneykit.com/plaid-compatible',
240
+ description: 'MoneyKit sandbox environment (Unrestricted environment with fake institution data)'
227
241
  }
228
- }
229
- end
230
-
231
- # Returns an array of Server setting
232
- def server_settings
233
- [
234
- {
235
- url: 'https://production.moneykit.com/plaid-compatible',
236
- description: 'MoneyKit production environment (Live institution data)'
237
- },
238
- {
239
- url: 'https://sandbox.moneykit.com/plaid-compatible',
240
- description: 'MoneyKit sandbox environment (Unrestricted environment with fake institution data)'
241
- }
242
- ]
243
- end
242
+ ]
243
+ end
244
244
 
245
- def operation_server_settings
246
- {}
247
- end
245
+ def operation_server_settings
246
+ {}
247
+ end
248
248
 
249
- # Returns URL based on server settings
250
- #
251
- # @param index array index of the server settings
252
- # @param variables hash of variable and the corresponding value
253
- def server_url(index, variables = {}, servers = nil)
254
- servers = server_settings if servers.nil?
249
+ # Returns URL based on server settings
250
+ #
251
+ # @param index array index of the server settings
252
+ # @param variables hash of variable and the corresponding value
253
+ def server_url(index, variables = {}, servers = nil)
254
+ servers = server_settings if servers.nil?
255
255
 
256
- # check array index out of bound
257
- if index < 0 || index >= servers.size
258
- raise ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
259
- end
256
+ # check array index out of bound
257
+ if index < 0 || index >= servers.size
258
+ raise ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
259
+ end
260
260
 
261
- server = servers[index]
262
- url = server[:url]
261
+ server = servers[index]
262
+ url = server[:url]
263
263
 
264
- return url unless server.key? :variables
264
+ return url unless server.key? :variables
265
265
 
266
- # go through variable and assign a value
267
- server[:variables].each do |name, _variable|
268
- if variables.key?(name)
269
- if !server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name])
270
- url.gsub! '{' + name.to_s + '}', variables[name]
266
+ # go through variable and assign a value
267
+ server[:variables].each do |name, _variable|
268
+ if variables.key?(name)
269
+ if !server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name])
270
+ url.gsub! '{' + name.to_s + '}', variables[name]
271
+ else
272
+ raise ArgumentError,
273
+ "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
274
+ end
271
275
  else
272
- raise ArgumentError,
273
- "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
276
+ # use default value
277
+ url.gsub! '{' + name.to_s + '}', server[:variables][name][:default_value]
274
278
  end
275
- else
276
- # use default value
277
- url.gsub! '{' + name.to_s + '}', server[:variables][name][:default_value]
278
279
  end
279
- end
280
280
 
281
- url
281
+ url
282
+ end
282
283
  end
283
284
  end
284
- end
285
285
  end