Skip to content

Commit fc59231

Browse files
committed
Moved defer resp.Body.Close() calls as early as possible
1 parent c8fba41 commit fc59231

File tree

1 file changed

+43
-16
lines changed

1 file changed

+43
-16
lines changed

pkg/api/api.go

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,7 @@ func (s *ScalewayAPI) GetServers(all bool, limit int) (*[]ScalewayServer, error)
763763
return nil, err
764764
}
765765
defer resp.Body.Close()
766+
766767
var servers ScalewayServers
767768
decoder := json.NewDecoder(resp.Body)
768769
err = decoder.Decode(&servers)
@@ -786,6 +787,7 @@ func (s *ScalewayAPI) GetServer(serverID string) (*ScalewayServer, error) {
786787
return nil, err
787788
}
788789
defer resp.Body.Close()
790+
789791
decoder := json.NewDecoder(resp.Body)
790792

791793
if resp.StatusCode != 200 {
@@ -816,14 +818,14 @@ func (s *ScalewayAPI) PostServerAction(serverID, action string) error {
816818
if err != nil {
817819
return err
818820
}
821+
defer resp.Body.Close()
819822

820823
// Succeed POST code
821824
if resp.StatusCode == 202 {
822825
return nil
823826
}
824827

825828
var error ScalewayAPIError
826-
defer resp.Body.Close()
827829
decoder := json.NewDecoder(resp.Body)
828830
err = decoder.Decode(&error)
829831
if err != nil {
@@ -841,6 +843,7 @@ func (s *ScalewayAPI) DeleteServer(serverID string) error {
841843
if err != nil {
842844
return err
843845
}
846+
defer resp.Body.Close()
844847

845848
// Succeed POST code
846849
if resp.StatusCode == 204 {
@@ -849,7 +852,6 @@ func (s *ScalewayAPI) DeleteServer(serverID string) error {
849852
}
850853

851854
var error ScalewayAPIError
852-
defer resp.Body.Close()
853855
decoder := json.NewDecoder(resp.Body)
854856
err = decoder.Decode(&error)
855857
if err != nil {
@@ -869,8 +871,8 @@ func (s *ScalewayAPI) PostServer(definition ScalewayServerDefinition) (string, e
869871
if err != nil {
870872
return "", err
871873
}
872-
873874
defer resp.Body.Close()
875+
874876
decoder := json.NewDecoder(resp.Body)
875877

876878
// Succeed POST code
@@ -904,8 +906,8 @@ func (s *ScalewayAPI) PatchUserSSHKey(UserID string, definition ScalewayUserPatc
904906
if err != nil {
905907
return err
906908
}
907-
908909
defer resp.Body.Close()
910+
909911
decoder := json.NewDecoder(resp.Body)
910912

911913
// Succeed PATCH code
@@ -930,8 +932,8 @@ func (s *ScalewayAPI) PatchServer(serverID string, definition ScalewayServerPatc
930932
if err != nil {
931933
return err
932934
}
933-
934935
defer resp.Body.Close()
936+
935937
decoder := json.NewDecoder(resp.Body)
936938

937939
// Succeed PATCH code
@@ -958,12 +960,11 @@ func (s *ScalewayAPI) PostSnapshot(volumeID string, name string) (string, error)
958960
Organization: s.Organization,
959961
}
960962
resp, err := s.PostResponse("snapshots", definition)
961-
962963
if err != nil {
963964
return "", err
964965
}
965-
966966
defer resp.Body.Close()
967+
967968
decoder := json.NewDecoder(resp.Body)
968969

969970
// Succeed POST code
@@ -997,13 +998,13 @@ func (s *ScalewayAPI) PostImage(volumeID string, name string) (string, error) {
997998
Organization: s.Organization,
998999
Arch: "arm",
9991000
}
1000-
resp, err := s.PostResponse("images", definition)
10011001

1002+
resp, err := s.PostResponse("images", definition)
10021003
if err != nil {
10031004
return "", err
10041005
}
1005-
10061006
defer resp.Body.Close()
1007+
10071008
decoder := json.NewDecoder(resp.Body)
10081009

10091010
// Succeed POST code
@@ -1035,12 +1036,13 @@ func (s *ScalewayAPI) PostVolume(definition ScalewayVolumeDefinition) (string, e
10351036
if definition.Type == "" {
10361037
definition.Type = "l_ssd"
10371038
}
1039+
10381040
resp, err := s.PostResponse("volumes", definition)
10391041
if err != nil {
10401042
return "", err
10411043
}
1042-
10431044
defer resp.Body.Close()
1045+
10441046
decoder := json.NewDecoder(resp.Body)
10451047

10461048
// Succeed POST code
@@ -1072,8 +1074,8 @@ func (s *ScalewayAPI) PutVolume(volumeID string, definition ScalewayVolumePutDef
10721074
if err != nil {
10731075
return err
10741076
}
1075-
10761077
defer resp.Body.Close()
1078+
10771079
decoder := json.NewDecoder(resp.Body)
10781080

10791081
// Succeed PUT code
@@ -1153,6 +1155,7 @@ func (s *ScalewayAPI) GetImages() (*[]ScalewayImage, error) {
11531155
return nil, err
11541156
}
11551157
defer resp.Body.Close()
1158+
11561159
var images ScalewayImages
11571160
decoder := json.NewDecoder(resp.Body)
11581161
err = decoder.Decode(&images)
@@ -1172,6 +1175,7 @@ func (s *ScalewayAPI) GetImage(imageID string) (*ScalewayImage, error) {
11721175
return nil, err
11731176
}
11741177
defer resp.Body.Close()
1178+
11751179
var oneImage ScalewayOneImage
11761180
decoder := json.NewDecoder(resp.Body)
11771181
err = decoder.Decode(&oneImage)
@@ -1189,6 +1193,7 @@ func (s *ScalewayAPI) DeleteImage(imageID string) error {
11891193
s.Cache.RemoveImage(imageID)
11901194
return err
11911195
}
1196+
defer resp.Body.Close()
11921197

11931198
// Succeed POST code
11941199
if resp.StatusCode == 204 {
@@ -1197,7 +1202,6 @@ func (s *ScalewayAPI) DeleteImage(imageID string) error {
11971202
}
11981203

11991204
var error ScalewayAPIError
1200-
defer resp.Body.Close()
12011205
decoder := json.NewDecoder(resp.Body)
12021206
err = decoder.Decode(&error)
12031207
if err != nil {
@@ -1213,11 +1217,13 @@ func (s *ScalewayAPI) DeleteImage(imageID string) error {
12131217
func (s *ScalewayAPI) GetSnapshots() (*[]ScalewaySnapshot, error) {
12141218
query := url.Values{}
12151219
s.Cache.ClearSnapshots()
1220+
12161221
resp, err := s.GetResponse("snapshots?" + query.Encode())
12171222
if err != nil {
12181223
return nil, err
12191224
}
12201225
defer resp.Body.Close()
1226+
12211227
var snapshots ScalewaySnapshots
12221228
decoder := json.NewDecoder(resp.Body)
12231229
err = decoder.Decode(&snapshots)
@@ -1237,6 +1243,7 @@ func (s *ScalewayAPI) GetSnapshot(snapshotID string) (*ScalewaySnapshot, error)
12371243
return nil, err
12381244
}
12391245
defer resp.Body.Close()
1246+
12401247
var oneSnapshot ScalewayOneSnapshot
12411248
decoder := json.NewDecoder(resp.Body)
12421249
err = decoder.Decode(&oneSnapshot)
@@ -1251,11 +1258,13 @@ func (s *ScalewayAPI) GetSnapshot(snapshotID string) (*ScalewaySnapshot, error)
12511258
func (s *ScalewayAPI) GetVolumes() (*[]ScalewayVolume, error) {
12521259
query := url.Values{}
12531260
s.Cache.ClearVolumes()
1261+
12541262
resp, err := s.GetResponse("volumes?" + query.Encode())
12551263
if err != nil {
12561264
return nil, err
12571265
}
12581266
defer resp.Body.Close()
1267+
12591268
var volumes ScalewayVolumes
12601269
decoder := json.NewDecoder(resp.Body)
12611270
err = decoder.Decode(&volumes)
@@ -1275,6 +1284,7 @@ func (s *ScalewayAPI) GetVolume(volumeID string) (*ScalewayVolume, error) {
12751284
return nil, err
12761285
}
12771286
defer resp.Body.Close()
1287+
12781288
var oneVolume ScalewayOneVolume
12791289
decoder := json.NewDecoder(resp.Body)
12801290
err = decoder.Decode(&oneVolume)
@@ -1294,6 +1304,7 @@ func (s *ScalewayAPI) GetBootscripts() (*[]ScalewayBootscript, error) {
12941304
return nil, err
12951305
}
12961306
defer resp.Body.Close()
1307+
12971308
var bootscripts ScalewayBootscripts
12981309
decoder := json.NewDecoder(resp.Body)
12991310
err = decoder.Decode(&bootscripts)
@@ -1313,6 +1324,7 @@ func (s *ScalewayAPI) GetBootscript(bootscriptID string) (*ScalewayBootscript, e
13131324
return nil, err
13141325
}
13151326
defer resp.Body.Close()
1327+
13161328
var oneBootscript ScalewayOneBootscript
13171329
decoder := json.NewDecoder(resp.Body)
13181330
err = decoder.Decode(&oneBootscript)
@@ -1334,6 +1346,7 @@ func (s *ScalewayAPI) GetUserdatas(serverID string) (*ScalewayUserdatas, error)
13341346
return nil, err
13351347
}
13361348
defer resp.Body.Close()
1349+
13371350
var userdatas ScalewayUserdatas
13381351
decoder := json.NewDecoder(resp.Body)
13391352
err = decoder.Decode(&userdatas)
@@ -1353,15 +1366,17 @@ func (s *ScalewayUserdata) String() string {
13531366
func (s *ScalewayAPI) GetUserdata(serverID string, key string) (*ScalewayUserdata, error) {
13541367
var data ScalewayUserdata
13551368
var err error
1369+
13561370
resp, err := s.GetResponse("servers/" + serverID + "/user_data/" + key)
13571371
if err != nil {
13581372
return nil, err
13591373
}
1374+
defer resp.Body.Close()
1375+
13601376
if resp.StatusCode != 200 {
13611377
return nil, fmt.Errorf("no such user_data %q (%d)", key, resp.StatusCode)
13621378
}
13631379

1364-
defer resp.Body.Close()
13651380
data, err = ioutil.ReadAll(resp.Body)
13661381
return &data, err
13671382
}
@@ -1407,6 +1422,7 @@ func (s *ScalewayAPI) DeleteUserdata(serverID string, key string) error {
14071422
if err != nil {
14081423
return err
14091424
}
1425+
defer resp.Body.Close()
14101426

14111427
// Succeed POST code
14121428
if resp.StatusCode == 204 {
@@ -1423,6 +1439,7 @@ func (s *ScalewayAPI) GetTasks() (*[]ScalewayTask, error) {
14231439
return nil, err
14241440
}
14251441
defer resp.Body.Close()
1442+
14261443
var tasks ScalewayTasks
14271444
decoder := json.NewDecoder(resp.Body)
14281445
err = decoder.Decode(&tasks)
@@ -1438,28 +1455,34 @@ func (s *ScalewayAPI) CheckCredentials() error {
14381455
defer s.DisableAccountAPI()
14391456
query := url.Values{}
14401457
query.Set("token_id", s.Token)
1458+
14411459
resp, err := s.GetResponse("tokens?" + query.Encode())
14421460
if err != nil {
14431461
return err
14441462
}
1463+
defer resp.Body.Close()
1464+
14451465
if resp.StatusCode != 200 {
14461466
return fmt.Errorf("[%d] invalid credentials", resp.StatusCode)
14471467
}
1468+
14481469
return nil
14491470
}
14501471

14511472
// GetUserID returns the userID
14521473
func (s *ScalewayAPI) GetUserID() (string, error) {
14531474
s.EnableAccountAPI()
14541475
defer s.DisableAccountAPI()
1476+
14551477
resp, err := s.GetResponse(fmt.Sprintf("tokens/%s", s.Token))
14561478
if err != nil {
14571479
return "", err
14581480
}
1481+
defer resp.Body.Close()
1482+
14591483
if resp.StatusCode != 200 {
14601484
return "", fmt.Errorf("[%d] invalid credentials", resp.StatusCode)
14611485
}
1462-
defer resp.Body.Close()
14631486
var token ScalewayTokensDefinition
14641487

14651488
decoder := json.NewDecoder(resp.Body)
@@ -1474,17 +1497,19 @@ func (s *ScalewayAPI) GetUserID() (string, error) {
14741497
func (s *ScalewayAPI) GetOrganization() (*ScalewayOrganizationsDefinition, error) {
14751498
s.EnableAccountAPI()
14761499
defer s.DisableAccountAPI()
1500+
14771501
resp, err := s.GetResponse("organizations")
14781502
if err != nil {
14791503
return nil, err
14801504
}
1505+
defer resp.Body.Close()
1506+
14811507
if resp.StatusCode != 200 {
14821508
return nil, fmt.Errorf("[%d] unable to GET", resp.StatusCode)
14831509
}
14841510

14851511
var data ScalewayOrganizationsDefinition
14861512

1487-
defer resp.Body.Close()
14881513
decoder := json.NewDecoder(resp.Body)
14891514
err = decoder.Decode(&data)
14901515
if err != nil {
@@ -1501,14 +1526,16 @@ func (s *ScalewayAPI) GetUser() (*ScalewayUserDefinition, error) {
15011526
}
15021527
s.EnableAccountAPI()
15031528
defer s.DisableAccountAPI()
1529+
15041530
resp, err := s.GetResponse(fmt.Sprintf("users/%s", userID))
15051531
if err != nil {
15061532
return nil, err
15071533
}
1534+
defer resp.Body.Close()
1535+
15081536
if resp.StatusCode != 200 {
15091537
return nil, fmt.Errorf("[%d] no such user", resp.StatusCode)
15101538
}
1511-
defer resp.Body.Close()
15121539
var user ScalewayUsersDefinition
15131540

15141541
decoder := json.NewDecoder(resp.Body)

0 commit comments

Comments
 (0)