plaid 1.7.1 → 2.0.0.alpha

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/CONTRIBUTING.md +15 -0
  4. data/LICENSE +20 -0
  5. data/README.md +215 -63
  6. data/Rakefile +50 -4
  7. data/UPGRADING.md +45 -0
  8. data/bin/console +13 -0
  9. data/bin/setup +8 -0
  10. data/lib/plaid.rb +51 -88
  11. data/lib/plaid/account.rb +144 -0
  12. data/lib/plaid/category.rb +62 -0
  13. data/lib/plaid/client.rb +67 -0
  14. data/lib/plaid/connector.rb +168 -0
  15. data/lib/plaid/errors.rb +24 -14
  16. data/lib/plaid/income.rb +106 -0
  17. data/lib/plaid/info.rb +65 -0
  18. data/lib/plaid/institution.rb +240 -0
  19. data/lib/plaid/risk.rb +34 -0
  20. data/lib/plaid/transaction.rb +123 -0
  21. data/lib/plaid/user.rb +430 -0
  22. data/lib/plaid/version.rb +1 -1
  23. data/plaid.gemspec +20 -12
  24. metadata +58 -62
  25. data/.gitignore +0 -15
  26. data/.rspec +0 -2
  27. data/.travis.yml +0 -5
  28. data/LICENSE.txt +0 -22
  29. data/PUBLISHING.md +0 -21
  30. data/lib/plaid/config.rb +0 -19
  31. data/lib/plaid/connection.rb +0 -109
  32. data/lib/plaid/models/account.rb +0 -24
  33. data/lib/plaid/models/category.rb +0 -17
  34. data/lib/plaid/models/exchange_token_response.rb +0 -11
  35. data/lib/plaid/models/info.rb +0 -12
  36. data/lib/plaid/models/institution.rb +0 -22
  37. data/lib/plaid/models/transaction.rb +0 -24
  38. data/lib/plaid/models/user.rb +0 -189
  39. data/spec/plaid/config_spec.rb +0 -67
  40. data/spec/plaid/connection_spec.rb +0 -191
  41. data/spec/plaid/error_spec.rb +0 -10
  42. data/spec/plaid/models/account_spec.rb +0 -37
  43. data/spec/plaid/models/category_spec.rb +0 -16
  44. data/spec/plaid/models/institution_spec.rb +0 -19
  45. data/spec/plaid/models/transaction_spec.rb +0 -28
  46. data/spec/plaid/models/user_spec.rb +0 -172
  47. data/spec/plaid_spec.rb +0 -263
  48. data/spec/spec_helper.rb +0 -14
data/lib/plaid/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Plaid
2
- VERSION = '1.7.1'
2
+ VERSION = '2.0.0.alpha'.freeze
3
3
  end
data/plaid.gemspec CHANGED
@@ -1,3 +1,4 @@
1
+ # coding: utf-8
1
2
  lib = File.expand_path('../lib', __FILE__)
2
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
4
  require 'plaid/version'
@@ -5,24 +6,31 @@ require 'plaid/version'
5
6
  Gem::Specification.new do |spec|
6
7
  spec.name = 'plaid'
7
8
  spec.version = Plaid::VERSION
8
- spec.authors = ['Justin Crites']
9
- spec.email = ['crites.justin@gmail.com']
9
+ spec.authors = ['Oleg Dashevskii']
10
+ spec.email = ['olegdashevskii@gmail.com']
11
+
10
12
  spec.summary = 'Ruby bindings for Plaid'
11
- spec.description = 'Ruby gem wrapper for the Plaid API. Read more at the homepage, the wiki, or the plaid documentation.'
13
+ spec.description = 'Ruby gem wrapper for the Plaid API. Read more at the ' \
14
+ 'homepage, the wiki, or in the Plaid documentation.'
12
15
  spec.homepage = 'https://github.com/plaid/plaid-ruby'
13
16
  spec.license = 'MIT'
14
- spec.required_ruby_version = '>= 1.9.3'
15
17
 
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test/|\.gitignore|\.travis)})
20
+ end
21
+
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
24
  spec.require_paths = ['lib']
20
25
 
26
+ spec.required_ruby_version = '>= 2.0.0'
27
+
28
+ spec.add_dependency 'multi_json', '~> 1.11.3'
29
+
21
30
  spec.add_development_dependency 'bundler', '~> 1.7'
22
31
  spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'rspec', '~>3.1'
24
- spec.add_development_dependency 'pry'
25
- spec.add_development_dependency 'pry-stack_explorer'
26
- spec.add_development_dependency 'webmock'
32
+ spec.add_development_dependency 'sdoc', '~> 0.4.1'
33
+ spec.add_development_dependency 'pry', '~> 0.10.3'
34
+ spec.add_development_dependency 'webmock', '~> 2.0.0'
35
+ spec.add_development_dependency 'minitest', '~> 5.8'
27
36
  end
28
-
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 2.0.0.alpha
5
5
  platform: ruby
6
6
  authors:
7
- - Justin Crites
7
+ - Oleg Dashevskii
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2016-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: multi_json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.11.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.11.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,100 +53,92 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '10.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: rspec
56
+ name: sdoc
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '3.1'
61
+ version: 0.4.1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '3.1'
68
+ version: 0.4.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: pry
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - ">="
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0'
75
+ version: 0.10.3
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - ">="
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: 0.10.3
69
83
  - !ruby/object:Gem::Dependency
70
- name: pry-stack_explorer
84
+ name: webmock
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ">="
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: 2.0.0
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ">="
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: 2.0.0
83
97
  - !ruby/object:Gem::Dependency
84
- name: webmock
98
+ name: minitest
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '5.8'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '5.8'
97
111
  description: Ruby gem wrapper for the Plaid API. Read more at the homepage, the wiki,
98
- or the plaid documentation.
112
+ or in the Plaid documentation.
99
113
  email:
100
- - crites.justin@gmail.com
114
+ - olegdashevskii@gmail.com
101
115
  executables: []
102
116
  extensions: []
103
117
  extra_rdoc_files: []
104
118
  files:
105
- - ".gitignore"
106
- - ".rspec"
107
- - ".travis.yml"
119
+ - CHANGELOG.md
120
+ - CONTRIBUTING.md
108
121
  - Gemfile
109
- - LICENSE.txt
110
- - PUBLISHING.md
122
+ - LICENSE
111
123
  - README.md
112
124
  - Rakefile
125
+ - UPGRADING.md
126
+ - bin/console
127
+ - bin/setup
113
128
  - lib/plaid.rb
114
- - lib/plaid/config.rb
115
- - lib/plaid/connection.rb
129
+ - lib/plaid/account.rb
130
+ - lib/plaid/category.rb
131
+ - lib/plaid/client.rb
132
+ - lib/plaid/connector.rb
116
133
  - lib/plaid/errors.rb
117
- - lib/plaid/models/account.rb
118
- - lib/plaid/models/category.rb
119
- - lib/plaid/models/exchange_token_response.rb
120
- - lib/plaid/models/info.rb
121
- - lib/plaid/models/institution.rb
122
- - lib/plaid/models/transaction.rb
123
- - lib/plaid/models/user.rb
134
+ - lib/plaid/income.rb
135
+ - lib/plaid/info.rb
136
+ - lib/plaid/institution.rb
137
+ - lib/plaid/risk.rb
138
+ - lib/plaid/transaction.rb
139
+ - lib/plaid/user.rb
124
140
  - lib/plaid/version.rb
125
141
  - plaid.gemspec
126
- - spec/plaid/config_spec.rb
127
- - spec/plaid/connection_spec.rb
128
- - spec/plaid/error_spec.rb
129
- - spec/plaid/models/account_spec.rb
130
- - spec/plaid/models/category_spec.rb
131
- - spec/plaid/models/institution_spec.rb
132
- - spec/plaid/models/transaction_spec.rb
133
- - spec/plaid/models/user_spec.rb
134
- - spec/plaid_spec.rb
135
- - spec/spec_helper.rb
136
142
  homepage: https://github.com/plaid/plaid-ruby
137
143
  licenses:
138
144
  - MIT
@@ -145,26 +151,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
151
  requirements:
146
152
  - - ">="
147
153
  - !ruby/object:Gem::Version
148
- version: 1.9.3
154
+ version: 2.0.0
149
155
  required_rubygems_version: !ruby/object:Gem::Requirement
150
156
  requirements:
151
- - - ">="
157
+ - - ">"
152
158
  - !ruby/object:Gem::Version
153
- version: '0'
159
+ version: 1.3.1
154
160
  requirements: []
155
161
  rubyforge_project:
156
- rubygems_version: 2.4.7
162
+ rubygems_version: 2.5.1
157
163
  signing_key:
158
164
  specification_version: 4
159
165
  summary: Ruby bindings for Plaid
160
- test_files:
161
- - spec/plaid/config_spec.rb
162
- - spec/plaid/connection_spec.rb
163
- - spec/plaid/error_spec.rb
164
- - spec/plaid/models/account_spec.rb
165
- - spec/plaid/models/category_spec.rb
166
- - spec/plaid/models/institution_spec.rb
167
- - spec/plaid/models/transaction_spec.rb
168
- - spec/plaid/models/user_spec.rb
169
- - spec/plaid_spec.rb
170
- - spec/spec_helper.rb
166
+ test_files: []
data/.gitignore DELETED
@@ -1,15 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
15
- .idea
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.3
4
- sudo: false
5
-
data/LICENSE.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2015 Justin Crites
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/PUBLISHING.md DELETED
@@ -1,21 +0,0 @@
1
- # Publishing
2
-
3
- The module is published to the [rubygems.org][1] under the gem name [plaid][2].
4
-
5
- The publishing process is handled by [rake][3].
6
-
7
- After updating the package version, run:
8
-
9
- ```console
10
- $ rake spec
11
- $ rake build
12
- $ rake release
13
- ```
14
-
15
- See the [semantic versioning][4] guidelines to determine what level of release to publish.
16
-
17
- [1]: https://rubygems.org
18
- [2]: https://rubygems.org/gems/plaid
19
- [3]: https://github.com/ruby/rake
20
- [4]: http://semver.org
21
-
data/lib/plaid/config.rb DELETED
@@ -1,19 +0,0 @@
1
- module Plaid
2
- module Configure
3
- attr_accessor :customer_id, :secret, :environment_location
4
-
5
- KEYS = [:customer_id, :secret, :environment_location]
6
-
7
- def config
8
- yield self
9
-
10
- # Add trailing slash to api url if it is not present
11
- if self.environment_location[-1] != '/'
12
- self.environment_location += '/'
13
- end
14
-
15
- self
16
- end
17
-
18
- end
19
- end
@@ -1,109 +0,0 @@
1
- require 'net/http'
2
- require 'json'
3
- require 'uri'
4
-
5
- module Plaid
6
- class Connection
7
- class << self
8
- # API: semi-private
9
- def post(path, options = {})
10
- uri = build_uri(path)
11
- options.merge!(client_id: Plaid.customer_id, secret: Plaid.secret)
12
- http = Net::HTTP.new(uri.host, uri.port)
13
- http.use_ssl = true
14
- request = Net::HTTP::Post.new(uri.path)
15
- request.set_form_data(options)
16
- res = http.request(request)
17
- parse_response(res)
18
- end
19
-
20
- # API: semi-private
21
- def get(path, id = nil)
22
- uri = build_uri(path,id)
23
- http = Net::HTTP.new(uri.host, uri.port)
24
- http.use_ssl = true
25
- request = Net::HTTP::Get.new(uri.path)
26
- res = http.request(request)
27
- parse_get_response(res.body)
28
- end
29
-
30
- # API: semi-private
31
- def secure_get(path, access_token, options = {})
32
- uri = build_uri(path)
33
- options.merge!({access_token:access_token})
34
- req = Net::HTTP::Get.new(uri.path)
35
- req.body = URI.encode_www_form(options) if options
36
- req.content_type = 'application/x-www-form-urlencoded'
37
- res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
38
- parse_response(res)
39
- end
40
-
41
- # API: semi-private
42
- def patch(path, options = {})
43
- uri = build_uri(path)
44
- options.merge!(client_id: Plaid.customer_id, secret: Plaid.secret)
45
- req = Net::HTTP::Patch.new(uri.path)
46
- req.body = URI.encode_www_form(options) if options
47
- req.content_type = 'application/x-www-form-urlencoded'
48
- res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
49
- parse_response(res)
50
- end
51
-
52
- # API: semi-private
53
- def delete(path, options = {})
54
- uri = build_uri(path)
55
- options.merge!(client_id: Plaid.customer_id, secret: Plaid.secret)
56
- req = Net::HTTP::Delete.new(uri.path)
57
- req.body = URI.encode_www_form(options) if options
58
- req.content_type = 'application/x-www-form-urlencoded'
59
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
60
- end
61
-
62
- protected
63
-
64
- # API: semi-private
65
- def build_uri(path, option = nil)
66
- path = path + '/' + option unless option.nil?
67
- URI.parse(Plaid.environment_location + path)
68
- end
69
-
70
- private
71
-
72
- def parse_response(res)
73
- # unfortunately, the JSON gem will raise an exception if the response is empty
74
- raise Plaid::ServerError.new(res.code, res.msg, '') if res.body.to_s.length < 2
75
- # we got a response from the server, so parse it
76
- body = JSON.parse(res.body)
77
- case res.code.delete('.').to_i
78
- when 200 then body
79
- when 201 then { msg: 'Requires further authentication', body: body}
80
- when 400
81
- raise Plaid::BadRequest.new(body['code'], body['message'], body['resolve'])
82
- when 401
83
- raise Plaid::Unauthorized.new(body['code'], body['message'], body['resolve'])
84
- when 402
85
- raise Plaid::RequestFailed.new(body['code'], body['message'], body['resolve'])
86
- when 404
87
- raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
88
- else
89
- raise Plaid::ServerError.new(body['code'], body['message'], body['resolve'])
90
- end
91
- end
92
-
93
- def parse_get_response(res)
94
- body = JSON.parse(res)
95
- return body if body.kind_of?(Array)
96
-
97
- case body['code']
98
- when nil
99
- body
100
- when 1301, 1401, 1501, 1601
101
- raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
102
- else
103
- body
104
- end
105
- end
106
-
107
- end
108
- end
109
- end