Skip to content

Commit 77994e3

Browse files
committed
chore: fix lint
1 parent 5d6f3d4 commit 77994e3

4 files changed

Lines changed: 32 additions & 29 deletions

File tree

handler.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ func registerHandlers(mux *http.ServeMux, client *MailxClient) {
1818

1919
func handleHealth(w http.ResponseWriter, _ *http.Request) {
2020
w.Header().Set("Content-Type", "application/json")
21-
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
21+
_ = json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
22+
}
23+
24+
func writeJSON(w http.ResponseWriter, status int, v any) {
25+
w.WriteHeader(status)
26+
_ = json.NewEncoder(w).Encode(v)
2227
}
2328

2429
func handleCreateAlias(client *MailxClient) http.HandlerFunc {
@@ -27,14 +32,12 @@ func handleCreateAlias(client *MailxClient) http.HandlerFunc {
2732

2833
token, ok := strings.CutPrefix(r.Header.Get("Authorization"), "Bearer ")
2934
if !ok || token == "" {
30-
w.WriteHeader(http.StatusUnauthorized)
31-
json.NewEncoder(w).Encode(map[string]string{"error": "unauthorized"})
35+
writeJSON(w, http.StatusUnauthorized, map[string]string{"error": "unauthorized"})
3236
return
3337
}
3438

3539
if subtle.ConstantTimeCompare([]byte(token), []byte(client.cfg.BridgeKey)) != 1 {
36-
w.WriteHeader(http.StatusUnauthorized)
37-
json.NewEncoder(w).Encode(map[string]string{"error": "unauthorized"})
40+
writeJSON(w, http.StatusUnauthorized, map[string]string{"error": "unauthorized"})
3841
return
3942
}
4043

@@ -49,14 +52,12 @@ func handleCreateAlias(client *MailxClient) http.HandlerFunc {
4952
Description string `json:"description"`
5053
}
5154
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
52-
w.WriteHeader(http.StatusBadRequest)
53-
json.NewEncoder(w).Encode(map[string]string{"error": "invalid request body"})
55+
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid request body"})
5456
return
5557
}
5658

5759
if body.Domain == "" {
58-
w.WriteHeader(http.StatusUnprocessableEntity)
59-
json.NewEncoder(w).Encode(map[string]string{"error": "domain is required"})
60+
writeJSON(w, http.StatusUnprocessableEntity, map[string]string{"error": "domain is required"})
6061
return
6162
}
6263

@@ -67,15 +68,13 @@ func handleCreateAlias(client *MailxClient) http.HandlerFunc {
6768
alias, err := client.CreateAlias(r.Context(), description)
6869
if err != nil {
6970
slog.Error("failed to create alias", "description", description, "error", err)
70-
w.WriteHeader(http.StatusBadGateway)
71-
json.NewEncoder(w).Encode(map[string]string{"error": "failed to create alias"})
71+
writeJSON(w, http.StatusBadGateway, map[string]string{"error": "failed to create alias"})
7272
return
7373
}
7474

7575
slog.Info("alias created", "description", description, "alias", alias)
7676

77-
w.WriteHeader(http.StatusCreated)
78-
json.NewEncoder(w).Encode(map[string]any{
77+
writeJSON(w, http.StatusCreated, map[string]any{
7978
"data": map[string]string{
8079
"email": alias,
8180
},

handler_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ func TestHealth(t *testing.T) {
4141
}
4242

4343
var body map[string]string
44-
json.NewDecoder(rec.Body).Decode(&body)
44+
if err := json.NewDecoder(rec.Body).Decode(&body); err != nil {
45+
t.Fatalf("failed to decode response: %v", err)
46+
}
4547
if body["status"] != "ok" {
4648
t.Errorf("expected status 'ok', got %q", body["status"])
4749
}
@@ -65,7 +67,9 @@ func TestCreateAlias_ValidRequest(t *testing.T) {
6567
Email string `json:"email"`
6668
} `json:"data"`
6769
}
68-
json.NewDecoder(rec.Body).Decode(&resp)
70+
if err := json.NewDecoder(rec.Body).Decode(&resp); err != nil {
71+
t.Fatalf("failed to decode response: %v", err)
72+
}
6973
if resp.Data.Email != "new.alias@example.com" {
7074
t.Errorf("expected email 'new.alias@example.com', got %q", resp.Data.Email)
7175
}

mailx.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ func (c *MailxClient) Authenticate(ctx context.Context) error {
8383
defer resp.Body.Close()
8484

8585
if resp.StatusCode != http.StatusOK {
86-
io.Copy(io.Discard, resp.Body)
86+
_, _ = io.Copy(io.Discard, resp.Body)
8787
return fmt.Errorf("authenticate returned status %d", resp.StatusCode)
8888
}
8989

@@ -160,11 +160,11 @@ func (c *MailxClient) doCreateAlias(ctx context.Context, description string) (st
160160
defer resp.Body.Close()
161161

162162
if resp.StatusCode == http.StatusUnauthorized {
163-
io.Copy(io.Discard, resp.Body)
163+
_, _ = io.Copy(io.Discard, resp.Body)
164164
return "", errUnauthorized{}
165165
}
166166
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated {
167-
io.Copy(io.Discard, resp.Body)
167+
_, _ = io.Copy(io.Discard, resp.Body)
168168
return "", fmt.Errorf("create alias returned status %d", resp.StatusCode)
169169
}
170170

mailx_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,26 @@ func newTestMailxServer(authStatus, aliasStatus int, aliasName string, authCalls
2222
w.Header().Set("Content-Type", "application/json")
2323
if authStatus != http.StatusOK {
2424
w.WriteHeader(authStatus)
25-
json.NewEncoder(w).Encode(map[string]string{"error": "auth failed"})
25+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "auth failed"})
2626
return
2727
}
28-
json.NewEncoder(w).Encode(authResponse{Token: "test-jwt-token"})
28+
_ = json.NewEncoder(w).Encode(authResponse{Token: "test-jwt-token"})
2929
})
3030

3131
mux.HandleFunc("POST /api/alias", func(w http.ResponseWriter, r *http.Request) {
3232
w.Header().Set("Content-Type", "application/json")
3333
if aliasStatus == http.StatusUnauthorized {
3434
w.WriteHeader(http.StatusUnauthorized)
35-
json.NewEncoder(w).Encode(map[string]string{"error": "unauthorized"})
35+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "unauthorized"})
3636
return
3737
}
3838
if aliasStatus != http.StatusOK && aliasStatus != http.StatusCreated {
3939
w.WriteHeader(aliasStatus)
40-
json.NewEncoder(w).Encode(map[string]string{"error": "server error"})
40+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "server error"})
4141
return
4242
}
4343
w.WriteHeader(aliasStatus)
44-
json.NewEncoder(w).Encode(createAliasResponse{
44+
_ = json.NewEncoder(w).Encode(createAliasResponse{
4545
Alias: struct {
4646
Name string `json:"name"`
4747
}{Name: aliasName},
@@ -94,7 +94,7 @@ func TestAuthenticate_NonOK(t *testing.T) {
9494
func TestAuthenticate_EmptyToken(t *testing.T) {
9595
mux := http.NewServeMux()
9696
mux.HandleFunc("POST /api/authenticate", func(w http.ResponseWriter, r *http.Request) {
97-
json.NewEncoder(w).Encode(authResponse{Token: ""})
97+
_ = json.NewEncoder(w).Encode(authResponse{Token: ""})
9898
})
9999
srv := httptest.NewServer(mux)
100100
defer srv.Close()
@@ -131,17 +131,17 @@ func TestCreateAlias_RetryOn401(t *testing.T) {
131131
mux := http.NewServeMux()
132132
mux.HandleFunc("POST /api/authenticate", func(w http.ResponseWriter, r *http.Request) {
133133
authCalls.Add(1)
134-
json.NewEncoder(w).Encode(authResponse{Token: "refreshed-token"})
134+
_ = json.NewEncoder(w).Encode(authResponse{Token: "refreshed-token"})
135135
})
136136
mux.HandleFunc("POST /api/alias", func(w http.ResponseWriter, r *http.Request) {
137137
callCount++
138138
if callCount == 1 {
139139
w.WriteHeader(http.StatusUnauthorized)
140-
json.NewEncoder(w).Encode(map[string]string{"error": "expired"})
140+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "expired"})
141141
return
142142
}
143143
w.WriteHeader(http.StatusCreated)
144-
json.NewEncoder(w).Encode(createAliasResponse{
144+
_ = json.NewEncoder(w).Encode(createAliasResponse{
145145
Alias: struct {
146146
Name string `json:"name"`
147147
}{Name: "retried@example.com"},
@@ -169,11 +169,11 @@ func TestCreateAlias_RetryOn401_ReauthFails(t *testing.T) {
169169
mux := http.NewServeMux()
170170
mux.HandleFunc("POST /api/authenticate", func(w http.ResponseWriter, r *http.Request) {
171171
w.WriteHeader(http.StatusForbidden)
172-
json.NewEncoder(w).Encode(map[string]string{"error": "denied"})
172+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "denied"})
173173
})
174174
mux.HandleFunc("POST /api/alias", func(w http.ResponseWriter, r *http.Request) {
175175
w.WriteHeader(http.StatusUnauthorized)
176-
json.NewEncoder(w).Encode(map[string]string{"error": "expired"})
176+
_ = json.NewEncoder(w).Encode(map[string]string{"error": "expired"})
177177
})
178178
srv := httptest.NewServer(mux)
179179
defer srv.Close()

0 commit comments

Comments
 (0)