Skip to content

Commit b3b8931

Browse files
authored
DE-1356 Add revive linter (#359)
1 parent 8fd2c2b commit b3b8931

23 files changed

+528
-107
lines changed

.golangci.yml

+417-2
Large diffs are not rendered by default.

attachments_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,12 @@ func findAcceptedMessage(mg mailgun.Mailgun, id string) (*events.Accepted, error
6262
for it.Next(context.Background(), &page) {
6363
for _, event := range page {
6464
if event.GetName() == events.EventAccepted && event.GetID() == id {
65-
return event.(*events.Accepted), nil
65+
e, ok := event.(*events.Accepted)
66+
if !ok {
67+
return nil, fmt.Errorf("unexpected event type: %T", event)
68+
}
69+
70+
return e, nil
6671
}
6772
}
6873
}

events.go

+10-11
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@ func (ei *EventIterator) Err() error {
9090
// Next retrieves the next page of events from the api. Returns false when there
9191
// no more pages to retrieve or if there was an error. Use `.Err()` to retrieve
9292
// the error
93-
func (ei *EventIterator) Next(ctx context.Context, events *[]Event) bool {
93+
func (ei *EventIterator) Next(ctx context.Context, ee *[]Event) bool {
9494
if ei.err != nil {
9595
return false
9696
}
9797
ei.err = ei.fetch(ctx, ei.Paging.Next)
9898
if ei.err != nil {
9999
return false
100100
}
101-
*events, ei.err = ParseEvents(ei.Items)
101+
*ee, ei.err = ParseEvents(ei.Items)
102102
if ei.err != nil {
103103
return false
104104
}
@@ -111,38 +111,38 @@ func (ei *EventIterator) Next(ctx context.Context, events *[]Event) bool {
111111
// First retrieves the first page of events from the api. Returns false if there
112112
// was an error. It also sets the iterator object to the first page.
113113
// Use `.Err()` to retrieve the error.
114-
func (ei *EventIterator) First(ctx context.Context, events *[]Event) bool {
114+
func (ei *EventIterator) First(ctx context.Context, ee *[]Event) bool {
115115
if ei.err != nil {
116116
return false
117117
}
118118
ei.err = ei.fetch(ctx, ei.Paging.First)
119119
if ei.err != nil {
120120
return false
121121
}
122-
*events, ei.err = ParseEvents(ei.Items)
122+
*ee, ei.err = ParseEvents(ei.Items)
123123
return true
124124
}
125125

126126
// Last retrieves the last page of events from the api.
127127
// Calling Last() is invalid unless you first call First() or Next()
128128
// Returns false if there was an error. It also sets the iterator object
129129
// to the last page. Use `.Err()` to retrieve the error.
130-
func (ei *EventIterator) Last(ctx context.Context, events *[]Event) bool {
130+
func (ei *EventIterator) Last(ctx context.Context, ee *[]Event) bool {
131131
if ei.err != nil {
132132
return false
133133
}
134134
ei.err = ei.fetch(ctx, ei.Paging.Last)
135135
if ei.err != nil {
136136
return false
137137
}
138-
*events, ei.err = ParseEvents(ei.Items)
138+
*ee, ei.err = ParseEvents(ei.Items)
139139
return true
140140
}
141141

142142
// Previous retrieves the previous page of events from the api. Returns false when there
143143
// no more pages to retrieve or if there was an error. Use `.Err()` to retrieve
144144
// the error if any
145-
func (ei *EventIterator) Previous(ctx context.Context, events *[]Event) bool {
145+
func (ei *EventIterator) Previous(ctx context.Context, ee *[]Event) bool {
146146
if ei.err != nil {
147147
return false
148148
}
@@ -153,7 +153,7 @@ func (ei *EventIterator) Previous(ctx context.Context, events *[]Event) bool {
153153
if ei.err != nil {
154154
return false
155155
}
156-
*events, ei.err = ParseEvents(ei.Items)
156+
*ee, ei.err = ParseEvents(ei.Items)
157157

158158
return len(ei.Items) != 0
159159
}
@@ -234,7 +234,7 @@ func (ep *EventPoller) Err() error {
234234
return ep.err
235235
}
236236

237-
func (ep *EventPoller) Poll(ctx context.Context, events *[]Event) bool {
237+
func (ep *EventPoller) Poll(ctx context.Context, ee *[]Event) bool {
238238
var currentPage string
239239
var results []Event
240240

@@ -266,7 +266,7 @@ func (ep *EventPoller) Poll(ctx context.Context, events *[]Event) bool {
266266

267267
// If we have events to return
268268
if len(results) != 0 {
269-
*events = results
269+
*ee = results
270270
return true
271271
}
272272

@@ -284,7 +284,6 @@ func (ep *EventPoller) Poll(ctx context.Context, events *[]Event) bool {
284284
case <-timer.C:
285285
}
286286
}
287-
288287
}
289288

290289
// Given time.Time{} return a float64 as given in mailgun event timestamps

examples_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ func ExampleMailgunImpl_VerifyWebhookSignature() {
146146
}
147147

148148
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
149-
150149
var payload mailgun.WebhookPayload
151150
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
152151
fmt.Printf("decode JSON error: %s", err)

exports.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func (mg *MailgunImpl) GetExportLink(ctx context.Context, id string) (string, er
6767
c := mg.Client()
6868

6969
// Ensure the client doesn't attempt to retry
70-
c.CheckRedirect = func(req *http.Request, via []*http.Request) error {
70+
c.CheckRedirect = func(_ *http.Request, _ []*http.Request) error {
7171
return errors.New("redirect")
7272
}
7373

@@ -84,10 +84,10 @@ func (mg *MailgunImpl) GetExportLink(ctx context.Context, id string) (string, er
8484
if Debug {
8585
if CaptureCurlOutput {
8686
r.mu.Lock()
87-
r.capturedCurlOutput = r.curlString(req, nil)
87+
r.capturedCurlOutput = curlString(req, nil)
8888
r.mu.Unlock()
8989
} else {
90-
fmt.Println(r.curlString(req, nil))
90+
fmt.Println(curlString(req, nil))
9191
}
9292
}
9393

httphelpers.go

+32-33
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ type jsonEncodedPayload struct {
7676
payload interface{}
7777
}
7878

79-
func newHTTPRequest(url string) *httpRequest {
80-
return &httpRequest{URL: url, Client: http.DefaultClient}
79+
func newHTTPRequest(uri string) *httpRequest {
80+
return &httpRequest{URL: uri, Client: http.DefaultClient}
8181
}
8282

8383
func (r *httpRequest) addParameter(name, value string) {
@@ -109,11 +109,11 @@ func (j *jsonEncodedPayload) getPayloadBuffer() (*bytes.Buffer, error) {
109109
return bytes.NewBuffer(b), nil
110110
}
111111

112-
func (j *jsonEncodedPayload) getContentType() (string, error) {
112+
func (*jsonEncodedPayload) getContentType() (string, error) {
113113
return "application/json", nil
114114
}
115115

116-
func (j *jsonEncodedPayload) getValues() []keyValuePair {
116+
func (*jsonEncodedPayload) getValues() []keyValuePair {
117117
return nil
118118
}
119119

@@ -134,7 +134,7 @@ func (f *urlEncodedPayload) getPayloadBuffer() (*bytes.Buffer, error) {
134134
return bytes.NewBufferString(data.Encode()), nil
135135
}
136136

137-
func (f *urlEncodedPayload) getContentType() (string, error) {
137+
func (*urlEncodedPayload) getContentType() (string, error) {
138138
return "application/x-www-form-urlencoded", nil
139139
}
140140

@@ -176,12 +176,13 @@ func (f *FormDataPayload) getPayloadBuffer() (*bytes.Buffer, error) {
176176
defer writer.Close()
177177

178178
for _, keyVal := range f.Values {
179-
if tmp, err := writer.CreateFormField(keyVal.key); err == nil {
180-
_, err := tmp.Write([]byte(keyVal.value))
181-
if err != nil {
182-
return nil, err
183-
}
184-
} else {
179+
tmp, err := writer.CreateFormField(keyVal.key)
180+
if err != nil {
181+
return nil, err
182+
}
183+
184+
_, err = tmp.Write([]byte(keyVal.value))
185+
if err != nil {
185186
return nil, err
186187
}
187188
}
@@ -197,7 +198,7 @@ func (f *FormDataPayload) getPayloadBuffer() (*bytes.Buffer, error) {
197198
return nil, err
198199
}
199200

200-
// TODO(DE-1139): defer in a loop:
201+
// TODO(DE-1373): defer in a loop:
201202
defer fp.Close()
202203

203204
_, err = io.Copy(tmp, fp)
@@ -207,28 +208,29 @@ func (f *FormDataPayload) getPayloadBuffer() (*bytes.Buffer, error) {
207208
}
208209

209210
for _, file := range f.ReadClosers {
210-
if tmp, err := writer.CreateFormFile(file.key, file.name); err == nil {
211-
// TODO(DE-1139): defer in a loop:
212-
defer file.value.Close()
211+
tmp, err := writer.CreateFormFile(file.key, file.name)
212+
if err != nil {
213+
return nil, err
214+
}
213215

214-
_, err := io.Copy(tmp, file.value)
215-
if err != nil {
216-
return nil, err
217-
}
218-
} else {
216+
// TODO(DE-1373): defer in a loop:
217+
defer file.value.Close()
218+
219+
_, err = io.Copy(tmp, file.value)
220+
if err != nil {
219221
return nil, err
220222
}
221223
}
222224

223225
for _, buff := range f.Buffers {
224-
if tmp, err := writer.CreateFormFile(buff.key, buff.name); err == nil {
225-
r := bytes.NewReader(buff.value)
226+
tmp, err := writer.CreateFormFile(buff.key, buff.name)
227+
if err != nil {
228+
return nil, err
229+
}
226230

227-
_, err := io.Copy(tmp, r)
228-
if err != nil {
229-
return nil, err
230-
}
231-
} else {
231+
r := bytes.NewReader(buff.value)
232+
_, err = io.Copy(tmp, r)
233+
if err != nil {
232234
return nil, err
233235
}
234236
}
@@ -327,10 +329,10 @@ func (r *httpRequest) makeRequest(ctx context.Context, method string, payload pa
327329
if Debug {
328330
if CaptureCurlOutput {
329331
r.mu.Lock()
330-
r.capturedCurlOutput = r.curlString(req, payload)
332+
r.capturedCurlOutput = curlString(req, payload)
331333
r.mu.Unlock()
332334
} else {
333-
fmt.Println(r.curlString(req, payload))
335+
fmt.Println(curlString(req, payload))
334336
}
335337
}
336338

@@ -383,8 +385,7 @@ func (r *httpRequest) generateUrlWithParameters() (string, error) {
383385
return uri.String(), nil
384386
}
385387

386-
func (r *httpRequest) curlString(req *http.Request, p payload) string {
387-
388+
func curlString(req *http.Request, p payload) string {
388389
parts := []string{"curl", "-i", "-X", req.Method, req.URL.String()}
389390
for key, value := range req.Header {
390391
if key == "Authorization" {
@@ -399,8 +400,6 @@ func (r *httpRequest) curlString(req *http.Request, p payload) string {
399400
parts = append(parts, fmt.Sprintf("-H \"Host: %s\"", req.Host))
400401
}
401402

402-
// parts = append(parts, fmt.Sprintf(" --user '%s:%s'", r.BasicAuthUser, r.BasicAuthPassword))
403-
404403
if p != nil {
405404
contentType, _ := p.getContentType()
406405
if contentType == "application/json" {

mailgun.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ func (mg *MailgunImpl) SetAPIBase(address string) {
386386

387387
// AddOverrideHeader allows the user to specify additional headers that will be included in the HTTP request
388388
// This is mostly useful for testing the Mailgun API hosted at a different endpoint.
389-
func (mg *MailgunImpl) AddOverrideHeader(k string, v string) {
389+
func (mg *MailgunImpl) AddOverrideHeader(k, v string) {
390390
if mg.overrideHeaders == nil {
391391
mg.overrideHeaders = make(map[string]string)
392392
}

mailgun_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestInvalidBaseAPI(t *testing.T) {
3838
}
3939

4040
func TestValidBaseAPI(t *testing.T) {
41-
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
41+
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
4242
var resp mailgun.DomainResponse
4343
b, err := json.Marshal(resp)
4444
require.NoError(t, err)

members.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ var (
2121
// This attribute may be used to filter the results returned by GetSubscribers().
2222
// All, Subscribed, and Unsubscribed provides a convenient and readable syntax for specifying the scope of the search.
2323
var (
24-
All *bool = nil
25-
Subscribed *bool = &yes
26-
Unsubscribed *bool = &no
24+
All *bool
25+
Subscribed = &yes
26+
Unsubscribed = &no
2727
)
2828

2929
// A Member structure represents a member of the mailing list.

0 commit comments

Comments
 (0)