moneykit 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/moneykit/api/access_token_api.rb +53 -55
- data/lib/moneykit/api/account_numbers_api.rb +24 -24
- data/lib/moneykit/api/accounts_api.rb +86 -80
- data/lib/moneykit/api/identity_api.rb +29 -28
- data/lib/moneykit/api/institutions_api.rb +50 -48
- data/lib/moneykit/api/link_session_api.rb +47 -50
- data/lib/moneykit/api/links_api.rb +74 -81
- data/lib/moneykit/api/products_api.rb +31 -33
- data/lib/moneykit/api/transactions_api.rb +112 -87
- data/lib/moneykit/api/users_api.rb +96 -79
- data/lib/moneykit/api_client.rb +64 -71
- data/lib/moneykit/api_error.rb +14 -16
- data/lib/moneykit/configuration.rb +42 -45
- data/lib/moneykit/models/account.rb +62 -78
- data/lib/moneykit/models/account_balances.rb +58 -63
- data/lib/moneykit/models/account_group.rb +47 -47
- data/lib/moneykit/models/account_identity.rb +69 -89
- data/lib/moneykit/models/account_numbers.rb +50 -49
- data/lib/moneykit/models/account_numbers_link_product.rb +52 -54
- data/lib/moneykit/models/account_numbers_product_settings.rb +49 -48
- data/lib/moneykit/models/account_type.rb +23 -23
- data/lib/moneykit/models/account_with_account_numbers.rb +68 -89
- data/lib/moneykit/models/accounts_link_product.rb +46 -46
- data/lib/moneykit/models/ach_number.rb +48 -49
- data/lib/moneykit/models/address.rb +66 -75
- data/lib/moneykit/models/api_error_auth_expired_access_token_response.rb +63 -62
- data/lib/moneykit/models/api_error_auth_unauthorized_response.rb +60 -62
- data/lib/moneykit/models/api_error_rate_limit_exceeded_response.rb +63 -62
- data/lib/moneykit/models/app.rb +46 -50
- data/lib/moneykit/models/bacs_number.rb +45 -46
- data/lib/moneykit/models/balances.rb +58 -64
- data/lib/moneykit/models/basic_account_details.rb +55 -61
- data/lib/moneykit/models/country.rb +13 -14
- data/lib/moneykit/models/create_link_session_request.rb +83 -96
- data/lib/moneykit/models/create_link_session_response.rb +40 -37
- data/lib/moneykit/models/currency.rb +193 -193
- data/lib/moneykit/models/cursor.rb +40 -39
- data/lib/moneykit/models/cursor_pagination.rb +40 -38
- data/lib/moneykit/models/cursors.rb +40 -39
- data/lib/moneykit/models/customer_app.rb +46 -49
- data/lib/moneykit/models/customer_user.rb +59 -69
- data/lib/moneykit/models/eft_number.rb +48 -52
- data/lib/moneykit/models/email.rb +46 -48
- data/lib/moneykit/models/email1.rb +50 -53
- data/lib/moneykit/models/exchange_token_request.rb +40 -37
- data/lib/moneykit/models/exchange_token_response.rb +46 -49
- data/lib/moneykit/models/generate_access_token_response.rb +51 -58
- data/lib/moneykit/models/get_account_numbers_response.rb +48 -53
- data/lib/moneykit/models/get_account_response.rb +47 -52
- data/lib/moneykit/models/get_accounts_response.rb +47 -50
- data/lib/moneykit/models/get_institutions_response.rb +47 -50
- data/lib/moneykit/models/get_transactions_response.rb +68 -87
- data/lib/moneykit/models/get_user_accounts_response.rb +42 -42
- data/lib/moneykit/models/get_user_links_response.rb +42 -42
- data/lib/moneykit/models/get_user_transactions_response.rb +64 -82
- data/lib/moneykit/models/http_validation_error.rb +68 -71
- data/lib/moneykit/models/identity.rb +49 -49
- data/lib/moneykit/models/identity_link_product.rb +52 -54
- data/lib/moneykit/models/identity_product_settings.rb +49 -48
- data/lib/moneykit/models/identity_response.rb +47 -50
- data/lib/moneykit/models/institution.rb +77 -96
- data/lib/moneykit/models/institution_error_not_found_response.rb +63 -64
- data/lib/moneykit/models/institution_styling_response.rb +77 -93
- data/lib/moneykit/models/international_number.rb +46 -49
- data/lib/moneykit/models/introspect_client_response.rb +61 -73
- data/lib/moneykit/models/jwk_set.rb +41 -42
- data/lib/moneykit/models/link.rb +78 -100
- data/lib/moneykit/models/link1.rb +78 -100
- data/lib/moneykit/models/link2.rb +78 -100
- data/lib/moneykit/models/link3.rb +78 -100
- data/lib/moneykit/models/link4.rb +78 -100
- data/lib/moneykit/models/link_common.rb +78 -99
- data/lib/moneykit/models/link_error.rb +19 -19
- data/lib/moneykit/models/link_error_bad_state_response.rb +64 -72
- data/lib/moneykit/models/link_error_deleted_response.rb +63 -64
- data/lib/moneykit/models/link_error_forbidden_action_response.rb +60 -62
- data/lib/moneykit/models/link_error_not_found_response.rb +63 -64
- data/lib/moneykit/models/link_error_unauthorized_access_response.rb +63 -64
- data/lib/moneykit/models/link_permission_scope.rb +14 -15
- data/lib/moneykit/models/link_permissions.rb +43 -43
- data/lib/moneykit/models/link_products.rb +52 -63
- data/lib/moneykit/models/link_response.rb +90 -118
- data/lib/moneykit/models/link_session_customer_user.rb +58 -68
- data/lib/moneykit/models/link_session_customer_user_email.rb +50 -52
- data/lib/moneykit/models/link_session_customer_user_phone.rb +60 -67
- data/lib/moneykit/models/link_session_error_forbidden_config_response.rb +60 -62
- data/lib/moneykit/models/link_session_error_invalid_token_exchange.rb +60 -62
- data/lib/moneykit/models/link_session_setting_overrides.rb +61 -72
- data/lib/moneykit/models/link_state.rb +15 -16
- data/lib/moneykit/models/link_state_changed_webhook.rb +110 -134
- data/lib/moneykit/models/location_inner.rb +41 -46
- data/lib/moneykit/models/money_kit_env.rb +12 -13
- data/lib/moneykit/models/money_link_features.rb +49 -48
- data/lib/moneykit/models/moneylink_features.rb +50 -49
- data/lib/moneykit/models/numbers.rb +60 -73
- data/lib/moneykit/models/owner.rb +59 -72
- data/lib/moneykit/models/phone.rb +60 -68
- data/lib/moneykit/models/phone_number.rb +55 -59
- data/lib/moneykit/models/phone_number_type.rb +14 -15
- data/lib/moneykit/models/product.rb +14 -15
- data/lib/moneykit/models/products.rb +52 -64
- data/lib/moneykit/models/products1.rb +48 -56
- data/lib/moneykit/models/products_settings.rb +48 -55
- data/lib/moneykit/models/provider.rb +15 -16
- data/lib/moneykit/models/refresh_products_request.rb +43 -45
- data/lib/moneykit/models/requested_link_permission.rb +52 -60
- data/lib/moneykit/models/response401_disconnect_links_id_delete.rb +71 -77
- data/lib/moneykit/models/response401_exchange_token_link_session_exchange_token_post.rb +66 -72
- data/lib/moneykit/models/response401_get_account_links_id_accounts_account_id_get.rb +71 -77
- data/lib/moneykit/models/response401_get_account_numbers_links_id_accounts_numbers_get.rb +71 -77
- data/lib/moneykit/models/response401_get_accounts_links_id_accounts_get.rb +71 -77
- data/lib/moneykit/models/response401_get_identities_links_id_identity_get.rb +71 -77
- data/lib/moneykit/models/response401_get_institution_institutions_institution_id_get.rb +66 -72
- data/lib/moneykit/models/response401_get_institution_styling_institutions_institution_id_styling_get.rb +66 -72
- data/lib/moneykit/models/response401_get_institutions_institutions_get.rb +66 -72
- data/lib/moneykit/models/response401_get_link_links_id_get.rb +71 -77
- data/lib/moneykit/models/response401_get_transactions_diff_links_id_transactions_sync_get.rb +71 -77
- data/lib/moneykit/models/response401_get_transactions_links_id_transactions_get.rb +71 -77
- data/lib/moneykit/models/response401_get_user_accounts_users_id_accounts_get.rb +66 -72
- data/lib/moneykit/models/response401_get_user_links_users_id_links_get.rb +66 -72
- data/lib/moneykit/models/response401_get_user_transactions_users_id_transactions_get.rb +66 -72
- data/lib/moneykit/models/response401_get_well_known_jwks_well_known_jwks_json_get.rb +66 -72
- data/lib/moneykit/models/response401_instrospect_client_auth_introspect_get.rb +66 -72
- data/lib/moneykit/models/response401_refresh_products_links_id_products_post.rb +71 -77
- data/lib/moneykit/models/response401_update_link_links_id_patch.rb +71 -77
- data/lib/moneykit/models/settings.rb +61 -73
- data/lib/moneykit/models/supported_version.rb +11 -12
- data/lib/moneykit/models/transaction.rb +87 -114
- data/lib/moneykit/models/transaction_diff.rb +54 -62
- data/lib/moneykit/models/transaction_sync_response.rb +57 -72
- data/lib/moneykit/models/transaction_type.rb +12 -13
- data/lib/moneykit/models/transaction_type_filter.rb +12 -13
- data/lib/moneykit/models/transactions.rb +58 -57
- data/lib/moneykit/models/transactions1.rb +55 -63
- data/lib/moneykit/models/transactions_link_product.rb +52 -54
- data/lib/moneykit/models/transactions_product_settings.rb +57 -56
- data/lib/moneykit/models/update_link_request.rb +53 -52
- data/lib/moneykit/models/user_accounts_out.rb +40 -40
- data/lib/moneykit/models/user_links_out.rb +40 -40
- data/lib/moneykit/models/user_transactions_paged_response.rb +40 -40
- data/lib/moneykit/models/validation_error.rb +53 -64
- data/lib/moneykit/version.rb +10 -12
- data/lib/moneykit.rb +9 -11
- data/lib/plaid_compatible/money_kit_plaid_compatible/api/plaid_api.rb +203 -207
- data/lib/plaid_compatible/money_kit_plaid_compatible/api_client.rb +75 -76
- data/lib/plaid_compatible/money_kit_plaid_compatible/api_error.rb +19 -19
- data/lib/plaid_compatible/money_kit_plaid_compatible/configuration.rb +38 -40
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_balance.rb +59 -61
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_base.rb +71 -87
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_identity.rb +77 -98
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_subtype.rb +85 -86
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/account_type.rb +18 -19
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request.rb +59 -61
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_request_options.rb +44 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/accounts_get_response.rb +55 -60
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/address.rb +49 -47
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/address_data.rb +65 -69
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_numbers.rb +63 -73
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request.rb +59 -61
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_request_options.rb +44 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/auth_get_response.rb +61 -72
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/country_code.rb +15 -16
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/email.rb +49 -50
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/http_validation_error.rb +43 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request.rb +59 -61
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_request_options.rb +44 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/identity_get_response.rb +55 -60
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/institution.rb +65 -71
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_request.rb +60 -61
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/institutions_get_by_id_response.rb +49 -50
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item.rb +85 -96
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_error_webhook.rb +65 -77
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_request.rb +55 -55
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_get_response.rb +55 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_request.rb +55 -55
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_public_token_exchange_response.rb +54 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_request.rb +55 -55
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_remove_response.rb +44 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_investments.rb +49 -47
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_last_webhook.rb +50 -48
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_nullable.rb +55 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/item_status_transactions.rb +49 -47
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request.rb +100 -121
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_request_user.rb +66 -66
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/link_token_create_response.rb +54 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_ach.rb +59 -65
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_bacs.rb +54 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_eft.rb +59 -68
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/numbers_international.rb +54 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/owner.rb +63 -73
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/personal_finance_category.rb +49 -50
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/phone_number.rb +54 -59
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error.rb +88 -103
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/plaid_error_type.rb +26 -27
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/products.rb +16 -17
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/removed_transaction.rb +43 -39
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transaction.rb +107 -134
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request.rb +69 -79
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_request_options.rb +66 -68
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_get_response.rb +65 -76
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_request.rb +55 -55
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_refresh_response.rb +44 -41
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request.rb +69 -75
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_request_options.rb +50 -46
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/transactions_sync_response.rb +72 -89
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/validation_error.rb +56 -65
- data/lib/plaid_compatible/money_kit_plaid_compatible/models/webhook_environment_values.rb +15 -16
- data/lib/plaid_compatible/money_kit_plaid_compatible/version.rb +13 -13
- data/lib/plaid_compatible/money_kit_plaid_compatible.rb +12 -12
- data/moneykit.gemspec +21 -25
- metadata +1 -1
@@ -1,14 +1,12 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
=end
|
1
|
+
# #Plaid Compatibility Layer
|
2
|
+
#
|
3
|
+
# No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
4
|
+
#
|
5
|
+
# The version of the OpenAPI document: 0.1.0
|
6
|
+
#
|
7
|
+
# Generated by: https://openapi-generator.tech
|
8
|
+
# OpenAPI Generator version: 5.1.1
|
9
|
+
#
|
12
10
|
|
13
11
|
require 'date'
|
14
12
|
require 'json'
|
@@ -17,7 +15,8 @@ require 'tempfile'
|
|
17
15
|
require 'faraday'
|
18
16
|
require 'faraday/multipart'
|
19
17
|
|
20
|
-
module MoneyKit
|
18
|
+
module MoneyKit
|
19
|
+
module PlaidCompatible
|
21
20
|
class ApiClient
|
22
21
|
# The Configuration object holding settings to be used in the API client.
|
23
22
|
attr_accessor :config
|
@@ -34,10 +33,10 @@ module MoneyKit::PlaidCompatible
|
|
34
33
|
# @option config [Configuration] Configuration for initializing the object, default to Configuration.default
|
35
34
|
def initialize(config = Configuration.default)
|
36
35
|
@config = config
|
37
|
-
@user_agent =
|
36
|
+
@user_agent = 'Plaid Ruby v1.0.0'
|
38
37
|
@default_headers = {
|
39
38
|
'Content-Type' => 'application/json',
|
40
|
-
'User-Agent' => @user_agent
|
39
|
+
'User-Agent' => @user_agent
|
41
40
|
}
|
42
41
|
@connection = create_connection
|
43
42
|
end
|
@@ -57,7 +56,7 @@ module MoneyKit::PlaidCompatible
|
|
57
56
|
# @return [Array<(Object, Integer, Hash)>] an array of 3 elements:
|
58
57
|
# the data deserialized from response body (could be nil), response status code and response headers.
|
59
58
|
def call_api(http_method, path, opts = {})
|
60
|
-
if opts[:header_params][
|
59
|
+
if opts[:header_params]['Content-Type'] == 'multipart/form-data'
|
61
60
|
connection.request :multipart
|
62
61
|
connection.request :url_encoded
|
63
62
|
end
|
@@ -67,32 +66,30 @@ module MoneyKit::PlaidCompatible
|
|
67
66
|
build_request(http_method, path, req, opts)
|
68
67
|
end
|
69
68
|
|
70
|
-
if @config.debugging
|
71
|
-
@config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
|
72
|
-
end
|
69
|
+
@config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n" if @config.debugging
|
73
70
|
|
74
71
|
unless response.success?
|
75
72
|
if response.status == 0
|
76
73
|
# Errors from libcurl will be made visible here
|
77
|
-
|
78
|
-
|
74
|
+
raise ApiError.new(code: 0,
|
75
|
+
message: response.return_message)
|
79
76
|
else
|
80
77
|
raw_body = response.body
|
81
78
|
# Gracefully handle malformed body which is possible during API outage/maintanance
|
82
79
|
parsed_body = begin
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
80
|
+
JSON.parse(raw_body)
|
81
|
+
rescue JSON::ParserError
|
82
|
+
nil
|
83
|
+
end
|
84
|
+
raise ApiError.new(code: response.status,
|
85
|
+
response_headers: response.headers,
|
86
|
+
response_body: raw_body,
|
87
|
+
data: parsed_body),
|
88
|
+
response.reason_phrase
|
92
89
|
end
|
93
90
|
end
|
94
91
|
rescue Faraday::TimeoutError
|
95
|
-
|
92
|
+
raise ApiError, 'Connection timed out'
|
96
93
|
end
|
97
94
|
|
98
95
|
if opts[:return_type]
|
@@ -101,7 +98,7 @@ module MoneyKit::PlaidCompatible
|
|
101
98
|
else
|
102
99
|
data = nil
|
103
100
|
end
|
104
|
-
|
101
|
+
[data, response.status, response.headers]
|
105
102
|
end
|
106
103
|
|
107
104
|
# Builds the HTTP request
|
@@ -124,20 +121,18 @@ module MoneyKit::PlaidCompatible
|
|
124
121
|
update_params_for_auth! header_params, query_params, opts[:auth_names]
|
125
122
|
|
126
123
|
req_opts = {
|
127
|
-
:
|
128
|
-
:
|
129
|
-
:
|
130
|
-
:
|
131
|
-
:
|
132
|
-
:
|
124
|
+
method: http_method,
|
125
|
+
headers: header_params,
|
126
|
+
params: query_params,
|
127
|
+
params_encoding: @config.params_encoding,
|
128
|
+
timeout: @config.timeout,
|
129
|
+
verbose: @config.debugging
|
133
130
|
}
|
134
131
|
|
135
|
-
if [
|
132
|
+
if %i[post patch put delete].include?(http_method)
|
136
133
|
req_body = build_request_body(header_params, form_params, opts[:body])
|
137
|
-
req_opts.update :
|
138
|
-
if @config.debugging
|
139
|
-
@config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
|
140
|
-
end
|
134
|
+
req_opts.update body: req_body
|
135
|
+
@config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n" if @config.debugging
|
141
136
|
end
|
142
137
|
request.headers = header_params
|
143
138
|
request.body = req_body
|
@@ -159,16 +154,16 @@ module MoneyKit::PlaidCompatible
|
|
159
154
|
elsif header_params['Content-Type'] == 'multipart/form-data'
|
160
155
|
data = {}
|
161
156
|
form_params.each do |key, value|
|
162
|
-
case value
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
157
|
+
data[key] = case value
|
158
|
+
when ::File, ::Tempfile
|
159
|
+
# TODO: hardcode to application/octet-stream, need better way to detect content type
|
160
|
+
Faraday::Multipart::Post::UploadIO.new(value.path, 'application/octet-stream', value.path)
|
161
|
+
when ::Array, nil
|
162
|
+
# let Faraday handle Array and nil parameters
|
163
|
+
value
|
164
|
+
else
|
165
|
+
value.to_s
|
166
|
+
end
|
172
167
|
end
|
173
168
|
elsif body
|
174
169
|
data = body.is_a?(String) ? body : body.to_json
|
@@ -187,7 +182,7 @@ module MoneyKit::PlaidCompatible
|
|
187
182
|
# @param [String] mime MIME
|
188
183
|
# @return [Boolean] True if the MIME is application/json
|
189
184
|
def json_mime?(mime)
|
190
|
-
(mime == '*/*') || !(mime =~
|
185
|
+
(mime == '*/*') || !(mime =~ %r{Application/.*json(?!p)(;.*)?}i).nil?
|
191
186
|
end
|
192
187
|
|
193
188
|
# Deserialize the response to the given return type.
|
@@ -209,16 +204,14 @@ module MoneyKit::PlaidCompatible
|
|
209
204
|
# ensuring a default content type
|
210
205
|
content_type = response.headers['Content-Type'] || 'application/json'
|
211
206
|
|
212
|
-
|
207
|
+
raise "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
|
213
208
|
|
214
209
|
begin
|
215
|
-
data = JSON.parse("[#{body}]", :
|
210
|
+
data = JSON.parse("[#{body}]", symbolize_names: true)[0]
|
216
211
|
rescue JSON::ParserError => e
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
raise e
|
221
|
-
end
|
212
|
+
raise e unless %w[String Date DateTime].include?(return_type)
|
213
|
+
|
214
|
+
data = body
|
222
215
|
end
|
223
216
|
|
224
217
|
convert_to_type data, return_type
|
@@ -230,6 +223,7 @@ module MoneyKit::PlaidCompatible
|
|
230
223
|
# @return [Mixed] Data in a particular type
|
231
224
|
def convert_to_type(data, return_type)
|
232
225
|
return nil if data.nil?
|
226
|
+
|
233
227
|
case return_type
|
234
228
|
when 'String'
|
235
229
|
data.to_s
|
@@ -250,11 +244,11 @@ module MoneyKit::PlaidCompatible
|
|
250
244
|
data
|
251
245
|
when /\AArray<(.+)>\z/
|
252
246
|
# e.g. Array<Pet>
|
253
|
-
sub_type =
|
247
|
+
sub_type = ::Regexp.last_match(1)
|
254
248
|
data.map { |item| convert_to_type(item, sub_type) }
|
255
|
-
when /\AHash
|
249
|
+
when /\AHash<String, (.+)>\z/
|
256
250
|
# e.g. Hash<String, Integer>
|
257
|
-
sub_type =
|
251
|
+
sub_type = ::Regexp.last_match(1)
|
258
252
|
{}.tap do |hash|
|
259
253
|
data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
|
260
254
|
end
|
@@ -272,14 +266,14 @@ module MoneyKit::PlaidCompatible
|
|
272
266
|
#
|
273
267
|
# @see Configuration#temp_folder_path
|
274
268
|
def prepare_file(response)
|
275
|
-
content_disposition = response.headers[
|
269
|
+
content_disposition = response.headers['Content-Disposition']
|
276
270
|
if content_disposition && content_disposition =~ /filename=/i
|
277
271
|
filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
|
278
272
|
prefix = sanitize_filename(filename)
|
279
273
|
else
|
280
|
-
prefix =
|
274
|
+
prefix = 'download-'
|
281
275
|
end
|
282
|
-
prefix
|
276
|
+
prefix += '-' unless prefix.end_with?('-')
|
283
277
|
encoding = response.body.encoding
|
284
278
|
tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
|
285
279
|
@tempfile = tempfile
|
@@ -288,7 +282,7 @@ module MoneyKit::PlaidCompatible
|
|
288
282
|
@config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder " \
|
289
283
|
"with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file " \
|
290
284
|
"will be deleted automatically with GC. It's also recommended to delete the temp file " \
|
291
|
-
|
285
|
+
'explicitly with `tempfile.delete`'
|
292
286
|
end
|
293
287
|
|
294
288
|
# Sanitize filename by removing path.
|
@@ -297,12 +291,12 @@ module MoneyKit::PlaidCompatible
|
|
297
291
|
# @param [String] filename the filename to be sanitized
|
298
292
|
# @return [String] the sanitized filename
|
299
293
|
def sanitize_filename(filename)
|
300
|
-
filename.gsub(
|
294
|
+
filename.gsub(%r{.*[/\\]}, '')
|
301
295
|
end
|
302
296
|
|
303
297
|
def build_request_url(path)
|
304
298
|
# Add leading and trailing slashes to path
|
305
|
-
path = "/#{path}".gsub(
|
299
|
+
path = "/#{path}".gsub(%r{/+}, '/')
|
306
300
|
@config.base_url + path
|
307
301
|
end
|
308
302
|
|
@@ -315,10 +309,11 @@ module MoneyKit::PlaidCompatible
|
|
315
309
|
Array(auth_names).each do |auth_name|
|
316
310
|
auth_setting = @config.auth_settings[auth_name]
|
317
311
|
next unless auth_setting
|
312
|
+
|
318
313
|
case auth_setting[:in]
|
319
314
|
when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
|
320
315
|
when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
|
321
|
-
else
|
316
|
+
else raise ArgumentError, 'Authentication token must be in `query` of `header`'
|
322
317
|
end
|
323
318
|
end
|
324
319
|
end
|
@@ -336,6 +331,7 @@ module MoneyKit::PlaidCompatible
|
|
336
331
|
# @return [String] the Accept header (e.g. application/json)
|
337
332
|
def select_header_accept(accepts)
|
338
333
|
return nil if accepts.nil? || accepts.empty?
|
334
|
+
|
339
335
|
# use JSON when present, otherwise use all of the provided
|
340
336
|
json_accept = accepts.find { |s| json_mime?(s) }
|
341
337
|
json_accept || accepts.join(',')
|
@@ -347,6 +343,7 @@ module MoneyKit::PlaidCompatible
|
|
347
343
|
def select_header_content_type(content_types)
|
348
344
|
# use application/json by default
|
349
345
|
return 'application/json' if content_types.nil? || content_types.empty?
|
346
|
+
|
350
347
|
# use JSON when present, otherwise use the first one
|
351
348
|
json_content_type = content_types.find { |s| json_mime?(s) }
|
352
349
|
json_content_type || content_types.first
|
@@ -357,12 +354,13 @@ module MoneyKit::PlaidCompatible
|
|
357
354
|
# @return [String] JSON string representation of the object
|
358
355
|
def object_to_http_body(model)
|
359
356
|
return model if model.nil? || model.is_a?(String)
|
357
|
+
|
360
358
|
local_body = nil
|
361
|
-
if model.is_a?(Array)
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
359
|
+
local_body = if model.is_a?(Array)
|
360
|
+
model.map { |m| object_to_hash(m) }
|
361
|
+
else
|
362
|
+
object_to_hash(model)
|
363
|
+
end
|
366
364
|
local_body.to_json
|
367
365
|
end
|
368
366
|
|
@@ -393,8 +391,9 @@ module MoneyKit::PlaidCompatible
|
|
393
391
|
# return the array directly as typhoeus will handle it as expected
|
394
392
|
param
|
395
393
|
else
|
396
|
-
|
394
|
+
raise "unknown collection format: #{collection_format.inspect}"
|
397
395
|
end
|
398
396
|
end
|
399
397
|
end
|
398
|
+
end
|
400
399
|
end
|
@@ -1,16 +1,15 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
module MoneyKit::PlaidCompatible
|
1
|
+
# #Plaid Compatibility Layer
|
2
|
+
#
|
3
|
+
# No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
4
|
+
#
|
5
|
+
# The version of the OpenAPI document: 0.1.0
|
6
|
+
#
|
7
|
+
# Generated by: https://openapi-generator.tech
|
8
|
+
# OpenAPI Generator version: 5.1.1
|
9
|
+
#
|
10
|
+
|
11
|
+
module MoneyKit
|
12
|
+
module PlaidCompatible
|
14
13
|
class ApiError < StandardError
|
15
14
|
attr_reader :code, :response_headers, :response_body, :data
|
16
15
|
|
@@ -41,11 +40,11 @@ module MoneyKit::PlaidCompatible
|
|
41
40
|
end
|
42
41
|
|
43
42
|
def message
|
44
|
-
if @message.nil?
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
msg = if @message.nil?
|
44
|
+
'Error message: the server returns an error'
|
45
|
+
else
|
46
|
+
@message
|
47
|
+
end
|
49
48
|
|
50
49
|
msg += "\nHTTP status code: #{code}" if code
|
51
50
|
msg += "\nResponse headers: #{response_headers}" if response_headers
|
@@ -54,4 +53,5 @@ module MoneyKit::PlaidCompatible
|
|
54
53
|
msg
|
55
54
|
end
|
56
55
|
end
|
57
|
-
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,21 +1,19 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
module MoneyKit::PlaidCompatible
|
14
|
-
|
1
|
+
# #Plaid Compatibility Layer
|
2
|
+
#
|
3
|
+
# No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
4
|
+
#
|
5
|
+
# The version of the OpenAPI document: 0.1.0
|
6
|
+
#
|
7
|
+
# Generated by: https://openapi-generator.tech
|
8
|
+
# OpenAPI Generator version: 5.1.1
|
9
|
+
#
|
10
|
+
|
11
|
+
module MoneyKit
|
12
|
+
module PlaidCompatible
|
15
13
|
class Configuration
|
16
14
|
# Plaid Environment mapping
|
17
15
|
# production, development, sandbox
|
18
|
-
Environment = {
|
16
|
+
Environment = { 'production' => 0, 'sandbox' => 1 }
|
19
17
|
|
20
18
|
# Defines url scheme
|
21
19
|
attr_accessor :scheme
|
@@ -132,9 +130,7 @@ module MoneyKit::PlaidCompatible
|
|
132
130
|
# https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96
|
133
131
|
attr_accessor :params_encoding
|
134
132
|
|
135
|
-
attr_accessor :inject_format
|
136
|
-
|
137
|
-
attr_accessor :force_ending_format
|
133
|
+
attr_accessor :inject_format, :force_ending_format
|
138
134
|
|
139
135
|
def initialize
|
140
136
|
@scheme = 'https'
|
@@ -145,7 +141,7 @@ module MoneyKit::PlaidCompatible
|
|
145
141
|
@server_variables = {}
|
146
142
|
@server_operation_variables = {}
|
147
143
|
@api_key = {
|
148
|
-
'Plaid-Version' => ''
|
144
|
+
'Plaid-Version' => ''
|
149
145
|
}
|
150
146
|
@api_key_prefix = {}
|
151
147
|
@timeout = 60
|
@@ -158,7 +154,7 @@ module MoneyKit::PlaidCompatible
|
|
158
154
|
@debugging = false
|
159
155
|
@inject_format = false
|
160
156
|
@force_ending_format = false
|
161
|
-
@logger =
|
157
|
+
@logger = defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger : Logger.new(STDOUT)
|
162
158
|
|
163
159
|
yield(self) if block_given?
|
164
160
|
end
|
@@ -174,26 +170,27 @@ module MoneyKit::PlaidCompatible
|
|
174
170
|
|
175
171
|
def scheme=(scheme)
|
176
172
|
# remove :// from scheme
|
177
|
-
@scheme = scheme.sub(
|
173
|
+
@scheme = scheme.sub(%r{://}, '')
|
178
174
|
end
|
179
175
|
|
180
176
|
def host=(host)
|
181
177
|
# remove http(s):// and anything after a slash
|
182
|
-
@host = host.sub(
|
178
|
+
@host = host.sub(%r{https?://}, '').split('/').first
|
183
179
|
end
|
184
180
|
|
185
181
|
def base_path=(base_path)
|
186
182
|
# Add leading and trailing slashes to base_path
|
187
|
-
@base_path = "/#{base_path}".gsub(
|
183
|
+
@base_path = "/#{base_path}".gsub(%r{/+}, '/')
|
188
184
|
@base_path = '' if @base_path == '/'
|
189
185
|
end
|
190
186
|
|
191
187
|
# Returns base URL for specified operation based on server settings
|
192
188
|
def base_url(operation = nil)
|
193
189
|
index = server_operation_index.fetch(operation, server_index)
|
194
|
-
return "#{scheme}://#{[host, base_path].join('/').gsub(
|
190
|
+
return "#{scheme}://#{[host, base_path].join('/').gsub(%r{/+}, '/')}".sub(%r{/+\z}, '') if index.nil?
|
195
191
|
|
196
|
-
server_url(index, server_operation_variables.fetch(operation, server_variables),
|
192
|
+
server_url(index, server_operation_variables.fetch(operation, server_variables),
|
193
|
+
operation_server_settings[operation])
|
197
194
|
end
|
198
195
|
|
199
196
|
# Gets API key (with prefix if set).
|
@@ -227,7 +224,7 @@ module MoneyKit::PlaidCompatible
|
|
227
224
|
in: 'header',
|
228
225
|
key: 'PLAID-SECRET',
|
229
226
|
value: api_key_with_prefix('PLAID-SECRET')
|
230
|
-
}
|
227
|
+
}
|
231
228
|
}
|
232
229
|
end
|
233
230
|
|
@@ -235,19 +232,18 @@ module MoneyKit::PlaidCompatible
|
|
235
232
|
def server_settings
|
236
233
|
[
|
237
234
|
{
|
238
|
-
url:
|
239
|
-
description:
|
235
|
+
url: 'https://production.moneykit.com/plaid-compatible',
|
236
|
+
description: 'MoneyKit production environment (Live institution data)'
|
240
237
|
},
|
241
238
|
{
|
242
|
-
url:
|
243
|
-
description:
|
239
|
+
url: 'https://sandbox.moneykit.com/plaid-compatible',
|
240
|
+
description: 'MoneyKit sandbox environment (Unrestricted environment with fake institution data)'
|
244
241
|
}
|
245
242
|
]
|
246
243
|
end
|
247
244
|
|
248
245
|
def operation_server_settings
|
249
|
-
{
|
250
|
-
}
|
246
|
+
{}
|
251
247
|
end
|
252
248
|
|
253
249
|
# Returns URL based on server settings
|
@@ -255,11 +251,11 @@ module MoneyKit::PlaidCompatible
|
|
255
251
|
# @param index array index of the server settings
|
256
252
|
# @param variables hash of variable and the corresponding value
|
257
253
|
def server_url(index, variables = {}, servers = nil)
|
258
|
-
servers = server_settings if servers
|
254
|
+
servers = server_settings if servers.nil?
|
259
255
|
|
260
256
|
# check array index out of bound
|
261
|
-
if
|
262
|
-
|
257
|
+
if index < 0 || index >= servers.size
|
258
|
+
raise ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
|
263
259
|
end
|
264
260
|
|
265
261
|
server = servers[index]
|
@@ -268,20 +264,22 @@ module MoneyKit::PlaidCompatible
|
|
268
264
|
return url unless server.key? :variables
|
269
265
|
|
270
266
|
# go through variable and assign a value
|
271
|
-
server[:variables].each do |name,
|
267
|
+
server[:variables].each do |name, _variable|
|
272
268
|
if variables.key?(name)
|
273
|
-
if
|
274
|
-
url.gsub!
|
269
|
+
if !server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name])
|
270
|
+
url.gsub! '{' + name.to_s + '}', variables[name]
|
275
271
|
else
|
276
|
-
|
272
|
+
raise ArgumentError,
|
273
|
+
"The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
|
277
274
|
end
|
278
275
|
else
|
279
276
|
# use default value
|
280
|
-
url.gsub!
|
277
|
+
url.gsub! '{' + name.to_s + '}', server[:variables][name][:default_value]
|
281
278
|
end
|
282
279
|
end
|
283
280
|
|
284
281
|
url
|
285
282
|
end
|
286
283
|
end
|
284
|
+
end
|
287
285
|
end
|