class YodleeWrap::YodleeApi
Attributes
base_url[R]
cobrand_name[R]
cobranded_auth[R]
cobranded_password[R]
cobranded_username[R]
logger[R]
proxy_url[R]
user_auth[R]
webhook_endpoint[R]
Public Class Methods
new(config = {})
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 9 def initialize(config = {}) configure(config) end
Public Instance Methods
add_provider_account(provider_id, provider_params)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 127 def add_provider_account(provider_id, provider_params) user_session_execute_api(:post, "/v1/providers/providerAccounts?providerId=#{provider_id}", provider_params) end
cobranded_auth_header()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 163 def cobranded_auth_header "cobSession=#{cobranded_session_token}" end
cobranded_login()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 31 def cobranded_login params = { cobrand: { cobrandLogin: cobranded_username, cobrandPassword: cobranded_password, locale: "en_US" } } response = execute_api(:post, '/v1/cobrand/login', params) @cobranded_auth = response.success? ? response.body : nil response end
cobranded_session_execute_api(method, url, params = {})
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 155 def cobranded_session_execute_api(method, url, params = {}) execute_api(method, url, params, cobranded_auth_header) end
cobranded_session_token()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 186 def cobranded_session_token return nil if cobranded_auth.nil? cobranded_auth.fetch('session', {}).fetch('cobSession', nil) end
configure(config = {})
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 13 def configure(config = {}) validate(config) @cobrand_name = config[:cobrand_name] || YodleeWrap::Config.cobrand_name || 'restserver' @cobranded_username = config[:cobranded_username] || YodleeWrap::Config.cobranded_username @cobranded_password = config[:cobranded_password] || YodleeWrap::Config.cobranded_password @webhook_endpoint = config[:webhook_endpoint] || YodleeWrap::Config.webhook_endpoint @logger = config[:logger] || YodleeWrap::Config.logger info_log "YodleeApi configured with cobrand_name=#{cobrand_name} cobranded_username=#{cobranded_username} logger=#{logger}" end
debug_log(msg)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 196 def debug_log(msg) logger.debug(msg) end
delete_provider_account(provider_account_id)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 131 def delete_provider_account(provider_account_id) user_session_execute_api(:delete, "/v1/providers/providerAccounts/#{provider_account_id}") end
execute_api(method, url, params, auth_header = '')
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 171 def execute_api(method, url, params, auth_header = '') debug_log "calling #{url} with #{params}" ssl_opts = { verify: false } connection = Faraday.new(url: base_url, ssl: ssl_opts, request: { proxy: [] }) response = connection.send(method) do |request| request.url "#{base_url}#{url}" request.headers['Authorization'] = auth_header request.body = params.to_json unless params.empty? request.headers['Content-Type'] = 'application/json' unless params.empty? end body = JSON.parse(response.body.blank? ? '{}' : response.body) debug_log "response=#{response.status} success?=#{response.success?} body=#{body}" Response.new(body, response.status) end
get_account(account_id, container_name)
click to toggle source
the get account endpoint requires that the user provide the container type. Not sure why.
# File lib/yodlee_wrap/yodlee_api.rb, line 119 def get_account(account_id, container_name) user_session_execute_api(:get, "/v1/accounts/#{account_id}?container=#{container_name}") end
get_accounts_for(provider_account_id)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 110 def get_accounts_for(provider_account_id) user_session_execute_api(:get, "/v1/accounts?providerAccountId=#{provider_account_id}") end
get_all_accounts()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 114 def get_all_accounts user_session_execute_api(:get, "/v1/accounts/") end
get_all_provider_accounts()
click to toggle source
Get all provider accounts for the currently logged in user.
# File lib/yodlee_wrap/yodlee_api.rb, line 143 def get_all_provider_accounts user_session_execute_api(:get, '/v1/providers/providerAccounts') end
get_provider_account_status(provider_account_id)
click to toggle source
After an account has been added, use the returned provider_account_id to get updates about the provider account. default to getting mfa questions if they are available.
# File lib/yodlee_wrap/yodlee_api.rb, line 138 def get_provider_account_status(provider_account_id) user_session_execute_api(:get, "/v1/providers/providerAccounts/#{provider_account_id}?include=credentials") end
get_provider_details(provider_id)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 123 def get_provider_details(provider_id) user_session_execute_api(:get, "/v1/providers/#{provider_id}") end
get_statements()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 147 def get_statements user_session_execute_api(:get, '/v1/statements') end
get_transactions()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 106 def get_transactions user_session_execute_api(:get, "/v1/transactions") end
info_log(msg)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 200 def info_log(msg) logger.info(msg) end
login_or_register_user(username:, password:, email:, subscribe: true)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 91 def login_or_register_user(username:, password:, email:, subscribe: true) info_log "Attempting to log in #{username}" response = login_user(username: username, password: password) # TODO: look into what other errors could occur here if response.fail? && response.error_code == 'Y002' info_log "Invalid credentials for #{username}. Attempting to register" response = register_user(username: username, password: password, email: email, subscribe: subscribe) else info_log response.error_message end @user_auth = response.success? ? response.body : nil response end
login_user(username:, password:)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 57 def login_user(username:, password:) params = user_params(username, password, nil) response = cobranded_session_execute_api(:post, '/v1/user/login', params) @user_auth = response.success? ? response.body : nil response end
logout_user()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 87 def logout_user user_session_execute_api(:post, '/v1/user/logout') end
register_user(username:, password:, email:, options: {}, subscribe: true)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 64 def register_user(username:, password:, email:, options: {}, subscribe: true) params = user_params(username, password, email).merge(options) response = cobranded_session_execute_api(:post, '/v1/user/register', params) @user_auth = response.success? ? response.body : nil subscribe_user_to_refresh if response.success? && subscribe response end
subscribe_user_to_refresh()
click to toggle source
subscribe user to webhook refresh notifications
# File lib/yodlee_wrap/yodlee_api.rb, line 73 def subscribe_user_to_refresh params = { event: { callbackUrl: webhookEndpoint } } user_session_execute_api(:post, 'v1/cobrand/config/notifications/events/REFRESH', params) end
unregister_user()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 82 def unregister_user response = user_session_execute_api(:delete, 'v1/user/unregister') @user_auth = nil if response.success? end
update_provider_account(provider_account_id, provider_params)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 151 def update_provider_account(provider_account_id, provider_params) user_session_execute_api(:put, "/v1/providers/providerAccounts?providerAccountIds=#{provider_account_id}", provider_params) end
user_auth_header()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 167 def user_auth_header cobranded_auth_header + ",userSession=#{user_session_token}" end
user_params(username, password, email)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 46 def user_params(username, password, email) { user: { loginName: username, email: email, password: password, locale: 'en_US' } } end
user_session_execute_api(method, url, params = {})
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 159 def user_session_execute_api(method, url, params = {}) execute_api(method, url, params, user_auth_header) end
user_session_token()
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 191 def user_session_token return nil if user_auth.nil? user_auth.fetch('user', {}).fetch('session', {}).fetch('userSession') end
validate(config)
click to toggle source
# File lib/yodlee_wrap/yodlee_api.rb, line 23 def validate(config) [:cobrand_name, :cobranded_username, :cobranded_password, :logger].each do |key| if config.key?(key) && config[key].nil? fail 'Invalid config provided to YodleeApi. Values may not be nil/blank.' end end end