plaid 1.5.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/README.md +2 -2
- data/lib/plaid.rb +2 -0
- data/lib/plaid/connection.rb +8 -30
- data/lib/plaid/errors.rb +27 -0
- data/lib/plaid/version.rb +1 -1
- data/plaid.gemspec +1 -0
- data/spec/connection_spec.rb +180 -0
- data/spec/plaid_error_spec.rb +12 -0
- data/spec/plaid_spec.rb +7 -1
- data/spec/spec_helper.rb +3 -0
- metadata +36 -17
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MjcyODE1ZDJkZmVhM2EzNDNhNDhmNzU3ZjJhYTkzM2E2NmMzMzY3Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NDdlOWQzNzFhZTFkNmEwYjI1NGFkM2NjZmQ5NDkyOGQxZDYwNzQwNA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YjIyODZmMWY4ZmYyMWM0MTc5Yzg5MGVkZThkMzlkZDc3NjEyMzExNmY0NDI1
|
10
|
+
ODE1Y2QwMmExMGY5Yzc1MjNjYzkyYjk5NmZjZjAzMTJhZWM3YWZmYWU1OGIw
|
11
|
+
ZDcwZGMxM2M0YTJkMTNmODMxMjg2ZmFlYjM1MWM5MTBhOWU4YmI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZDc3NjExNjFhMGM4NDNkZmY3NGMwMmI4OGI2YjBjOGQ1MGNkYmViYzVkNDE0
|
14
|
+
MjA5Mzc2ZGI0OTQyNDE4NWQwNjVkNzlkMGNhM2E0ZWU3YWFkYjg5MWVlYzdj
|
15
|
+
ZTlhNDM5ZmU1MjFkYTFhYjRlZTZlMThjNzAwMmMyMTZiNTFlNWU=
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Ruby bindings for the Plaid API
|
|
6
6
|
|
7
7
|
This version is a beta version that contains failing tests for the new 'info' endpoint. While these have been tested individually on real accounts the tests here will fail with the test accounts supplied. These will be updated soon with test credentials.
|
8
8
|
|
9
|
-
Latest stable version: **1.5.
|
9
|
+
Latest stable version: **1.5.3**
|
10
10
|
|
11
11
|
This version removes the need to use 'type' in each additional call.
|
12
12
|
|
@@ -71,7 +71,7 @@ user = Plaid.set_user('access_token')
|
|
71
71
|
```
|
72
72
|
|
73
73
|
```ruby
|
74
|
-
user = Plaid.set_user('access_token', '
|
74
|
+
user = Plaid.set_user('access_token', ['connect'])
|
75
75
|
```
|
76
76
|
|
77
77
|
### Exchanging a Link public_token for a Plaid access_token
|
data/lib/plaid.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
require 'plaid/version'
|
2
2
|
require 'plaid/config'
|
3
|
+
require 'plaid/errors'
|
3
4
|
|
4
5
|
require 'plaid/models/user'
|
5
6
|
require 'plaid/models/institution'
|
6
7
|
require 'plaid/models/category'
|
7
8
|
require 'plaid/models/exchange_token_response'
|
8
9
|
|
10
|
+
|
9
11
|
require 'json'
|
10
12
|
|
11
13
|
module Plaid
|
data/lib/plaid/connection.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'json'
|
3
3
|
require 'uri'
|
4
|
+
|
4
5
|
module Plaid
|
5
6
|
class Connection
|
6
7
|
class << self
|
@@ -51,22 +52,6 @@ module Plaid
|
|
51
52
|
Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') { |http| http.request(req) }
|
52
53
|
end
|
53
54
|
|
54
|
-
# API: semi-private
|
55
|
-
# TODO: Refactor these to use symbols instead of strings
|
56
|
-
def error_handler(err, res = nil)
|
57
|
-
case err
|
58
|
-
when 'Bad Request'
|
59
|
-
puts res.body
|
60
|
-
raise 'The request was malformed. Did you check the API docs?'
|
61
|
-
when 'Unauthorized'
|
62
|
-
raise 'Access denied: Try using the correct credentials.'
|
63
|
-
when 'Corrupted token'
|
64
|
-
raise 'It appears that the access token has been corrupted'
|
65
|
-
else
|
66
|
-
raise err
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
55
|
protected
|
71
56
|
|
72
57
|
# API: semi-private
|
@@ -82,23 +67,16 @@ module Plaid
|
|
82
67
|
case res.code.delete('.').to_i
|
83
68
|
when 200 then body
|
84
69
|
when 201 then { msg: 'Requires further authentication', body: body}
|
85
|
-
when 400
|
70
|
+
when 400
|
71
|
+
raise Plaid::BadRequest.new(body['code'], body['message'], body['resolve'])
|
86
72
|
when 401
|
87
|
-
|
88
|
-
when 1108 then error_handler('Institution not supported', res)
|
89
|
-
when 1105 then error_handler('Corrupted token', res)
|
90
|
-
when 1106 then error_handler('Corrupted public_token', res)
|
91
|
-
when 1107 then error_handler('Missing public_token', res)
|
92
|
-
when 1501 then error_handler('Not Found', res)
|
93
|
-
else error_handler('Unauthorized',res)
|
94
|
-
end
|
73
|
+
raise Plaid::Unauthorized.new(body['code'], body['message'], body['resolve'])
|
95
74
|
when 402
|
96
|
-
|
97
|
-
error_handler('Request Failed', res)
|
75
|
+
raise Plaid::RequestFailed.new(body['code'], body['message'], body['resolve'])
|
98
76
|
when 404
|
99
|
-
|
77
|
+
raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
|
100
78
|
else
|
101
|
-
|
79
|
+
raise Plaid::ServerError.new(body['code'], body['message'], body['resolve'])
|
102
80
|
end
|
103
81
|
end
|
104
82
|
|
@@ -110,7 +88,7 @@ module Plaid
|
|
110
88
|
when nil
|
111
89
|
body
|
112
90
|
when 1301, 1401, 1501, 1601
|
113
|
-
|
91
|
+
raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
|
114
92
|
else
|
115
93
|
body
|
116
94
|
end
|
data/lib/plaid/errors.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Plaid
|
2
|
+
class PlaidError < StandardError
|
3
|
+
attr_reader :code
|
4
|
+
attr_reader :resolve
|
5
|
+
|
6
|
+
def initialize(code, message, resolve)
|
7
|
+
super(message)
|
8
|
+
@code = code
|
9
|
+
@resolve = resolve
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class BadRequest < PlaidError
|
14
|
+
end
|
15
|
+
|
16
|
+
class Unauthorized < PlaidError
|
17
|
+
end
|
18
|
+
|
19
|
+
class RequestFailed < PlaidError
|
20
|
+
end
|
21
|
+
|
22
|
+
class NotFound < PlaidError
|
23
|
+
end
|
24
|
+
|
25
|
+
class ServerError < PlaidError
|
26
|
+
end
|
27
|
+
end
|
data/lib/plaid/version.rb
CHANGED
data/plaid.gemspec
CHANGED
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Plaid::Connection do
|
4
|
+
|
5
|
+
let(:stub_url) { "https://tartan.plaid.com/testing" }
|
6
|
+
let(:bad_req_response) { {"code" => 1005, "message" => "invalid credentials", "resolve" => "The username or password provided is not correct."}.to_json }
|
7
|
+
let(:unauth_response) { {"code" => 1105, "message" => "bad access_token", "resolve" => "This access_token appears to be corrupted."}.to_json }
|
8
|
+
let(:req_fail_response) { {"code" => 1200, "message" => "invalid credentials", "resolve" => "The username or password provided is not correct."}.to_json }
|
9
|
+
let(:req_not_found) { {"code" => 1600, "message" => "product not found", "resolve" => "This product doesn't exist yet, we're actually not sure how you reached this error..."}.to_json }
|
10
|
+
|
11
|
+
describe "#post" do
|
12
|
+
it "should send a post request" do
|
13
|
+
stub = stub_request(:post, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
14
|
+
Plaid::Connection.post("testing")
|
15
|
+
expect(stub).to have_requested(:post, stub_url)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return response on 200 response" do
|
19
|
+
stub = stub_request(:post, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
20
|
+
response = Plaid::Connection.post("testing")
|
21
|
+
expect(response).to eq({"response" => "OK"})
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return message on 201 response" do
|
25
|
+
stub = stub_request(:post, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
|
26
|
+
response = Plaid::Connection.post("testing")
|
27
|
+
expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should throw Plaid::BadRequest on 400 response" do
|
31
|
+
stub = stub_request(:post, stub_url).to_return(status: 400, body: bad_req_response)
|
32
|
+
expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::BadRequest, "invalid credentials")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should throw Plaid::Unauthorized on 401 response" do
|
36
|
+
stub = stub_request(:post, stub_url).to_return(status: 401, body: unauth_response)
|
37
|
+
expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::Unauthorized, "bad access_token")
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should throw Plaid::RequestFailed on 402 response" do
|
41
|
+
stub = stub_request(:post, stub_url).to_return(status: 402, body: req_fail_response)
|
42
|
+
expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should throw a Plaid::NotFound on 404 response" do
|
46
|
+
stub = stub_request(:post, stub_url).to_return(status: 404, body: req_not_found)
|
47
|
+
expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::NotFound, "product not found")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#get" do
|
52
|
+
it "should send a get request" do
|
53
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
54
|
+
Plaid::Connection.get("testing")
|
55
|
+
expect(stub).to have_requested(:get, stub_url)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should return response when no code available" do
|
59
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
60
|
+
response = Plaid::Connection.get("testing")
|
61
|
+
expect(response).to eq({"response" => "OK"})
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should return response when code not [1301, 1401, 1501, 1601]" do
|
65
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1502, "response" => "OK"}.to_json})
|
66
|
+
response = Plaid::Connection.get("testing")
|
67
|
+
expect(response).to eq({"code" => 1502, "response" => "OK"})
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should throw 404 for 1301 code" do
|
71
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1301, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
|
72
|
+
expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should throw 404 for 1401 code" do
|
76
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1401, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
|
77
|
+
expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should throw 404 for 1501 code" do
|
81
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1501, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
|
82
|
+
expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should throw 404 for 1601 code" do
|
86
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1601, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
|
87
|
+
expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#secure_get" do
|
93
|
+
it "should send a secure get request" do
|
94
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
95
|
+
Plaid::Connection.secure_get("testing", "test_wells")
|
96
|
+
expect(stub).to have_requested(:get, stub_url).with(:body => {:access_token => "test_wells"})
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return response on 200 response" do
|
100
|
+
stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
101
|
+
response = Plaid::Connection.secure_get("testing", "test_wells")
|
102
|
+
expect(response).to eq({"response" => "OK"})
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should return message on 201 response" do
|
106
|
+
stub = stub_request(:get, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
|
107
|
+
response = Plaid::Connection.secure_get("testing", "test_wells")
|
108
|
+
expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should throw Plaid::BadRequest on 400 response" do
|
112
|
+
stub = stub_request(:get, stub_url).to_return(status: 400, body: bad_req_response)
|
113
|
+
expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::BadRequest, "invalid credentials")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should throw Plaid::Unauthorized on 401 response" do
|
117
|
+
stub = stub_request(:get, stub_url).to_return(status: 401, body: unauth_response)
|
118
|
+
expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::Unauthorized, "bad access_token")
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should throw Plaid::RequestFailed on 402 response" do
|
122
|
+
stub = stub_request(:get, stub_url).to_return(status: 402, body: req_fail_response)
|
123
|
+
expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should throw a Plaid::NotFound on 404 response" do
|
127
|
+
stub = stub_request(:get, stub_url).to_return(status: 404, body: req_not_found)
|
128
|
+
expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::NotFound, "product not found")
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "#patch" do
|
133
|
+
it "should send a patch request" do
|
134
|
+
stub = stub_request(:patch, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
135
|
+
Plaid::Connection.patch("testing")
|
136
|
+
expect(stub).to have_requested(:patch, stub_url)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should return response on 200 response" do
|
140
|
+
stub = stub_request(:patch, stub_url).to_return({:body => {"response" => "OK"}.to_json})
|
141
|
+
response = Plaid::Connection.patch("testing")
|
142
|
+
expect(response).to eq({"response" => "OK"})
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should return message on 201 response" do
|
146
|
+
stub = stub_request(:patch, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
|
147
|
+
response = Plaid::Connection.patch("testing")
|
148
|
+
expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should throw Plaid::BadRequest on 400 response" do
|
152
|
+
stub = stub_request(:patch, stub_url).to_return(status: 400, body: bad_req_response)
|
153
|
+
expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::BadRequest, "invalid credentials")
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should throw Plaid::Unauthorized on 401 response" do
|
157
|
+
stub = stub_request(:patch, stub_url).to_return(status: 401, body: unauth_response)
|
158
|
+
expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::Unauthorized, "bad access_token")
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should throw Plaid::RequestFailed on 402 response" do
|
162
|
+
stub = stub_request(:patch, stub_url).to_return(status: 402, body: req_fail_response)
|
163
|
+
expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should throw a Plaid::NotFound on 404 response" do
|
167
|
+
stub = stub_request(:patch, stub_url).to_return(status: 404, body: req_not_found)
|
168
|
+
expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::NotFound, "product not found")
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe "#delete" do
|
173
|
+
it "should send a delete request" do
|
174
|
+
stub = stub_request(:delete, stub_url)
|
175
|
+
Plaid::Connection.delete("testing")
|
176
|
+
expect(stub).to have_requested(:delete, stub_url)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Plaid::PlaidError do
|
4
|
+
describe "#new" do
|
5
|
+
it "should allow code, message and resolution" do
|
6
|
+
error = Plaid::PlaidError.new 1, "testing", "fix it"
|
7
|
+
expect(error.code).to eq(1)
|
8
|
+
expect(error.message).to eq("testing")
|
9
|
+
expect(error.resolve).to eq("fix it")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/spec/plaid_spec.rb
CHANGED
@@ -28,7 +28,13 @@ RSpec.describe Plaid do
|
|
28
28
|
|
29
29
|
context 'when account is locked' do
|
30
30
|
let(:password) { 'plaid_locked' }
|
31
|
-
it
|
31
|
+
it "raises a locked error" do
|
32
|
+
expect { user }.to raise_error { |error|
|
33
|
+
expect(error).to be_a(Plaid::RequestFailed)
|
34
|
+
expect(error.code).to eq(1205)
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
32
38
|
end
|
33
39
|
|
34
40
|
context 'with connection options' do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,83 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plaid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Crites
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.1'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry-stack_explorer
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
description: Ruby gem wrapper for the Plaid API. Read more at the homepage, the wiki,
|
@@ -88,8 +102,8 @@ executables: []
|
|
88
102
|
extensions: []
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
91
|
-
-
|
92
|
-
-
|
105
|
+
- .gitignore
|
106
|
+
- .travis.yml
|
93
107
|
- Gemfile
|
94
108
|
- LICENSE.txt
|
95
109
|
- README.md
|
@@ -97,6 +111,7 @@ files:
|
|
97
111
|
- lib/plaid.rb
|
98
112
|
- lib/plaid/config.rb
|
99
113
|
- lib/plaid/connection.rb
|
114
|
+
- lib/plaid/errors.rb
|
100
115
|
- lib/plaid/models/account.rb
|
101
116
|
- lib/plaid/models/category.rb
|
102
117
|
- lib/plaid/models/exchange_token_response.rb
|
@@ -109,7 +124,9 @@ files:
|
|
109
124
|
- spec/account_spec.rb
|
110
125
|
- spec/category_spec.rb
|
111
126
|
- spec/config_spec.rb
|
127
|
+
- spec/connection_spec.rb
|
112
128
|
- spec/institution_spec.rb
|
129
|
+
- spec/plaid_error_spec.rb
|
113
130
|
- spec/plaid_spec.rb
|
114
131
|
- spec/spec_helper.rb
|
115
132
|
- spec/transaction_spec.rb
|
@@ -124,17 +141,17 @@ require_paths:
|
|
124
141
|
- lib
|
125
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
143
|
requirements:
|
127
|
-
- -
|
144
|
+
- - ! '>='
|
128
145
|
- !ruby/object:Gem::Version
|
129
146
|
version: '2.0'
|
130
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
148
|
requirements:
|
132
|
-
- -
|
149
|
+
- - ! '>='
|
133
150
|
- !ruby/object:Gem::Version
|
134
151
|
version: '0'
|
135
152
|
requirements: []
|
136
153
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.4.
|
154
|
+
rubygems_version: 2.4.8
|
138
155
|
signing_key:
|
139
156
|
specification_version: 4
|
140
157
|
summary: Ruby bindings for Plaid
|
@@ -142,7 +159,9 @@ test_files:
|
|
142
159
|
- spec/account_spec.rb
|
143
160
|
- spec/category_spec.rb
|
144
161
|
- spec/config_spec.rb
|
162
|
+
- spec/connection_spec.rb
|
145
163
|
- spec/institution_spec.rb
|
164
|
+
- spec/plaid_error_spec.rb
|
146
165
|
- spec/plaid_spec.rb
|
147
166
|
- spec/spec_helper.rb
|
148
167
|
- spec/transaction_spec.rb
|