From dd211f6077f719d339a27d62309dda46e263db5f Mon Sep 17 00:00:00 2001 From: Justin Hawkins Date: Sun, 17 Mar 2024 09:33:09 +1030 Subject: [PATCH] Lint --- .goreleaser.yaml | 2 +- config/config_test.go | 12 ++++++-- download/download_test.go | 6 ++-- web/web.go | 62 +++++++++++++++++++++++---------------- 4 files changed, 50 insertions(+), 32 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 51c21ca..ea2849e 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,8 +1,8 @@ before: hooks: - # You may remove this if you don't use go modules. - go mod tidy - go test ./... + - golangci-lint run builds: - env: diff --git a/config/config_test.go b/config/config_test.go index 22b8e7d..0fabda5 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -1,6 +1,7 @@ package config import ( + "errors" "os" "os/exec" "path/filepath" @@ -166,8 +167,13 @@ profiles: func configServiceFromString(configString string) *ConfigService { tmpFile, _ := os.CreateTemp("", "gropple_test_*.yml") - tmpFile.Write([]byte(configString)) - tmpFile.Close() + _, err1 := tmpFile.Write([]byte(configString)) + err2 := tmpFile.Close() + + if errors.Join(err1, err2) != nil { + panic("got unexpected error") + } + cs := ConfigService{ Config: &Config{}, ConfigPath: tmpFile.Name(), @@ -204,7 +210,7 @@ func TestLookForExecutable(t *testing.T) { _, err = AbsPathToExecutable(cmd) assert.Error(t, err) - os.Chdir(cmdDir) + os.Chdir(cmdDir) //nolint cmd = "./sleep" path, err = AbsPathToExecutable(cmd) if assert.NoError(t, err) { diff --git a/download/download_test.go b/download/download_test.go index 8dd8ec7..70b6b22 100644 --- a/download/download_test.go +++ b/download/download_test.go @@ -21,11 +21,11 @@ func TestUpdateMetadata(t *testing.T) { // eta's might be xx:xx:xx or xx:xx newD.updateMetadata("[download] 0.0% of 504.09MiB at 135.71KiB/s ETA 01:03:36") if newD.Eta != "01:03:36" { - t.Fatalf("bad long eta in dl\n%#v", newD) + t.Fatalf("bad long eta in dl\n%#v", newD) //nolint } newD.updateMetadata("[download] 0.0% of 504.09MiB at 397.98KiB/s ETA 21:38") if newD.Eta != "21:38" { - t.Fatalf("bad short eta in dl\n%#v", newD) + t.Fatalf("bad short eta in dl\n%#v", newD) //nolint } // added a new file, now we are tracking two @@ -44,7 +44,7 @@ func TestUpdateMetadata(t *testing.T) { // different download newD.updateMetadata("[download] 99.3% of ~1.42GiB at 320.87KiB/s ETA 00:07 (frag 212/214)") if newD.Eta != "00:07" { - t.Fatalf("bad short eta in dl with frag\n%v", newD) + t.Fatalf("bad short eta in dl with frag\n%v", newD) //nolint } // [FixupM3u8] Fixing MPEG-TS in MP4 container of "file [-168849776_456239489].mp4" diff --git a/web/web.go b/web/web.go index aeea5bd..e10623f 100644 --- a/web/web.go +++ b/web/web.go @@ -94,7 +94,7 @@ func homeHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -118,7 +118,7 @@ func homeHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } } @@ -157,7 +157,7 @@ func configHandler() func(w http.ResponseWriter, r *http.Request) { if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -165,7 +165,7 @@ func configHandler() func(w http.ResponseWriter, r *http.Request) { if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } } @@ -181,7 +181,7 @@ func configRESTHandler(cs *config.ConfigService) func(w http.ResponseWriter, r * if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } err = cs.Config.UpdateFromJSON(b) @@ -238,7 +238,7 @@ func fetchInfoOneRESTHandler(cs *config.ConfigService, dm *download.Manager) fun if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -291,7 +291,7 @@ func fetchInfoRESTHandler(dm *download.Manager) func(w http.ResponseWriter, r *h if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } _, err = w.Write(b) @@ -330,7 +330,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -340,7 +340,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } return @@ -353,23 +353,29 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma } req := reqType{} - json.NewDecoder(r.Body).Decode(&req) + err := json.NewDecoder(r.Body).Decode(&req) + if err != nil { + log.Printf("error decoding body of request: %s", err) + w.WriteHeader(http.StatusBadRequest) + _, _ = w.Write([]byte(err.Error())) + return + } log.Printf("popup POST request: %#v", req) if req.URL == "" { - w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + w.WriteHeader(http.StatusBadRequest) + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: "No URL supplied", }) + return } else { - if req.ProfileChosen == "" { w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: "you must choose a profile", }) @@ -379,7 +385,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma profile := cs.Config.ProfileCalled(req.ProfileChosen) if profile == nil { w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: fmt.Sprintf("no such profile: '%s'", req.ProfileChosen), }) @@ -397,7 +403,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma dm.Queue(newDL) w.WriteHeader(200) - json.NewEncoder(w).Encode(queuedResponse{ + _ = json.NewEncoder(w).Encode(queuedResponse{ Success: true, Location: fmt.Sprintf("/fetch/%d", id), }) @@ -418,7 +424,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } templateData := map[string]interface{}{"config": cs.Config, "url": url[0], "Version": vm.GetInfo()} @@ -427,7 +433,7 @@ func fetchHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Ma if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -447,7 +453,7 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } templateData := map[string]interface{}{"config": cs.Config, "Version": vm.GetInfo()} @@ -456,7 +462,7 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man if err != nil { log.Printf("error: %s", err) w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) + _, _ = w.Write([]byte(err.Error())) return } @@ -470,13 +476,19 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man } req := reqBulkType{} - json.NewDecoder(r.Body).Decode(&req) + err := json.NewDecoder(r.Body).Decode(&req) + if err != nil { + log.Printf("error decoding request body: %s", err) + w.WriteHeader(http.StatusBadRequest) + _, _ = w.Write([]byte(err.Error())) + return + } log.Printf("bulk POST request: %#v", req) if req.URLs == "" { w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: "No URLs supplied", }) @@ -486,7 +498,7 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man if req.ProfileChosen == "" { w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: "you must choose a profile", }) @@ -496,7 +508,7 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man profile := cs.Config.ProfileCalled(req.ProfileChosen) if profile == nil { w.WriteHeader(400) - json.NewEncoder(w).Encode(errorResponse{ + _ = json.NewEncoder(w).Encode(errorResponse{ Success: false, Error: fmt.Sprintf("no such profile: '%s'", req.ProfileChosen), }) @@ -522,7 +534,7 @@ func bulkHandler(cs *config.ConfigService, vm *version.Manager, dm *download.Man } w.WriteHeader(200) - json.NewEncoder(w).Encode(successResponse{ + _ = json.NewEncoder(w).Encode(successResponse{ Success: true, Message: fmt.Sprintf("queued %d downloads", count), })