yodlee_wrap 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 333e83243a0aa385ef387bdcdea95b1b6e8d3d93
4
- data.tar.gz: 46f43b8085cf36b894ad595788b3b15367d325de
3
+ metadata.gz: 7b7e7dfd497e0eec58ac5065a0dd0de3bed1159e
4
+ data.tar.gz: ac68234bc087d55669679ce679fd2600019f0fdf
5
5
  SHA512:
6
- metadata.gz: 378bae78d518fa9311b3ca23f2aee56e8f0ad5aa32dcc22d5c10e58ac191bb686ec4bf749730f4f6ca7988347bb1a10baf1848d0faacc9f04931508b953dfcd7
7
- data.tar.gz: 87d2975006769dd6f8070a994ea3cdbeb6c5a31865380f50869e1667da86d11c14a569d6a55d3406104682a3ef6c10c5326f0e21885ea09cd5c499a354c3947b
6
+ metadata.gz: 0502d857969e62ccd9505e1bf4c90b298aba07767e9e42cfe6e31401fa3e7eb73706027b33797fed1d7dec1a83e60981e4b4e0ae673c29d328d9e6283e3dbb00
7
+ data.tar.gz: cc38d429861db459ad74445bda3b8b58b5aa24beeec761cb318a1fc899b11641c0a74b270c9eb0232346e1116ca94e41bb60b6c4a01b05edfd4f66da046a8e2c
data/.DS_Store CHANGED
Binary file
data/.gitignore CHANGED
@@ -12,4 +12,6 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
- .env
15
+ .env
16
+ .DS_Store
17
+ .byebug_history
data/README.md CHANGED
@@ -134,7 +134,7 @@ pry(main)> yodlee_api.user_session_token
134
134
  ### Login existing user
135
135
 
136
136
  ```
137
- pry(main)> response = yodlee_api.user_login 'my-username', 'my-password123'
137
+ pry(main)> response = yodlee_api.login_user 'my-username', 'my-password123'
138
138
  pry(main)> yodlee_api.user_session_token
139
139
  => "12162013_1:69761d51a4010e6382ccb49b854513dbccad0f835a873d37884b68826acefaa5b8d41b634f4cc83d97d86e7df861f70860a4e4d8a3f08d5b5440eae504af5f19"
140
140
  ```
@@ -4,7 +4,7 @@ module YodleeWrap
4
4
  class Config
5
5
  class << self
6
6
  attr_accessor :cobranded_username, :cobrand_name, :cobranded_password,
7
- :proxy_url, :logger, :webhook_endpoint
7
+ :logger, :webhook_endpoint
8
8
  end
9
9
 
10
10
  self.logger = Logger.new(STDOUT)
@@ -16,5 +16,15 @@ module YodleeWrap
16
16
  def fail?
17
17
  body.is_a?(Hash) && !(body.fetch('errorCode', nil)).nil?
18
18
  end
19
+
20
+ def mfa?
21
+ if body.is_a?(Hash) && body['provider'] && body['provider'].length == 1
22
+ body['provider'].first['mfaType']
23
+ end
24
+ end
25
+
26
+ def mfa_type
27
+ body['provider'].first['mfaType'] if mfa?
28
+ end
19
29
  end
20
30
  end
@@ -1,3 +1,3 @@
1
1
  module YodleeWrap
2
- VERSION = "0.0.0"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -16,12 +16,11 @@ module YodleeWrap
16
16
  @cobranded_password = config[:cobranded_password] || YodleeWrap::Config.cobranded_password
17
17
  @webhook_endpoint = config[:webhook_endpoint] || YodleeWrap::Config.webhook_endpoint
18
18
  @logger = config[:logger] || YodleeWrap::Config.logger
19
-
20
- info_log "YodleeApi configured with base_url=#{base_url} cobranded_username=#{cobranded_username} logger=#{logger}"
19
+ info_log "YodleeApi configured with cobrand_name=#{cobrand_name} cobranded_username=#{cobranded_username} logger=#{logger}"
21
20
  end
22
21
 
23
22
  def validate(config)
24
- [:cobranded_username, :cobranded_password, :logger].each do |key|
23
+ [:cobrand_name, :cobranded_username, :cobranded_password, :logger].each do |key|
25
24
  if config.key?(key) && config[key].nil?
26
25
  fail 'Invalid config provided to YodleeApi. Values may not be nil/blank.'
27
26
  end
@@ -36,33 +35,34 @@ module YodleeWrap
36
35
  locale: "en_US"
37
36
  }
38
37
  }
39
- response = execute_api('/v1/cobrand/login', params)
38
+ response = execute_api(:post, '/v1/cobrand/login', params)
40
39
 
41
40
  @cobranded_auth = response.success? ? response.body : nil
42
41
 
43
42
  response
44
43
  end
45
44
 
46
- def user_params(username, password)
45
+ def user_params(username, password, email)
47
46
  {
48
47
  user: {
49
48
  loginName: username,
49
+ email: email,
50
50
  password: password,
51
51
  locale: 'en_US'
52
52
  }
53
53
  }
54
54
  end
55
55
 
56
- def user_login(username:, password:)
57
- params = user_params(username, password)
58
- response = cobranded_session_execute_api('/v1/user/login', params)
56
+ def login_user(username:, password:)
57
+ params = user_params(username, password, nil)
58
+ response = cobranded_session_execute_api(:post, '/v1/user/login', params)
59
59
  @user_auth = response.success? ? response.body : nil
60
60
  response
61
61
  end
62
62
 
63
- def register_user(username:, password:, options: {}, subscribe: true)
64
- params = user_params(username, password).merge(options)
65
- response = cobranded_session_execute_api('/v1/user/register', params)
63
+ def register_user(username:, password:, email:, options: {}, subscribe: true)
64
+ params = user_params(username, password, email).merge(options)
65
+ response = cobranded_session_execute_api(:post, '/v1/user/register', params)
66
66
  @user_auth = response.success? ? response.body : nil
67
67
  subscribe_user_to_refresh if response.success? && subscribe
68
68
  response
@@ -75,26 +75,25 @@ module YodleeWrap
75
75
  callbackUrl: webhookEndpoint
76
76
  }
77
77
  }
78
- user_session_execute_api('v1/cobrand/config/notifications/events/REFRESH', params)
78
+ user_session_execute_api(:post, 'v1/cobrand/config/notifications/events/REFRESH', params)
79
79
  end
80
80
 
81
81
  def unregister_user
82
- response = user_session_execute_api('v1/user/unregister')
82
+ response = user_session_execute_api(:delete, 'v1/user/unregister')
83
83
  @user_auth = nil if response.success?
84
84
  end
85
85
 
86
86
  def logout_user
87
- user_session_execute_api('/v1/user/logout')
87
+ user_session_execute_api(:post, '/v1/user/logout')
88
88
  end
89
89
 
90
- def login_or_register_user(username:, password:, subscribe: true)
90
+ def login_or_register_user(username:, password:, email:, subscribe: true)
91
91
  info_log "Attempting to log in #{username}"
92
- response = user_login(username: username, password: password)
93
-
92
+ response = login_user(username: username, password: password)
94
93
  # TODO: look into what other errors could occur here
95
94
  if response.fail? && response.error_code == 'Y002'
96
95
  info_log "Invalid credentials for #{username}. Attempting to register"
97
- response = register_user(username: username, password: password, subscribe: subscribe)
96
+ response = register_user(username: username, password: password, email: email, subscribe: subscribe)
98
97
  else
99
98
  info_log response.error_message
100
99
  end
@@ -104,36 +103,43 @@ module YodleeWrap
104
103
  response
105
104
  end
106
105
 
106
+ def get_transactions
107
+ user_session_execute_api(:get, "/v1/transactions")
108
+ end
109
+
107
110
  def get_provider_details(provider_id)
108
- user_session_execute_api("/v1/providers/#{provider_id}")
111
+ user_session_execute_api(:get, "/v1/providers/#{provider_id}")
109
112
  end
110
113
 
111
114
  def add_provider_account(provider_id, provider_params)
112
- user_session_execute_api("v1/providers/#{provider_id}", provider_params)
115
+ user_session_execute_api(:post, "/v1/providers/#{provider_id}", provider_params)
113
116
  end
114
117
 
115
118
  def delete_provider_account(provider_account_id)
116
- user_session_execute_api("v1/providers/providerAccounts/#{provider_account_id}")
119
+ user_session_execute_api(:delete, "/v1/providers/providerAccounts/#{provider_account_id}")
117
120
  end
118
121
 
119
122
  # After an account has been added, use the returned provider_account_id
120
123
  # to get updates about the provider account.
121
124
  def get_provider_account_status(provider_account_id)
122
- user_session_execute_api("v1/providers/#{provider_account_id}")
125
+ user_session_execute_api(:get, "/v1/providers/providerAccounts/#{provider_account_id}")
123
126
  end
124
127
 
125
- def update_provider_account(provider_account_id, provider_params)
126
- user_session_execute_api("v1/providers/providerAccounts?providerAccountIds=#{provider_account_id}", provider_params)
128
+ # Get all provider accounts for the currently logged in user.
129
+ def get_all_provider_accounts
130
+ user_session_execute_api(:get, '/v1/providers/providerAccounts')
127
131
  end
128
132
 
129
- def cobranded_session_execute_api(url, params = {})
130
-
131
- execute_api(url, params, cobranded_auth_header)
133
+ def update_provider_account(provider_account_id, provider_params)
134
+ user_session_execute_api(:put, "/v1/providers/providerAccounts?providerAccountIds=#{provider_account_id}", provider_params)
132
135
  end
133
136
 
134
- def user_session_execute_api(url, params = {})
137
+ def cobranded_session_execute_api(method, url, params = {})
138
+ execute_api(method, url, params, cobranded_auth_header)
139
+ end
135
140
 
136
- execute_api(url, params, user_auth_header)
141
+ def user_session_execute_api(method, url, params = {})
142
+ execute_api(method, url, params, user_auth_header)
137
143
  end
138
144
 
139
145
  def cobranded_auth_header
@@ -141,18 +147,18 @@ module YodleeWrap
141
147
  end
142
148
 
143
149
  def user_auth_header
144
- cobranded_auth_header + "userSession=#{user_session_token}"
150
+ cobranded_auth_header + ",userSession=#{user_session_token}"
145
151
  end
146
152
 
147
- def execute_api(url, params, auth_header = "")
153
+ def execute_api(method, url, params, auth_header = "")
148
154
  debug_log "calling #{url} with #{params}"
149
155
  ssl_opts = { verify: false }
150
156
  connection = Faraday.new(url: base_url, ssl: ssl_opts, request: { proxy: [] })
151
- response = connection.post do |request|
157
+ response = connection.send(method) do |request|
152
158
  request.url "#{base_url}#{url}"
153
- request.headers['Content-Type'] = 'application/json'
154
159
  request.headers['Authorization'] = auth_header
155
- request.body = params.to_json
160
+ request.body = params.to_json unless params.empty?
161
+ request.headers['Content-Type'] = 'application/json' unless params.empty?
156
162
  end
157
163
  debug_log "response=#{response.status} success?=#{response.success?} body=#{response.body}"
158
164
  Response.new(JSON.parse(response.body), response.status)
@@ -165,7 +171,7 @@ module YodleeWrap
165
171
 
166
172
  def user_session_token
167
173
  return nil if user_auth.nil?
168
- user_auth.fetch('session', {}).fetch('userSession', nil)
174
+ user_auth.fetch('user', {}).fetch('session', {}).fetch('userSession')
169
175
  end
170
176
 
171
177
  def debug_log(msg)
data/lib/yodlee_wrap.rb CHANGED
@@ -6,7 +6,6 @@ require 'socksify/http'
6
6
 
7
7
  require File.dirname(__FILE__) + "/yodlee_wrap/version"
8
8
  require File.dirname(__FILE__) + "/yodlee_wrap/config"
9
- require File.dirname(__FILE__) + "/yodlee_wrap/parameter_translator"
10
9
  require File.dirname(__FILE__) + "/yodlee_wrap/response"
11
10
  require File.dirname(__FILE__) + "/yodlee_wrap/yodlee_api"
12
11