Skip to content

Commit f479b6a

Browse files
committed
make helper functions into client methods
1 parent 892ecea commit f479b6a

6 files changed

Lines changed: 42 additions & 54 deletions

File tree

main.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,7 @@ func main() {
8282
}
8383

8484
// POST /connect
85-
postRes, mfaRes, err =
86-
// client.ConnectAddUser("plaid_test", "plaid_good", "", "citi", nil)
87-
// client.ConnectUpdate("plaid_selections", "plaid_good", "", "test")
88-
client.AuthUpdate("plaid_test", "plaid_good", "", "test_chase")
89-
// client.ConnectUpdateStep("plaid_test", "plaid_good", "", "tomato", "test")
85+
postRes, mfaRes, err = client.ConnectAddUser("plaid_test", "plaid_good", "", "citi", nil)
9086
if err != nil {
9187
fmt.Println(err)
9288
} else if mfaRes != nil {
@@ -120,13 +116,13 @@ func main() {
120116
} else {
121117
fmt.Println(postRes.Accounts)
122118
fmt.Println("Connect GET")
123-
connectRes, _, _ := client.ConnectGet("test", &plaid.ConnectGetOptions{true, "", "", ""})
119+
connectRes, _, _ := client.ConnectGet("test_citi", &plaid.ConnectGetOptions{true, "", "", ""})
124120
fmt.Println(len(connectRes.Transactions))
125121
fmt.Println(connectRes.Transactions)
126122
// fmt.Println(client.ConnectGet("test", nil))
127123

128124
fmt.Println("Connect DELETE")
129-
fmt.Println(client.ConnectDelete("test"))
125+
fmt.Println(client.ConnectDelete("test_citi"))
130126
}
131127

132128
// POST /balance

plaid/auth.go

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ func (c client) AuthAddUser(username, password, pin, institutionType string,
2222
if err != nil {
2323
return nil, nil, err
2424
}
25-
return postAndUnmarshal(c.environment, "/auth",
26-
bytes.NewReader(jsonText))
25+
return c.postAndUnmarshal("/auth", bytes.NewReader(jsonText))
2726
}
2827

2928
// POST /auth/step
@@ -41,8 +40,7 @@ func (c client) AuthStepSendMethod(accessToken, key, value string) (postRes *pos
4140
if err != nil {
4241
return nil, nil, err
4342
}
44-
return postAndUnmarshal(c.environment, "/auth/step",
45-
bytes.NewReader(jsonText))
43+
return c.postAndUnmarshal("/auth/step", bytes.NewReader(jsonText))
4644
}
4745

4846
// POST /auth/step
@@ -59,8 +57,7 @@ func (c client) AuthStep(accessToken, answer string) (postRes *postResponse,
5957
if err != nil {
6058
return nil, nil, err
6159
}
62-
return postAndUnmarshal(c.environment, "/auth/step",
63-
bytes.NewReader(jsonText))
60+
return c.postAndUnmarshal("/auth/step", bytes.NewReader(jsonText))
6461
}
6562

6663
// POST /auth/get
@@ -75,8 +72,7 @@ func (c client) AuthGet(accessToken string) (postRes *postResponse, err error) {
7572
return nil, err
7673
}
7774
// /auth/get will never return an MFA response
78-
postRes, _, err = postAndUnmarshal(c.environment, "/auth/get",
79-
bytes.NewReader(jsonText))
75+
postRes, _, err = c.postAndUnmarshal("/auth/get", bytes.NewReader(jsonText))
8076
return postRes, err
8177
}
8278

@@ -96,8 +92,7 @@ func (c client) AuthUpdate(username, password, pin, accessToken string) (postRes
9692
if err != nil {
9793
return nil, nil, err
9894
}
99-
return patchAndUnmarshal(c.environment, "/auth",
100-
bytes.NewReader(jsonText))
95+
return c.patchAndUnmarshal("/auth", bytes.NewReader(jsonText))
10196
}
10297

10398
// PATCH /auth/step
@@ -117,8 +112,7 @@ func (c client) AuthUpdateStep(username, password, pin, mfa, accessToken string)
117112
if err != nil {
118113
return nil, nil, err
119114
}
120-
return patchAndUnmarshal(c.environment, "/auth/step",
121-
bytes.NewReader(jsonText))
115+
return c.patchAndUnmarshal("/auth/step", bytes.NewReader(jsonText))
122116
}
123117

124118
// DELETE /auth
@@ -132,8 +126,7 @@ func (c client) AuthDelete(accessToken string) (deleteRes *deleteResponse, err e
132126
if err != nil {
133127
return nil, err
134128
}
135-
return deleteAndUnmarshal(c.environment, "/auth",
136-
bytes.NewReader(jsonText))
129+
return c.deleteAndUnmarshal("/auth", bytes.NewReader(jsonText))
137130
}
138131

139132
type AuthOptions struct {

plaid/balance.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ func (c client) Balance(accessToken string) (postRes *postResponse, err error) {
1616
if err != nil {
1717
return nil, err
1818
}
19-
postRes, _, err = postAndUnmarshal(c.environment, "/balance",
20-
bytes.NewReader(jsonText))
19+
postRes, _, err = c.postAndUnmarshal("/balance", bytes.NewReader(jsonText))
2120
return postRes, err
2221
}
2322

plaid/connect.go

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ func (c client) ConnectAddUser(username, password, pin, institutionType string,
2222
if err != nil {
2323
return nil, nil, err
2424
}
25-
return postAndUnmarshal(c.environment, "/connect",
26-
bytes.NewReader(jsonText))
25+
return c.postAndUnmarshal("/connect", bytes.NewReader(jsonText))
2726
}
2827

2928
// POST /connect/step
@@ -41,8 +40,7 @@ func (c client) ConnectStepSendMethod(accessToken, key, value string) (postRes *
4140
if err != nil {
4241
return nil, nil, err
4342
}
44-
return postAndUnmarshal(c.environment, "/connect/step",
45-
bytes.NewReader(jsonText))
43+
return c.postAndUnmarshal("/connect/step", bytes.NewReader(jsonText))
4644
}
4745

4846
// POST /connect/step
@@ -59,8 +57,7 @@ func (c client) ConnectStep(accessToken, answer string) (postRes *postResponse,
5957
if err != nil {
6058
return nil, nil, err
6159
}
62-
return postAndUnmarshal(c.environment, "/connect/step",
63-
bytes.NewReader(jsonText))
60+
return c.postAndUnmarshal("/connect", bytes.NewReader(jsonText))
6461
}
6562

6663
// POST /connect/get
@@ -77,8 +74,7 @@ func (c client) ConnectGet(accessToken string, options *ConnectGetOptions) (post
7774
if err != nil {
7875
return nil, nil, err
7976
}
80-
return postAndUnmarshal(c.environment, "/connect/get",
81-
bytes.NewReader(jsonText))
77+
return c.postAndUnmarshal("/connect/get", bytes.NewReader(jsonText))
8278
}
8379

8480
// PATCH /connect
@@ -97,8 +93,7 @@ func (c client) ConnectUpdate(username, password, pin, accessToken string) (post
9793
if err != nil {
9894
return nil, nil, err
9995
}
100-
return patchAndUnmarshal(c.environment, "/connect",
101-
bytes.NewReader(jsonText))
96+
return c.patchAndUnmarshal("/connect", bytes.NewReader(jsonText))
10297
}
10398

10499
// PATCH /connect/step
@@ -118,8 +113,7 @@ func (c client) ConnectUpdateStep(username, password, pin, mfa, accessToken stri
118113
if err != nil {
119114
return nil, nil, err
120115
}
121-
return patchAndUnmarshal(c.environment, "/connect/step",
122-
bytes.NewReader(jsonText))
116+
return c.patchAndUnmarshal("/connect/step", bytes.NewReader(jsonText))
123117
}
124118

125119
// DELETE /connect
@@ -133,8 +127,7 @@ func (c client) ConnectDelete(accessToken string) (deleteRes *deleteResponse, er
133127
if err != nil {
134128
return nil, err
135129
}
136-
return deleteAndUnmarshal(c.environment, "/connect",
137-
bytes.NewReader(jsonText))
130+
return c.deleteAndUnmarshal("/connect", bytes.NewReader(jsonText))
138131
}
139132

140133
type ConnectOptions struct {

plaid/plaid.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ import (
99
)
1010

1111
func NewClient(clientID, secret string, environment environmentURL) client {
12-
return client{clientID, secret, environment}
12+
return client{clientID, secret, environment, &http.Client{}}
1313
}
1414

1515
type client struct {
1616
clientID string
1717
secret string
1818
environment environmentURL
19+
httpClient *http.Client
1920
}
2021

22+
var userAgent = "plaid-go"
23+
2124
type environmentURL string
2225

2326
var Tartan environmentURL = "https://tartan.plaid.com"
@@ -133,6 +136,7 @@ type deleteResponse struct {
133136
Message string `json:"message"`
134137
}
135138

139+
// getAndUnmarshal is not a method because no client authentication is required
136140
func getAndUnmarshal(environment environmentURL, endpoint string, structure interface{}) error {
137141
res, err := http.Get(string(environment) + endpoint)
138142
if err != nil {
@@ -160,10 +164,16 @@ func getAndUnmarshal(environment environmentURL, endpoint string, structure inte
160164
return plaidErr
161165
}
162166

163-
func postAndUnmarshal(environment environmentURL, endpoint string,
167+
func (c client) postAndUnmarshal(endpoint string,
164168
body io.Reader) (*postResponse, *mfaResponse, error) {
165169
// Read response body
166-
res, err := http.Post(string(environment)+endpoint, "application/json", body)
170+
req, err := http.NewRequest("POST", string(c.environment)+endpoint, body)
171+
if err != nil {
172+
return nil, nil, err
173+
}
174+
req.Header.Add("Content-Type", "application/json")
175+
req.Header.Add("User-Agent", "plaid-go")
176+
res, err := c.httpClient.Do(req)
167177
if err != nil {
168178
return nil, nil, err
169179
}
@@ -176,16 +186,16 @@ func postAndUnmarshal(environment environmentURL, endpoint string,
176186
return unmarshalPostMFA(res, raw)
177187
}
178188

179-
func patchAndUnmarshal(environment environmentURL, endpoint string,
189+
func (c client) patchAndUnmarshal(endpoint string,
180190
body io.Reader) (*postResponse, *mfaResponse, error) {
181191

182-
httpClient := &http.Client{}
183-
req, err := http.NewRequest("PATCH", string(environment)+endpoint, body)
192+
req, err := http.NewRequest("PATCH", string(c.environment)+endpoint, body)
184193
if err != nil {
185194
return nil, nil, err
186195
}
187196
req.Header.Add("Content-Type", "application/json")
188-
res, err := httpClient.Do(req)
197+
req.Header.Add("User-Agent", "plaid-go")
198+
res, err := c.httpClient.Do(req)
189199
if err != nil {
190200
return nil, nil, err
191201
}
@@ -198,16 +208,16 @@ func patchAndUnmarshal(environment environmentURL, endpoint string,
198208
return unmarshalPostMFA(res, raw)
199209
}
200210

201-
func deleteAndUnmarshal(environment environmentURL, endpoint string,
211+
func (c client) deleteAndUnmarshal(endpoint string,
202212
body io.Reader) (*deleteResponse, error) {
203213

204-
httpClient := &http.Client{}
205-
req, err := http.NewRequest("DELETE", string(environment)+endpoint, body)
214+
req, err := http.NewRequest("DELETE", string(c.environment)+endpoint, body)
206215
if err != nil {
207216
return nil, err
208217
}
209218
req.Header.Add("Content-Type", "application/json")
210-
res, err := httpClient.Do(req)
219+
req.Header.Add("User-Agent", "plaid-go")
220+
res, err := c.httpClient.Do(req)
211221
if err != nil {
212222
return nil, err
213223
}

plaid/upgrade.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ func (c client) Upgrade(accessToken, upgradeTo string,
2020
if err != nil {
2121
return nil, nil, err
2222
}
23-
return postAndUnmarshal(c.environment, "/upgrade",
24-
bytes.NewReader(jsonText))
23+
return c.postAndUnmarshal("/upgrade", bytes.NewReader(jsonText))
2524
}
2625

2726
// POST /upgrade/step
@@ -39,8 +38,7 @@ func (c client) UpgradeStepSendMethod(accessToken, key, value string) (postRes *
3938
if err != nil {
4039
return nil, nil, err
4140
}
42-
return postAndUnmarshal(c.environment, "/upgrade/step",
43-
bytes.NewReader(jsonText))
41+
return c.postAndUnmarshal("/upgrade/step", bytes.NewReader(jsonText))
4442
}
4543

4644
// POST /upgrade/step
@@ -57,8 +55,7 @@ func (c client) UpgradeStep(accessToken, answer string) (postRes *postResponse,
5755
if err != nil {
5856
return nil, nil, err
5957
}
60-
return postAndUnmarshal(c.environment, "/upgrade/step",
61-
bytes.NewReader(jsonText))
58+
return c.postAndUnmarshal("/upgrade/step", bytes.NewReader(jsonText))
6259
}
6360

6461
type UpgradeOptions struct {

0 commit comments

Comments
 (0)