aggcat 0.0.3 → 0.0.4

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/README.md CHANGED
@@ -21,42 +21,45 @@ gem 'aggcat'
21
21
  ```ruby
22
22
  require 'aggcat'
23
23
 
24
- # configure Aggcat
24
+ # Aggcat global configuration
25
25
  Aggcat.configure do |config|
26
- config.issuer_id = YOUR_ISSUER_ID
27
- config.consumer_key = YOUR_CONSUMER_KEY
28
- config.consumer_secret = YOUR_CONSUMER_SECRET
26
+ config.issuer_id = 'your issuer id'
27
+ config.consumer_key = 'your consumer key'
28
+ config.consumer_secret = 'your consumer secret'
29
29
  config.certificate_path = '/path/to/your/certificate/key'
30
30
  end
31
31
 
32
- # create client
33
- client = Aggcat.client
32
+ # alternatively, specify configuration options when instantiating an Aggcat::Client
33
+ client = Aggcat::Client.new(
34
+ issuer_id: 'your issuer id',
35
+ consumer_key: 'your consumer key',
36
+ consumer_secret: 'your consumer secret',
37
+ certificate_path: '/path/to/your/certificate/key'
38
+ )
34
39
 
35
40
  # get all supported financial institutions
36
- client.institutions
37
- => {:response_code=>"200", :response=>{:institutions=>{:institution=>[{:institution_id=>"8860", :institution_name=>"Carolina Foothills FCU Credit Card", :home_url=>"http://www.cffcu.org/index.html", :phone_number=>"1-864-585-6838", :virtual=>false},
41
+ Aggcat.institutions
38
42
 
39
43
  # get details for Bank of America
40
- client.institution(14007)
41
- => {:response_code=>"200", :response=>{:institution_detail=>{:institution_id=>"14007", :institution_name=>"Bank of America", :home_url=>"https://www.bankofamerica.com/", :phone_number=>"1-800-792-0808", :address=>{:address1=>"307 S. MAIN", :city=>"Charlotte", :state=>"NC", :postal_code=>"28255", :country=>"USA"}, :email_address=>"https://www.bankofamerica.com/contact/", :special_text=>"Please enter your Bank of America Online ID and Passcode required for login.", :currency_code=>"USD", :keys=>{:key=>[{:name=>"TAX_AGGR_ENABLED", :val=>"FALSE", :status=>"Active", :display_flag=>false, :display_order=>"20", :mask=>false}, {:name=>"passcode", :status=>"Active", :value_length_max=>"20", :display_flag=>true, :display_order=>"2", :mask=>true, :description=>"Passcode"}, {:name=>"onlineID", :status=>"Active", :value_length_max=>"32", :display_flag=>true, :display_order=>"1", :mask=>false, :description=>"Online ID"}]}}}}
44
+ Aggcat.institution(14007)
42
45
 
43
46
  # add new financial account to aggregate from Bank of America
44
- client.discover_and_add_accounts(14007, username, password)
47
+ Aggcat.discover_and_add_accounts(14007, username, password)
45
48
 
46
- # get one financial account
47
- client.account(account_id)
49
+ # get already aggregated financial account
50
+ Aggcat.account(account_id)
48
51
 
49
52
  # get all aggregated accounts
50
- client.accounts
53
+ Aggcat.accounts
51
54
 
52
55
  # delete account
53
- client.delete_account(account_id)
56
+ Aggcat.delete_account(account_id)
54
57
 
55
58
  # get account transactions
56
- client.account_transactions(account_id, start_date, end_date)
59
+ Aggcat.account_transactions(account_id, start_date, end_date)
57
60
 
58
61
  # delete all aggregated customers
59
- client.delete_customers
62
+ Aggcat.delete_customers
60
63
 
61
64
  ```
62
65
 
@@ -14,10 +14,12 @@ module Aggcat
14
14
  end
15
15
 
16
16
  def institution(institution_id)
17
+ validate(institution_id: institution_id)
17
18
  get("/institutions/#{institution_id}")
18
19
  end
19
20
 
20
21
  def discover_and_add_accounts(institution_id, username, password)
22
+ validate(institution_id: institution_id, username: username, password: password)
21
23
  body = credentials(institution_id, username, password)
22
24
  post("/institutions/#{institution_id}/logins", body, {user_id: "#{institution_id}-#{username}"})
23
25
  end
@@ -27,21 +29,21 @@ module Aggcat
27
29
  end
28
30
 
29
31
  def account(account_id)
32
+ validate(account_id: account_id)
30
33
  get("/accounts/#{account_id}")
31
34
  end
32
35
 
33
- def account_transactions(account_id, start_date = nil, end_date = nil)
34
- uri = "/accounts/#{account_id}/transactions"
35
- if start_date
36
- uri += "?txnStartDate=#{start_date.strftime(DATE_FORMAT)}"
37
- if end_date
38
- uri += "&txnEndDate=#{end_date.strftime(DATE_FORMAT)}"
39
- end
36
+ def account_transactions(account_id, start_date, end_date = nil)
37
+ validate(account_id: account_id, start_date: start_date)
38
+ uri = "/accounts/#{account_id}/transactions?txnStartDate=#{start_date.strftime(DATE_FORMAT)}"
39
+ if end_date
40
+ uri += "&txnEndDate=#{end_date.strftime(DATE_FORMAT)}"
40
41
  end
41
42
  get(uri)
42
43
  end
43
44
 
44
45
  def delete_account(account_id)
46
+ validate(account_id: account_id)
45
47
  delete("/accounts/#{account_id}")
46
48
  end
47
49
 
@@ -73,6 +75,14 @@ module Aggcat
73
75
 
74
76
  private
75
77
 
78
+ def validate(args)
79
+ args.each do |name, value|
80
+ if value.nil? || value.to_s.empty?
81
+ raise ArgumentError, "#{name} is required"
82
+ end
83
+ end
84
+ end
85
+
76
86
  def credentials(institution_id, username, password)
77
87
  institution = institution(institution_id)
78
88
  keys = institution[:response][:institution_detail][:keys][:key].sort { |a, b| a[:display_order] <=> b[:display_order] }
@@ -1,3 +1,3 @@
1
1
  module Aggcat
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aggcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: