aggcat 0.0.4 → 0.0.5
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.
- data/lib/aggcat.rb +9 -1
- data/lib/aggcat/base.rb +5 -6
- data/lib/aggcat/client.rb +10 -9
- data/lib/aggcat/configurable.rb +2 -2
- data/lib/aggcat/version.rb +1 -1
- metadata +1 -1
data/lib/aggcat.rb
CHANGED
@@ -7,8 +7,16 @@ module Aggcat
|
|
7
7
|
class << self
|
8
8
|
include Aggcat::Configurable
|
9
9
|
|
10
|
+
def scope(customer_id)
|
11
|
+
if !defined?(@customer_id) || @customer_id != customer_id
|
12
|
+
@customer_id = customer_id
|
13
|
+
@client = Aggcat::Client.new(options.merge({customer_id: customer_id}))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
10
17
|
def client
|
11
|
-
|
18
|
+
raise ArgumentError.new('set the client scope first by calling Aggcat.scope(customer_id)') unless defined?(@customer_id)
|
19
|
+
@client
|
12
20
|
end
|
13
21
|
|
14
22
|
private
|
data/lib/aggcat/base.rb
CHANGED
@@ -25,18 +25,17 @@ module Aggcat
|
|
25
25
|
|
26
26
|
protected
|
27
27
|
|
28
|
-
def access_token
|
29
|
-
token = oauth_token
|
28
|
+
def access_token
|
29
|
+
token = oauth_token
|
30
30
|
consumer = OAuth::Consumer.new(@consumer_key, @consumer_secret, {:timeout => TIMEOUT})
|
31
31
|
OAuth::AccessToken.new(consumer, token[:key], token[:secret])
|
32
32
|
end
|
33
33
|
|
34
|
-
def oauth_token
|
34
|
+
def oauth_token
|
35
35
|
now = Time.now.utc
|
36
|
-
if @oauth_token.nil? || @oauth_token[:expire_at] <= now
|
37
|
-
@oauth_token = new_token(saml_message(
|
36
|
+
if @oauth_token.nil? || @oauth_token[:expire_at] <= now
|
37
|
+
@oauth_token = new_token(saml_message(@customer_id))
|
38
38
|
@oauth_token[:expire_at] = now + 9 * 60 # 9 minutes
|
39
|
-
@oauth_token[:user_id] = user_id
|
40
39
|
end
|
41
40
|
@oauth_token
|
42
41
|
end
|
data/lib/aggcat/client.rb
CHANGED
@@ -4,6 +4,7 @@ module Aggcat
|
|
4
4
|
BASE_URL = 'https://financialdatafeed.platform.intuit.com/rest-war/v1'
|
5
5
|
|
6
6
|
def initialize(options={})
|
7
|
+
raise ArgumentError.new('customer_id is required for scoping all requests') if options[:customer_id].nil? || options[:customer_id].to_s.empty?
|
7
8
|
Aggcat::Configurable::KEYS.each do |key|
|
8
9
|
instance_variable_set(:"@#{key}", options[key] || Aggcat.instance_variable_get(:"@#{key}"))
|
9
10
|
end
|
@@ -21,7 +22,7 @@ module Aggcat
|
|
21
22
|
def discover_and_add_accounts(institution_id, username, password)
|
22
23
|
validate(institution_id: institution_id, username: username, password: password)
|
23
24
|
body = credentials(institution_id, username, password)
|
24
|
-
post("/institutions/#{institution_id}/logins", body
|
25
|
+
post("/institutions/#{institution_id}/logins", body)
|
25
26
|
end
|
26
27
|
|
27
28
|
def accounts
|
@@ -47,19 +48,19 @@ module Aggcat
|
|
47
48
|
delete("/accounts/#{account_id}")
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
+
def delete_customer
|
51
52
|
delete('/customers')
|
52
53
|
end
|
53
54
|
|
54
55
|
protected
|
55
56
|
|
56
|
-
def get(uri
|
57
|
-
response = access_token
|
57
|
+
def get(uri)
|
58
|
+
response = access_token.get("#{BASE_URL}#{uri}")
|
58
59
|
{:response_code => response.code, :response => parse_xml(response.body)}
|
59
60
|
end
|
60
61
|
|
61
|
-
def post(uri, message
|
62
|
-
response = access_token
|
62
|
+
def post(uri, message)
|
63
|
+
response = access_token.post("#{BASE_URL}#{uri}", message, {'Content-Type' => 'application/xml'})
|
63
64
|
result = {:response_code => response.code, :response => parse_xml(response.body)}
|
64
65
|
if response['challengeSessionId']
|
65
66
|
result[:challenge_session_id] = response['challengeSessionId']
|
@@ -68,8 +69,8 @@ module Aggcat
|
|
68
69
|
result
|
69
70
|
end
|
70
71
|
|
71
|
-
def delete(uri
|
72
|
-
response = access_token
|
72
|
+
def delete(uri)
|
73
|
+
response = access_token.delete("#{BASE_URL}#{uri}")
|
73
74
|
{:response_code => response.code, :response => parse_xml(response.body)}
|
74
75
|
end
|
75
76
|
|
@@ -78,7 +79,7 @@ module Aggcat
|
|
78
79
|
def validate(args)
|
79
80
|
args.each do |name, value|
|
80
81
|
if value.nil? || value.to_s.empty?
|
81
|
-
raise ArgumentError
|
82
|
+
raise ArgumentError.new("#{name} is required")
|
82
83
|
end
|
83
84
|
end
|
84
85
|
end
|
data/lib/aggcat/configurable.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module Aggcat
|
2
2
|
module Configurable
|
3
3
|
|
4
|
-
attr_writer :issuer_id, :consumer_key, :consumer_secret, :certificate_path
|
4
|
+
attr_writer :issuer_id, :consumer_key, :consumer_secret, :certificate_path, :customer_id
|
5
5
|
|
6
|
-
KEYS = [:issuer_id, :consumer_key, :consumer_secret, :certificate_path]
|
6
|
+
KEYS = [:issuer_id, :consumer_key, :consumer_secret, :certificate_path, :customer_id]
|
7
7
|
|
8
8
|
def configure
|
9
9
|
yield self
|
data/lib/aggcat/version.rb
CHANGED