@@ -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
110111func identifyViaCloudAPI (port * discovery.Port ) ([]* rpc.BoardListItem , error ) {
0 commit comments