plaidio 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dfdcbfcc013315a45c05301818998bc2a56b77b0
4
+ data.tar.gz: 643b968783721aac7bd259f94ea0bc031a85621a
5
+ SHA512:
6
+ metadata.gz: 27623cc16089470e421f13ff7a1eaa6b62c520a370f4bff04845392a28cffe26cec042442d7a4e79d49961dee269976c6f6c219f8c22fac2e88ace84fcccbec4
7
+ data.tar.gz: 461f2057d8d86f25db95cc9bc8aa3468902c7ddb5472989e78f9351610749996452023c591ca5f21838ad07d073e83de49fcde7878b01365a6e7c67aa8fecd51
@@ -0,0 +1,57 @@
1
+ module Plaidio
2
+ require 'rest-client'
3
+ class Call
4
+
5
+ BASE_URL = 'https://tartan.plaid.com/'
6
+
7
+ # This initializes our instance variables, and sets up a new Customer class.
8
+ def initialize
9
+ Plaidio::Configure::KEYS.each do |key|
10
+ instance_variable_set(:"@#{key}", Plaidio.instance_variable_get(:"@#{key}"))
11
+ end
12
+ end
13
+
14
+ def add_account(type,username,password,email)
15
+ post('/connect',type,username,password,email)
16
+ return parse_response(@response)
17
+ end
18
+
19
+ protected
20
+
21
+ def parse_response(response)
22
+ case response.code
23
+ when "200"
24
+ @parsed_response = Hash.new
25
+ @parsed_response[:code] = response.code
26
+ response = JSON.parse(response)
27
+ @parsed_response[:access_token] = response["access_token"]
28
+ @parsed_response[:accounts] = response["accounts"]
29
+ @parsed_response[:transactions] = response["transactions"]
30
+ return @parsed_response
31
+ when "201"
32
+ @parsed_response = Hash.new
33
+ @parsed_response[:code] = response.code
34
+ response = JSON.parse(response)
35
+ @parsed_response = Hash.new
36
+ @parsed_response[:type] = response["type"]
37
+ @parsed_response[:access_token] = response["access_token"]
38
+ @parsed_response[:mfa_info] = response["mfa_info"]
39
+ return @parsed_response
40
+ else
41
+ @parsed_response = Hash.new
42
+ @parsed_response[:code] = response.code
43
+ @parsed_response[:message] = response
44
+ return @parsed_response
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def post(path,type,username,password,email)
51
+ url = BASE_URL + path
52
+ @response = RestClient.post url, :client_id => self.instance_variable_get(:'@customer_id') ,:secret => self.instance_variable_get(:'@secret'), :type => type ,:credentials => {:username => username, :password => password} ,:email => email
53
+ return @response
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,13 @@
1
+ module Plaidio
2
+ module Configure
3
+ attr_writer :customer_id, :secret
4
+
5
+ KEYS = [:customer_id, :secret]
6
+
7
+ def config
8
+ yield self
9
+ self
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,102 @@
1
+ module Plaidio
2
+ # This is used when a customer needs to be defined by the plaid access token.
3
+ # Abstracting as a class makes it easier since we wont have to redefine the access_token over and over.
4
+ class Customer
5
+
6
+ BASE_URL = 'https://tartan.plaid.com'
7
+
8
+ # This initializes our instance variables, and sets up a new Customer class.
9
+ def initialize
10
+ Plaidio::Configure::KEYS.each do |key|
11
+ instance_variable_set(:"@#{key}", Plaidio.instance_variable_get(:"@#{key}"))
12
+ end
13
+ end
14
+
15
+ def mfa_step(access_token,code)
16
+ @mfa = code
17
+ post("/connect/step", access_token, mfa: @mfa)
18
+ return parse_response(@response,1)
19
+ end
20
+
21
+ def get_transactions(access_token)
22
+ get('/connect', access_token)
23
+ return parse_response(@response,2)
24
+ end
25
+
26
+ def delete_account(access_token)
27
+ delete('/connect', access_token)
28
+ return parse_response(@response,3)
29
+ end
30
+
31
+ protected
32
+
33
+ def parse_response(response,method)
34
+ case method
35
+ when 1
36
+ case response.code
37
+ when "200"
38
+ @parsed_response = Hash.new
39
+ @parsed_response[:code] = response.code
40
+ response = JSON.parse(response)
41
+ @parsed_response[:access_token] = response["access_token"]
42
+ @parsed_response[:accounts] = response["accounts"]
43
+ @parsed_response[:transactions] = response["transactions"]
44
+ return @parsed_response
45
+ else
46
+ @parsed_response = Hash.new
47
+ @parsed_response[:code] = response.code
48
+ @parsed_response[:message] = response
49
+ return @parsed_response
50
+ end
51
+ when 2
52
+ case response.code
53
+ when "200"
54
+ @parsed_response = Hash.new
55
+ @parsed_response[:code] = response.code
56
+ response = JSON.parse(response)
57
+ @parsed_response[:transactions] = response["transactions"]
58
+ return @parsed_response
59
+ else
60
+ @parsed_response = Hash.new
61
+ @parsed_response[:code] = response.code
62
+ @parsed_response[:message] = response
63
+ return @parsed_response
64
+ end
65
+ when 3
66
+ case response.code
67
+ when "200"
68
+ @parsed_response = Hash.new
69
+ @parsed_response[:code] = response.code
70
+ response = JSON.parse(response)
71
+ @parsed_response[:message] = response
72
+ return @parsed_response
73
+ else
74
+ @parsed_response = Hash.new
75
+ @parsed_response[:code] = response.code
76
+ @parsed_response[:message] = response
77
+ return @parsed_response
78
+ end
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ def get(path,access_token,options={})
85
+ url = BASE_URL + path
86
+ @response = RestClient.get(url,:params => {:client_id => self.instance_variable_get(:'@customer_id'), :secret => self.instance_variable_get(:'@secret'), :access_token => access_token})
87
+ return @response
88
+ end
89
+
90
+ def post(path,access_token,options={})
91
+ url = BASE_URL + path
92
+ @response = RestClient.post url, :client_id => self.instance_variable_get(:'@customer_id') ,:secret => self.instance_variable_get(:'@secret'), :access_token => access_token, :mfa => @mfa
93
+ return @response
94
+ end
95
+
96
+ def delete(path,access_token,options={})
97
+ url = BASE_URL + path
98
+ @response = RestClient.delete(url,:params => {:client_id => self.instance_variable_get(:'@customer_id'), :secret => self.instance_variable_get(:'@secret'), :access_token => access_token})
99
+ return @response
100
+ end
101
+ end
102
+ end
data/lib/plaidio.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'plaidio/config'
2
+ require 'plaidio/call'
3
+ require 'plaidio/customer'
4
+ module Plaidio
5
+ class << self
6
+ include Plaidio::Configure
7
+
8
+ # Defined when a user exists with a unique access_token. Ex: Plaidio.customer.get_transactions
9
+ def customer
10
+ @customer = Plaidio::Customer.new
11
+ end
12
+
13
+ # Defined for generic calls without access_tokens required. Ex: Plaidio.call.add_accounts(username,password,type)
14
+ def call
15
+ @call = Plaidio::Call.new
16
+ end
17
+
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: plaidio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Justin Crites
8
+ - Gamble McAdam
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rest-client
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: json
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ description: A simple to use ruby wrapper for Plaid.io API.
71
+ email: justin@guavatext.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/plaidio.rb
77
+ - lib/plaidio/config.rb
78
+ - lib/plaidio/call.rb
79
+ - lib/plaidio/customer.rb
80
+ homepage: https://github.com/j4ustin/plaidio
81
+ licenses:
82
+ - MIT
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.0.3
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Plaid.io api gem
104
+ test_files: []