Skip to content

Commit 571852e

Browse files
committed
Slightly refactored apiByVidPid
1 parent 76251df commit 571852e

File tree

1 file changed

+30
-29
lines changed

1 file changed

+30
-29
lines changed

Diff for: commands/board/list.go

+30-29
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"context"
2020
"encoding/json"
2121
"fmt"
22-
"io/ioutil"
22+
"io"
2323
"net/http"
2424
"regexp"
2525
"sort"
@@ -60,7 +60,6 @@ func apiByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {
6060
}
6161

6262
url := fmt.Sprintf("%s/%s/%s", vidPidURL, vid, pid)
63-
retVal := []*rpc.BoardListItem{}
6463
req, _ := http.NewRequest("GET", url, nil)
6564
req.Header.Set("Content-Type", "application/json")
6665

@@ -72,39 +71,41 @@ func apiByVidPid(vid, pid string) ([]*rpc.BoardListItem, error) {
7271
return nil, errors.Wrap(err, tr("failed to initialize http client"))
7372
}
7473

75-
if res, err := httpClient.Do(req); err == nil {
76-
if res.StatusCode >= 400 {
77-
if res.StatusCode == 404 {
78-
return nil, ErrNotFound
79-
}
80-
return nil, errors.Errorf(tr("the server responded with status %s"), res.Status)
81-
}
82-
83-
body, _ := ioutil.ReadAll(res.Body)
84-
res.Body.Close()
85-
86-
var dat map[string]interface{}
87-
err = json.Unmarshal(body, &dat)
88-
if err != nil {
89-
return nil, errors.Wrap(err, tr("error processing response from server"))
74+
res, err := httpClient.Do(req)
75+
if err != nil {
76+
return nil, errors.Wrap(err, tr("error querying Arduino Cloud Api"))
77+
}
78+
if res.StatusCode >= 400 {
79+
if res.StatusCode == 404 {
80+
return nil, ErrNotFound
9081
}
82+
return nil, errors.Errorf(tr("the server responded with status %s"), res.Status)
83+
}
9184

92-
name, nameFound := dat["name"].(string)
93-
fqbn, fbqnFound := dat["fqbn"].(string)
85+
resp, err := io.ReadAll(res.Body)
86+
if err != nil {
87+
return nil, err
88+
}
89+
if err := res.Body.Close(); err != nil {
90+
return nil, err
91+
}
9492

95-
if !nameFound || !fbqnFound {
96-
return nil, errors.New(tr("wrong format in server response"))
97-
}
93+
var dat map[string]interface{}
94+
if err := json.Unmarshal(resp, &dat); err != nil {
95+
return nil, errors.Wrap(err, tr("error processing response from server"))
96+
}
97+
name, nameFound := dat["name"].(string)
98+
fqbn, fbqnFound := dat["fqbn"].(string)
99+
if !nameFound || !fbqnFound {
100+
return nil, errors.New(tr("wrong format in server response"))
101+
}
98102

99-
retVal = append(retVal, &rpc.BoardListItem{
103+
return []*rpc.BoardListItem{
104+
{
100105
Name: name,
101106
Fqbn: fqbn,
102-
})
103-
} else {
104-
return nil, errors.Wrap(err, tr("error querying Arduino Cloud Api"))
105-
}
106-
107-
return retVal, nil
107+
},
108+
}, nil
108109
}
109110

110111
func identifyViaCloudAPI(port *discovery.Port) ([]*rpc.BoardListItem, error) {

0 commit comments

Comments
 (0)