coyodlee 0.1.0 → 0.2.0
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 +5 -5
- data/.travis.yml +10 -1
- data/Gemfile +1 -0
- data/README.md +29 -30
- data/coyodlee.gemspec +5 -1
- data/examples/demo.rb +23 -0
- data/lib/coyodlee.rb +6 -5
- data/lib/coyodlee/connection.rb +207 -0
- data/lib/coyodlee/facades.rb +6 -0
- data/lib/coyodlee/facades/accounts_facade.rb +52 -0
- data/lib/coyodlee/facades/cobrand_facade.rb +32 -0
- data/lib/coyodlee/facades/holdings_facade.rb +33 -0
- data/lib/coyodlee/facades/provider_accounts_facade.rb +52 -0
- data/lib/coyodlee/facades/transactions_facade.rb +88 -0
- data/lib/coyodlee/facades/user_facade.rb +39 -0
- data/lib/coyodlee/session.rb +46 -0
- data/lib/coyodlee/session_authorization.rb +25 -0
- data/lib/coyodlee/session_tokens.rb +39 -0
- data/lib/coyodlee/uri_builder.rb +26 -0
- data/lib/coyodlee/version.rb +1 -1
- metadata +75 -12
- data/lib/coyodlee/client.rb +0 -550
- data/lib/coyodlee/http_wrapper.rb +0 -27
- data/lib/coyodlee/sessions.rb +0 -2
- data/lib/coyodlee/sessions/cobrand_session.rb +0 -50
- data/lib/coyodlee/sessions/user_session.rb +0 -60
- data/lib/coyodlee/utils.rb +0 -26
@@ -0,0 +1,32 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
module Facades
|
3
|
+
class CobrandFacade
|
4
|
+
def initialize(request_facade)
|
5
|
+
@request_facade = request_facade
|
6
|
+
end
|
7
|
+
|
8
|
+
def login(login_name:, password:)
|
9
|
+
body = {
|
10
|
+
cobrand: {
|
11
|
+
cobrandLogin: login_name,
|
12
|
+
cobrandPassword: password,
|
13
|
+
locale: 'en_US'
|
14
|
+
}
|
15
|
+
}.to_json
|
16
|
+
headers = { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
|
17
|
+
req = @request_facade.build(:post, 'cobrand/login', headers: headers, body: body)
|
18
|
+
@request_facade.execute(req)
|
19
|
+
end
|
20
|
+
|
21
|
+
def logout
|
22
|
+
req = @request_facade.build(:post, 'cobrand/logout')
|
23
|
+
@request_facade.execute(req)
|
24
|
+
end
|
25
|
+
|
26
|
+
def public_key
|
27
|
+
req = @request_facade.build(:get, 'cobrand/publicKey')
|
28
|
+
@request_facade.execute(req)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
module Facades
|
3
|
+
class HoldingsFacade
|
4
|
+
def initialize(request_facade)
|
5
|
+
@request_facade = request_facade
|
6
|
+
end
|
7
|
+
|
8
|
+
def all(params={})
|
9
|
+
headers = { 'Accept' => 'application/json' }
|
10
|
+
req = @request_facade.build(:get, 'holdings', headers: headers, params: params)
|
11
|
+
@request_facade.execute(req)
|
12
|
+
end
|
13
|
+
|
14
|
+
def extended_securities_info(params={})
|
15
|
+
headers = { 'Accept' => 'application/json' }
|
16
|
+
req = @request_facade.build(:get, 'holdings/securities', headers: headers, params: params)
|
17
|
+
@request_facade.execute(req)
|
18
|
+
end
|
19
|
+
|
20
|
+
def holding_type_list
|
21
|
+
headers = { 'Accept' => 'application/json' }
|
22
|
+
req = @request_facade.build(:get, 'holdings/holdingTypeList', headers: headers)
|
23
|
+
@request_facade.execute(req)
|
24
|
+
end
|
25
|
+
|
26
|
+
def asset_classification_list
|
27
|
+
headers = { 'Accept' => 'application/json' }
|
28
|
+
req = @request_facade.build(:get, 'holdings/assetClassificationList', headers: headers)
|
29
|
+
@request_facade.execute(req)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
module Facades
|
3
|
+
class ProviderAccountsFacade
|
4
|
+
def initialize(request_facade)
|
5
|
+
@request_facade = request_facade
|
6
|
+
end
|
7
|
+
|
8
|
+
def provider_accounts
|
9
|
+
headers = { 'Accept' => 'application/json' }
|
10
|
+
req = @request_facade.build(:get, 'providerAccounts', headers: headers)
|
11
|
+
@request_facade.execute(req)
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(body:)
|
15
|
+
headers = { 'Accept' => 'application/json' }
|
16
|
+
req = @request_facade.build(:put, 'providerAccounts/verification', headers: headers, body: body.to_json)
|
17
|
+
@request_facade.execute(req)
|
18
|
+
end
|
19
|
+
|
20
|
+
def verification_status(provider_account_id:)
|
21
|
+
headers = { 'Accept' => 'application/json' }
|
22
|
+
req = @request_facade.build(:get, "providerAccounts/verification/#{provider_account_id}", headers: headers)
|
23
|
+
@request_facade.execute(req)
|
24
|
+
end
|
25
|
+
|
26
|
+
def update(body:)
|
27
|
+
headers = { 'Accept' => 'application/json' }
|
28
|
+
req = @request_facade.build(:put, 'providerAccounts', headers: headers, body: body.to_json)
|
29
|
+
@request_facade.execute(req)
|
30
|
+
end
|
31
|
+
|
32
|
+
def delete(provider_account_id:)
|
33
|
+
headers = { 'Accept' => 'application/json' }
|
34
|
+
req = @request_facade.build(:delete, "providerAccounts/#{provider_account_id}", headers: headers)
|
35
|
+
@request_facade.execute(req)
|
36
|
+
end
|
37
|
+
|
38
|
+
def details(provider_account_id:, params: {})
|
39
|
+
headers = { 'Accept' => 'application/json' }
|
40
|
+
req = @request_facade.build(:get, "providerAccounts/#{provider_account_id}", headers: headers, params: params)
|
41
|
+
@request_facade.execute(req)
|
42
|
+
end
|
43
|
+
|
44
|
+
def add(provider_id:, body:)
|
45
|
+
headers = { 'Accept' => 'application/json' }
|
46
|
+
params = { 'providerId' => provider_id }
|
47
|
+
req = @request_facade.build(:post, "providerAccounts", headers: headers, params: params, body: body)
|
48
|
+
@request_facade.execute(req)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
module Facades
|
3
|
+
class TransactionsFacade
|
4
|
+
def initialize(request_facade)
|
5
|
+
@request_facade = request_facade
|
6
|
+
end
|
7
|
+
|
8
|
+
def count(params={})
|
9
|
+
headers = { 'Accept' => 'application/json' }
|
10
|
+
req = @request_facade.build(:get, 'transactions/count', params: params, headers: headers)
|
11
|
+
@request_facade.execute(req)
|
12
|
+
end
|
13
|
+
|
14
|
+
def all(params={})
|
15
|
+
headers = { 'Accept' => 'application/json' }
|
16
|
+
req = @request_facade.build(:get, 'transactions', params: params, headers: headers)
|
17
|
+
@request_facade.execute(req)
|
18
|
+
end
|
19
|
+
|
20
|
+
def categorization_rules
|
21
|
+
headers = { 'Accept' => 'application/json' }
|
22
|
+
req = @request_facade.build(:get, 'transactions/categories/rules', headers: headers)
|
23
|
+
@request_facade.execute(req)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_categorization_rule(body:)
|
27
|
+
headers = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
28
|
+
req = @request_facade.build(:post, 'transactions/categories/rules', headers: headers, body: body.to_json)
|
29
|
+
@request_facade.execute(req)
|
30
|
+
end
|
31
|
+
|
32
|
+
def update_categorization_rule(rule_id:, body:)
|
33
|
+
headers = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
34
|
+
req = @request_facade.build(:put, "transactions/categories/rules/#{rule_id}", headers: headers, body: body.to_json)
|
35
|
+
@request_facade.execute(req)
|
36
|
+
end
|
37
|
+
|
38
|
+
def delete_categorization_rule(rule_id:)
|
39
|
+
headers = { 'Accept' => 'application/json' }
|
40
|
+
req = @request_facade.build(:put, "transactions/categories/rules/#{rule_id}", headers: headers)
|
41
|
+
@request_facade.execute(req)
|
42
|
+
end
|
43
|
+
|
44
|
+
def run_categorization_rule(rule_id:)
|
45
|
+
headers = { 'Accept' => 'application/json' }
|
46
|
+
req = @request_facade.build(:post, "transactions/categories/rules/#{rule_id}", headers: headers)
|
47
|
+
@request_facade.execute(req)
|
48
|
+
end
|
49
|
+
|
50
|
+
def run_all_categorization_rules
|
51
|
+
params = { 'action' => 'run' }
|
52
|
+
headers = { 'Accept' => 'application/json' }
|
53
|
+
req = @request_facade.build(:post, 'transactions/categories/rules', headers: headers, params: params)
|
54
|
+
@request_facade.execute(req)
|
55
|
+
end
|
56
|
+
|
57
|
+
def update(transaction_id:, body: {})
|
58
|
+
headers = { 'Accept' => 'application/json' }
|
59
|
+
req = @request_facade.build(:put, "transactions/#{transaction_id}", headers: headers, body: body)
|
60
|
+
@request_facade.execute(req)
|
61
|
+
end
|
62
|
+
|
63
|
+
def category_list
|
64
|
+
headers = { 'Accept' => 'application/json' }
|
65
|
+
req = @request_facade.build(:get, 'transactions/categories', headers: headers)
|
66
|
+
@request_facade.execute(req)
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_category(body:)
|
70
|
+
headers = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
71
|
+
req = @request_facade.build(:post, 'transactions/categories', headers: headers, body: body.to_json)
|
72
|
+
@request_facade.execute(req)
|
73
|
+
end
|
74
|
+
|
75
|
+
def update_category(body:)
|
76
|
+
headers = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
77
|
+
req = @request_facade.build(:put, 'transactions/categories', headers: headers, body: body.to_json)
|
78
|
+
@request_facade.execute(req)
|
79
|
+
end
|
80
|
+
|
81
|
+
def delete_category(category_id:)
|
82
|
+
headers = { 'Accept' => 'application/json' }
|
83
|
+
req = @request_facade.build(:delete, "transactions/categories/#{category_id}", headers: headers)
|
84
|
+
@request_facade.execute(req)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
module Facades
|
3
|
+
class UserFacade
|
4
|
+
def initialize(request_facade)
|
5
|
+
@request_facade = request_facade
|
6
|
+
end
|
7
|
+
|
8
|
+
def login(login_name:, password:)
|
9
|
+
headers = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
|
10
|
+
body = {
|
11
|
+
user: {
|
12
|
+
loginName: login_name,
|
13
|
+
password: password,
|
14
|
+
locale: 'en_US'
|
15
|
+
}
|
16
|
+
}.to_json
|
17
|
+
req = @request_facade.build(:post, 'user/login', headers: headers, body: body)
|
18
|
+
@request_facade.execute(req)
|
19
|
+
end
|
20
|
+
|
21
|
+
def register(login_name:, password:)
|
22
|
+
headers = { 'Accept' => 'application/json' }
|
23
|
+
req = @request_facade.build(:post, 'user/logout', headers: headers)
|
24
|
+
@request_facade.execute(req)
|
25
|
+
end
|
26
|
+
|
27
|
+
def unregister
|
28
|
+
req = @request_facade.build(:delete, 'user/unregister')
|
29
|
+
@request_facade.execute(req)
|
30
|
+
end
|
31
|
+
|
32
|
+
def logout(login_name:, password:)
|
33
|
+
headers = { 'Accept' => 'application/json' }
|
34
|
+
req = @request_facade.build(:post, 'user/logout', headers: headers)
|
35
|
+
@request_facade.execute(req)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative 'session_authorization'
|
2
|
+
require_relative 'session_tokens'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Coyodlee
|
6
|
+
class Session
|
7
|
+
attr_reader :authorization
|
8
|
+
attr_writer :cobrand_session_token_klass
|
9
|
+
attr_writer :user_session_token_klass
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def create(request_facade)
|
13
|
+
new(request_facade: request_facade,
|
14
|
+
session_authorization: SessionAuthorization.new).tap do |session|
|
15
|
+
session.cobrand_session_token_klass = CobrandSessionToken
|
16
|
+
session.user_session_token_klass = UserSessionToken
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(request_facade:, session_authorization:)
|
22
|
+
@api = request_facade
|
23
|
+
@authorization = session_authorization
|
24
|
+
end
|
25
|
+
|
26
|
+
def login_cobrand(login_name:, password:)
|
27
|
+
@api.login_cobrand(login_name: login_name,
|
28
|
+
password: password).tap do |res|
|
29
|
+
body = JSON.parse(res.body)
|
30
|
+
token = body.dig('session', 'cobSession')
|
31
|
+
@authorization.authorize_cobrand(@cobrand_session_token_klass.new(token))
|
32
|
+
@api.authorize(@authorization)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def login_user(login_name:, password:)
|
37
|
+
@api.login_user(login_name: login_name,
|
38
|
+
password: password).tap do |res|
|
39
|
+
body = JSON.parse(res.body)
|
40
|
+
token = body.dig('user', 'session', 'userSession')
|
41
|
+
@authorization.authorize_user(@user_session_token_klass.new(token))
|
42
|
+
@api.authorize(@authorization)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'session_tokens'
|
2
|
+
|
3
|
+
module Coyodlee
|
4
|
+
class SessionAuthorization
|
5
|
+
def initialize(cobrand_session_token: NullSessionToken.new, user_session_token: NullSessionToken.new)
|
6
|
+
@cobrand_session_token = cobrand_session_token
|
7
|
+
@user_session_token = user_session_token
|
8
|
+
end
|
9
|
+
|
10
|
+
def authorize_cobrand(cobrand_session_token)
|
11
|
+
@cobrand_session_token = cobrand_session_token
|
12
|
+
end
|
13
|
+
|
14
|
+
def authorize_user(user_session_token)
|
15
|
+
@user_session_token = user_session_token
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
[@cobrand_session_token, @user_session_token]
|
20
|
+
.select { |t| t.present? }
|
21
|
+
.map(&:to_s)
|
22
|
+
.join(',')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
class NullSessionToken
|
3
|
+
def present?
|
4
|
+
false
|
5
|
+
end
|
6
|
+
|
7
|
+
def to_s
|
8
|
+
''
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class UserSessionToken
|
13
|
+
def initialize(token='')
|
14
|
+
@token = token
|
15
|
+
end
|
16
|
+
|
17
|
+
def present?
|
18
|
+
!@token.empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
@token.empty? ? '' : "userSession=#{@token}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class CobrandSessionToken
|
27
|
+
def initialize(token='')
|
28
|
+
@token = token
|
29
|
+
end
|
30
|
+
|
31
|
+
def present?
|
32
|
+
!@token.empty?
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_s
|
36
|
+
@token.empty? ? '' : "cobSession=#{@token}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Coyodlee
|
2
|
+
class UriBuilder
|
3
|
+
attr_reader :host
|
4
|
+
|
5
|
+
def initialize(host:, cobrand: 'restserver', version: 'v1')
|
6
|
+
@cobrand = cobrand
|
7
|
+
@version = version
|
8
|
+
@host = host
|
9
|
+
@path_prefix = 'ysl'
|
10
|
+
end
|
11
|
+
|
12
|
+
def build(resource_path, query: nil, use_ssl: true)
|
13
|
+
uri_builder = use_ssl ? URI::HTTPS : URI::HTTP
|
14
|
+
revised_resource_path = if resource_path.start_with?('/')
|
15
|
+
resource_path.slice(1..-1)
|
16
|
+
else
|
17
|
+
resource_path
|
18
|
+
end
|
19
|
+
path = [@path_prefix, @cobrand, @version, revised_resource_path]
|
20
|
+
.compact
|
21
|
+
.join('/')
|
22
|
+
.prepend('/')
|
23
|
+
uri_builder.build(host: @host, path: path, query: query)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/coyodlee/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coyodlee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Dyba
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: yajl-ruby
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.3.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.3.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,62 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.8'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: dotenv
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry-byebug
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: byebug
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pry
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
139
195
|
description: A Ruby wrapper client for Envestnet's Yodlee API. For details about the
|
140
196
|
API endpoints, sign in to https://developer.yodlee.com
|
141
197
|
email:
|
@@ -154,13 +210,20 @@ files:
|
|
154
210
|
- bin/console
|
155
211
|
- bin/setup
|
156
212
|
- coyodlee.gemspec
|
213
|
+
- examples/demo.rb
|
157
214
|
- lib/coyodlee.rb
|
158
|
-
- lib/coyodlee/
|
159
|
-
- lib/coyodlee/
|
160
|
-
- lib/coyodlee/
|
161
|
-
- lib/coyodlee/
|
162
|
-
- lib/coyodlee/
|
163
|
-
- lib/coyodlee/
|
215
|
+
- lib/coyodlee/connection.rb
|
216
|
+
- lib/coyodlee/facades.rb
|
217
|
+
- lib/coyodlee/facades/accounts_facade.rb
|
218
|
+
- lib/coyodlee/facades/cobrand_facade.rb
|
219
|
+
- lib/coyodlee/facades/holdings_facade.rb
|
220
|
+
- lib/coyodlee/facades/provider_accounts_facade.rb
|
221
|
+
- lib/coyodlee/facades/transactions_facade.rb
|
222
|
+
- lib/coyodlee/facades/user_facade.rb
|
223
|
+
- lib/coyodlee/session.rb
|
224
|
+
- lib/coyodlee/session_authorization.rb
|
225
|
+
- lib/coyodlee/session_tokens.rb
|
226
|
+
- lib/coyodlee/uri_builder.rb
|
164
227
|
- lib/coyodlee/version.rb
|
165
228
|
homepage: https://github.com/pennymac/coyodlee
|
166
229
|
licenses:
|
@@ -182,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
245
|
version: '0'
|
183
246
|
requirements: []
|
184
247
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
248
|
+
rubygems_version: 2.7.3
|
186
249
|
signing_key:
|
187
250
|
specification_version: 4
|
188
251
|
summary: A Ruby wrapper client for Envestnet's Yodlee API
|