1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Use errcheck to find unhandled errors (#795)

Signed-off-by: Chris Cummer <chriscummer@me.com>
This commit is contained in:
Chris Cummer
2019-12-17 08:26:16 -08:00
committed by GitHub
parent 04ff03ab1c
commit cde904ff08
44 changed files with 250 additions and 97 deletions

View File

@@ -18,7 +18,7 @@ func Request(apiKey string, apiURL string) ([]byte, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
data, err := ParseBody(resp)
if err != nil {

View File

@@ -79,7 +79,7 @@ func (widget *Widget) Write(p []byte) (n int, err error) {
// Remove lines that exceed maxLines
lines := widget.countLines()
if lines > widget.settings.maxLines {
widget.drainLines(lines - widget.settings.maxLines)
err = widget.drainLines(lines - widget.settings.maxLines)
}
return n, err
@@ -93,10 +93,15 @@ func (widget *Widget) countLines() int {
}
// drainLines removed the first n lines from the buffer
func (widget *Widget) drainLines(n int) {
func (widget *Widget) drainLines(n int) error {
for i := 0; i < n; i++ {
widget.buffer.ReadBytes('\n')
_, err := widget.buffer.ReadBytes('\n')
if err != nil {
return err
}
}
return nil
}
func (widget *Widget) environment() []string {

View File

@@ -44,7 +44,7 @@ func (widget *Widget) content() (string, string, bool) {
formatableText("Open Sell", "OpenSellOrders"),
)
strTemplate.Execute(writer, map[string]string{
err := strTemplate.Execute(writer, map[string]string{
"nameColor": widget.settings.colors.market.name,
"fieldColor": widget.settings.colors.market.field,
"valueColor": widget.settings.colors.market.value,
@@ -57,7 +57,11 @@ func (widget *Widget) content() (string, string, bool) {
"OpenSellOrders": marketCurrency.OpenSellOrders,
})
str += writer.String() + "\n"
if err != nil {
str = err.Error()
} else {
str += writer.String() + "\n"
}
}
}

View File

@@ -90,7 +90,9 @@ func (widget *Widget) Refresh() {
func (widget *Widget) updateSummary() {
// In case if anything bad happened!
defer func() {
recover()
if r := recover(); r != nil {
fmt.Println("recovered in updateSummary()", r)
}
}()
client := &http.Client{
@@ -120,10 +122,14 @@ func (widget *Widget) updateSummary() {
errorText = ""
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
jsonResponse := summaryResponse{}
decoder := json.NewDecoder(response.Body)
decoder.Decode(&jsonResponse)
err = decoder.Decode(&jsonResponse)
if err != nil {
errorText = "Could not parse JSON!"
break
}
if !jsonResponse.Success {
ok = false

View File

@@ -115,7 +115,7 @@ func MakeApiRequest(token string, method string) ([]byte, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err

View File

@@ -99,7 +99,9 @@ func (widget *Widget) getToList(symbol string) []*toCurrency {
func (widget *Widget) updateCurrencies() {
defer func() {
recover()
if r := recover(); r != nil {
fmt.Println("recovered in updateSummary()", r)
}
}()
for _, fromCurrency := range widget.list.items {
@@ -121,7 +123,7 @@ func (widget *Widget) updateCurrencies() {
ok = true
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
_ = json.NewDecoder(response.Body).Decode(&jsonResponse)

View File

@@ -68,7 +68,9 @@ func (widget *Widget) Refresh(wg *sync.WaitGroup) {
func (widget *Widget) updateData() {
defer func() {
recover()
if r := recover(); r != nil {
fmt.Println("recovered in updateSummary()", r)
}
}()
client := &http.Client{

View File

@@ -177,7 +177,10 @@ func (widget *Widget) dropletDestroy() {
return
}
widget.client.Droplets.Delete(context.Background(), currDroplet.ID)
_, err := widget.client.Droplets.Delete(context.Background(), currDroplet.ID)
if err != nil {
return
}
widget.dropletRemoveSelected()
widget.Refresh()
@@ -190,7 +193,11 @@ func (widget *Widget) dropletEnabledPrivateNetworking() {
return
}
widget.client.DropletActions.EnablePrivateNetworking(context.Background(), currDroplet.ID)
_, _, err := widget.client.DropletActions.EnablePrivateNetworking(context.Background(), currDroplet.ID)
if err != nil {
return
}
widget.Refresh()
}
@@ -210,7 +217,10 @@ func (widget *Widget) dropletRestart() {
return
}
widget.client.DropletActions.Reboot(context.Background(), currDroplet.ID)
_, _, err := widget.client.DropletActions.Reboot(context.Background(), currDroplet.ID)
if err != nil {
return
}
widget.Refresh()
}
@@ -221,7 +231,10 @@ func (widget *Widget) dropletShutDown() {
return
}
widget.client.DropletActions.Shutdown(context.Background(), currDroplet.ID)
_, _, err := widget.client.DropletActions.Shutdown(context.Background(), currDroplet.ID)
if err != nil {
return
}
widget.Refresh()
}

View File

@@ -16,14 +16,14 @@ func FetchExchangeRates(settings *Settings) (map[string]map[string]float64, erro
out := map[string]map[string]float64{}
for base, rates := range settings.rates {
res, err := http.Get(fmt.Sprintf("https://api.exchangeratesapi.io/latest?base=%s", base))
resp, err := http.Get(fmt.Sprintf("https://api.exchangeratesapi.io/latest?base=%s", base))
if err != nil {
return nil, err
}
defer res.Body.Close()
defer func() { _ = resp.Body.Close() }()
var resp Response
err = utils.ParseJSON(&resp, res.Body)
var data Response
err = utils.ParseJSON(&data, resp.Body)
if err != nil {
return nil, err
}
@@ -31,7 +31,7 @@ func FetchExchangeRates(settings *Settings) (map[string]map[string]float64, erro
out[base] = map[string]float64{}
for _, currency := range rates {
rate, ok := resp.Rates[currency]
rate, ok := data.Rates[currency]
if ok {
out[base][currency] = rate
}

View File

@@ -95,7 +95,7 @@ func (widget *Widget) GetStandings(leagueId int) string {
if err != nil {
return fmt.Sprintf("Error fetching standings: %s", err.Error())
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Sprintf("Error fetching standings: %s", err.Error())
@@ -141,7 +141,7 @@ func (widget *Widget) GetMatches(leagueId int) string {
if err != nil {
return fmt.Sprintf("Error fetching matches: %s", err.Error())
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Sprintf("Error fetching matches: %s", err.Error())

View File

@@ -172,7 +172,8 @@ func tokenFromFile(file string) (*oauth2.Token, error) {
}
t := &oauth2.Token{}
err = json.NewDecoder(f).Decode(t)
defer f.Close()
defer func() { _ = f.Close() }()
return t, err
}
@@ -182,11 +183,14 @@ func saveToken(file string, token *oauth2.Token) {
fmt.Printf("Saving credential file to: %s\n", file)
f, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil {
log.Fatalf("Unable to cache oauth token: %v", err)
log.Fatalf("unable to cache oauth token: %v", err)
}
defer f.Close()
defer func() { _ = f.Close() }()
json.NewEncoder(f).Encode(token)
err = json.NewEncoder(f).Encode(token)
if err != nil {
log.Fatalf("unable to encode oauth token: %v", err)
}
}
func (widget *Widget) getCalendarIdList(srv *calendar.Service) ([]string, error) {

View File

@@ -14,7 +14,10 @@ func newContext(settings *Settings) (*context, error) {
gitlabClient := glb.NewClient(nil, settings.apiKey)
if baseURL != "" {
gitlabClient.SetBaseURL(baseURL)
err := gitlabClient.SetBaseURL(baseURL)
if err != nil {
return nil, err
}
}
user, _, err := gitlabClient.Users.CurrentUser()

View File

@@ -112,10 +112,14 @@ func tokenCacheFile() (string, error) {
if err != nil {
return "", err
}
tokenCacheDir := filepath.Join(usr.HomeDir, ".credentials")
os.MkdirAll(tokenCacheDir, 0700)
return filepath.Join(tokenCacheDir,
url.QueryEscape("spreadsheets-go-quickstart.json")), err
err = os.MkdirAll(tokenCacheDir, 0700)
if err != nil {
return "", err
}
return filepath.Join(tokenCacheDir, url.QueryEscape("spreadsheets-go-quickstart.json")), err
}
// tokenFromFile retrieves a Token from a given file path.
@@ -127,7 +131,7 @@ func tokenFromFile(file string) (*oauth2.Token, error) {
}
t := &oauth2.Token{}
err = json.NewDecoder(f).Decode(t)
defer f.Close()
defer func() { _ = f.Close() }()
return t, err
}
@@ -139,7 +143,10 @@ func saveToken(file string, token *oauth2.Token) {
if err != nil {
log.Fatalf("Unable to cache oauth token: %v", err)
}
defer f.Close()
defer func() { _ = f.Close() }()
json.NewEncoder(f).Encode(token)
err = json.NewEncoder(f).Encode(token)
if err != nil {
log.Fatalf("Unable to encode oauth token: %v", err)
}
}

View File

@@ -131,7 +131,10 @@ func (widget *Widget) validateHTTPResponse(responseCode int, body []byte) *hibpE
switch responseCode {
case 401, 402:
json.Unmarshal(body, hibpErr)
err := json.Unmarshal(body, hibpErr)
if err != nil {
return nil
}
default:
hibpErr = nil
}

View File

@@ -69,7 +69,7 @@ func (widget *Widget) ipinfo() {
widget.result = err.Error()
return
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
var info ipinfo
err = json.NewDecoder(response.Body).Decode(&info)
if err != nil {
@@ -96,7 +96,7 @@ func (widget *Widget) setResult(info *ipinfo) {
resultBuffer := new(bytes.Buffer)
resultTemplate.Execute(resultBuffer, map[string]string{
err := resultTemplate.Execute(resultBuffer, map[string]string{
"nameColor": widget.settings.colors.name,
"valueColor": widget.settings.colors.value,
"Ip": info.Query,
@@ -111,6 +111,10 @@ func (widget *Widget) setResult(info *ipinfo) {
"Timezone": info.Timezone,
})
if err != nil {
widget.result = err.Error()
}
widget.result = resultBuffer.String()
}

View File

@@ -61,7 +61,7 @@ func (widget *Widget) ipinfo() {
widget.result = err.Error()
return
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
var info ipinfo
err = json.NewDecoder(response.Body).Decode(&info)
@@ -86,7 +86,7 @@ func (widget *Widget) setResult(info *ipinfo) {
resultBuffer := new(bytes.Buffer)
resultTemplate.Execute(resultBuffer, map[string]string{
err := resultTemplate.Execute(resultBuffer, map[string]string{
"subheadingColor": widget.settings.common.Colors.Subheading,
"valueColor": widget.settings.common.Colors.Text,
"Ip": info.Ip,
@@ -99,6 +99,10 @@ func (widget *Widget) setResult(info *ipinfo) {
"Organization": info.Organization,
})
if err != nil {
widget.result = err.Error()
}
widget.result = resultBuffer.String()
}

View File

@@ -70,7 +70,7 @@ func (widget *Widget) tailFile() []string {
if err != nil {
return []string{}
}
defer file.Close()
defer func() { _ = file.Close() }()
stat, err := file.Stat()
if err != nil {

View File

@@ -67,7 +67,7 @@ func (widget *Widget) nbascore() (string, string, bool) {
if err != nil {
return title, err.Error(), true
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
if response.StatusCode != 200 {
return title, err.Error(), true
} // Get data from data.nba.net and check if successful
@@ -77,7 +77,10 @@ func (widget *Widget) nbascore() (string, string, bool) {
return title, err.Error(), true
}
result := map[string]interface{}{}
json.Unmarshal(contents, &result)
err = json.Unmarshal(contents, &result)
if err != nil {
return title, err.Error(), true
}
allGame := fmt.Sprintf(" [%s]", widget.settings.common.Colors.Subheading) + (cur.Format(utils.FriendlyDateFormat) + "\n\n") + "[white]"

View File

@@ -31,7 +31,7 @@ func (c *Client) doRequest(req *http.Request, out interface{}) error {
if err != nil {
return err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err

View File

@@ -65,7 +65,7 @@ func opsGenieRequest(url string, apiKey string) (*OnCallResponse, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
response := &OnCallResponse{}
if err := json.NewDecoder(resp.Body).Decode(response); err != nil {

View File

@@ -87,7 +87,7 @@ func (client *Client) request(req request, result interface{}) error {
if err != nil {
return err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
responseBody, err := ioutil.ReadAll(resp.Body)

View File

@@ -18,7 +18,10 @@ func CurrentActiveItems(accessToken, assignedToName string, activeOnly bool) (*A
return items, err
}
utils.ParseJSON(&items, resp.Body)
err = utils.ParseJSON(&items, resp.Body)
if err != nil {
return items, err
}
return items, nil
}

View File

@@ -19,30 +19,47 @@ func (widget *Widget) initializeKeyboardControls() {
}
func (widget *Widget) selectPrevious() {
widget.client.Previous()
err := widget.client.Previous()
if err != nil {
return
}
time.Sleep(time.Millisecond * 500)
widget.Refresh()
}
func (widget *Widget) selectNext() {
widget.client.Next()
err := widget.client.Next()
if err != nil {
return
}
time.Sleep(time.Millisecond * 500)
widget.Refresh()
}
func (widget *Widget) playPause() {
var err error
if widget.playerState.CurrentlyPlaying.Playing {
widget.client.Pause()
err = widget.client.Pause()
} else {
widget.client.Play()
err = widget.client.Play()
}
if err != nil {
return
}
time.Sleep(time.Millisecond * 500)
widget.Refresh()
}
func (widget *Widget) toggleShuffle() {
widget.playerState.ShuffleState = !widget.playerState.ShuffleState
widget.client.Shuffle(widget.playerState.ShuffleState)
err := widget.client.Shuffle(widget.playerState.ShuffleState)
if err != nil {
return
}
time.Sleep(time.Millisecond * 500)
widget.Refresh()
}

View File

@@ -53,7 +53,10 @@ func authHandler(w http.ResponseWriter, r *http.Request) {
}
// use the token to get an authenticated client
client := auth.NewClient(tok)
fmt.Fprintf(w, "Login Completed!")
_, err = fmt.Fprintf(w, "Login Completed!")
if err != nil {
return
}
tempClientChan <- &client
}
@@ -81,7 +84,12 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *
}
http.HandleFunc("/callback", authHandler)
go http.ListenAndServe(":"+callbackPort, nil)
go func() {
err := http.ListenAndServe(":"+callbackPort, nil)
if err != nil {
return
}
}()
go func() {
// wait for auth to complete

View File

@@ -95,7 +95,7 @@ func (widget *Widget) formattedText() string {
if err != nil {
return err.Error()
}
defer file.Close()
defer func() { _ = file.Close() }()
lexer := lexers.Match(filePath)
if lexer == nil {
@@ -115,7 +115,10 @@ func (widget *Widget) formattedText() string {
iterator, _ := lexer.Tokenise(nil, string(contents))
var buf bytes.Buffer
formatter.Format(&buf, style, iterator)
err = formatter.Format(&buf, style, iterator)
if err != nil {
return err.Error()
}
return tview.TranslateANSI(buf.String())
}
@@ -152,7 +155,11 @@ func (widget *Widget) watchForFileChanges() {
for _, source := range widget.Sources {
fullPath, err := utils.ExpandHomeDir(source)
if err == nil {
watch.Add(fullPath)
e := watch.Add(fullPath)
if e != nil {
fmt.Println(e)
os.Exit(1)
}
}
}

View File

@@ -91,11 +91,11 @@ func (widget *Widget) SetList(list checklist.Checklist) {
func (widget *Widget) init() {
_, err := cfg.CreateFile(widget.filePath)
if err != nil {
panic(err)
return
}
}
// isItemSelected returns weather any item of the todo is selected or not
// isItemSelected returns whether any item of the todo is selected or not
func (widget *Widget) isItemSelected() bool {
return widget.Selected >= 0 && widget.Selected < len(widget.list.Items)
}
@@ -107,7 +107,10 @@ func (widget *Widget) load() {
fileData, _ := utils.ReadFileBytes(filePath)
yaml.Unmarshal(fileData, &widget.list)
err := yaml.Unmarshal(fileData, &widget.list)
if err != nil {
return
}
widget.ScrollableWidget.SetItemCount(len(widget.list.Items))
widget.setItemChecks()

View File

@@ -158,7 +158,10 @@ func (widget *Widget) deleteSelectedTorrent() {
DeleteLocalData: false,
}
widget.client.TorrentRemove(removePayload)
err := widget.client.TorrentRemove(removePayload)
if err != nil {
return
}
widget.display()
}
@@ -176,10 +179,15 @@ func (widget *Widget) pauseUnpauseTorrent() {
ids := []int64{*currTorrent.ID}
var err error
if *currTorrent.Status == transmissionrpc.TorrentStatusStopped {
widget.client.TorrentStartIDs(ids)
err = widget.client.TorrentStartIDs(ids)
} else {
widget.client.TorrentStopIDs(ids)
err = widget.client.TorrentStopIDs(ids)
}
if err != nil {
return
}
widget.display()

View File

@@ -10,7 +10,7 @@ func Request(httpClient *http.Client, apiURL string) ([]byte, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
data, err := ParseBody(resp)
if err != nil {

View File

@@ -73,19 +73,22 @@ func (client *Client) GetStatsForUser(username string) TwitterStats {
}
url := fmt.Sprintf("%s?screen_name=%s", userTimelineURL, username)
res, err := client.httpClient.Get(url)
resp, err := client.httpClient.Get(url)
if err != nil {
return stats
}
defer res.Body.Close()
defer func() { _ = resp.Body.Close() }()
body, err := ioutil.ReadAll(res.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return stats
}
// If there is an error while parsing, just discard the error and return the empty stats
json.Unmarshal(body, &stats)
err = json.Unmarshal(body, &stats)
if err != nil {
return stats
}
return stats
}

View File

@@ -38,7 +38,7 @@ func victorOpsRequest(url string, apiID string, apiKey string) ([]OnCallTeam, er
if resp.StatusCode != 200 {
return nil, fmt.Errorf("%s", resp.Status)
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
response := &OnCallResponse{}
if err := json.NewDecoder(resp.Body).Decode(response); err != nil {

View File

@@ -55,7 +55,7 @@ func (widget *Widget) prettyWeather() {
return
}
defer response.Body.Close()
defer func() { _ = response.Body.Close() }()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {

View File

@@ -36,8 +36,7 @@ func (widget *Widget) api(meth string, path string, params string) (*Resource, e
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func() { _ = resp.Body.Close() }()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {

View File

@@ -55,12 +55,16 @@ func (widget *Widget) listTickets(pag ...string) (*TicketArray, error) {
} else {
path = pag[0]
}
resource, err := widget.api("GET", path, "")
if err != nil {
return nil, err
}
json.Unmarshal([]byte(resource.Raw), TicketStruct)
err = json.Unmarshal([]byte(resource.Raw), TicketStruct)
if err != nil {
return nil, err
}
return TicketStruct, err