Skip to content

Commit 196b6de

Browse files
committed
Merge remote-tracking branch 'MajorMJR/master' into server-settings
2 parents a87a0dc + 7e3e38e commit 196b6de

File tree

2 files changed

+34
-43
lines changed

2 files changed

+34
-43
lines changed

src/handlers.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,20 @@ func RemoveSave(w http.ResponseWriter, r *http.Request) {
422422
w.Header().Set("Content-Type", "application/json;charset=UTF-8")
423423

424424
vars := mux.Vars(r)
425-
saveName := vars["save"]
425+
name := vars["save"]
426+
427+
save, err := findSave(name)
428+
if err != nil {
429+
resp.Data = fmt.Sprintf("Error removing save: %s", err)
430+
if err := json.NewEncoder(w).Encode(resp); err != nil {
431+
log.Printf("Error removing save %s", err)
432+
}
433+
}
426434

427-
err = rmSave(saveName)
435+
err = save.remove()
428436
if err == nil {
429437
// save was removed
430-
resp.Data = fmt.Sprintf("Removed save: %s", saveName)
438+
resp.Data = fmt.Sprintf("Removed save: %s", save.Name)
431439
resp.Success = true
432440
if err := json.NewEncoder(w).Encode(resp); err != nil {
433441
log.Printf("Error removing save %s", err)

src/saves.go

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ package main
33
import (
44
"errors"
55
"fmt"
6-
"io/ioutil"
7-
"log"
86
"os"
9-
"strings"
7+
"path/filepath"
108
"time"
119
)
1210

@@ -17,56 +15,41 @@ type Save struct {
1715
}
1816

1917
func (s Save) String() string {
20-
return fmt.Sprintf("%s", s.Name)
18+
return s.Name
2119
}
2220

2321
// Lists save files in factorio/saves
24-
func listSaves(saveDir string) ([]Save, error) {
25-
result := []Save{}
26-
27-
files, err := ioutil.ReadDir(saveDir)
28-
if err != nil {
29-
log.Printf("Error listing save directory: %s", err)
30-
return result, err
31-
}
32-
33-
for _, f := range files {
34-
save := Save{f.Name(), f.ModTime(), f.Size()}
35-
result = append(result, save)
36-
}
37-
38-
return result, nil
22+
func listSaves(saveDir string) (saves []Save, err error) {
23+
err = filepath.Walk(saveDir, func(path string, info os.FileInfo, err error) error {
24+
saves = append(saves, Save{
25+
info.Name(),
26+
info.ModTime(),
27+
info.Size(),
28+
})
29+
return nil
30+
})
31+
return
3932
}
4033

41-
func rmSave(saveName string) error {
42-
removed := false
43-
if saveName == "" {
44-
return errors.New("No save name provided")
45-
}
46-
34+
func findSave(name string) (*Save, error) {
4735
saves, err := listSaves(config.FactorioSavesDir)
4836
if err != nil {
49-
log.Printf("Error in remove save: %s", err)
50-
return err
37+
return nil, fmt.Errorf("error listing saves: %v", err)
5138
}
5239

5340
for _, save := range saves {
54-
log.Printf("Checking if %s in %s", save, saveName)
55-
if strings.Contains(save.Name, saveName) {
56-
err := os.Remove(config.FactorioSavesDir + "/" + save.Name)
57-
if err != nil {
58-
log.Printf("Error removing save %s: %s", saveName, err)
59-
return err
60-
}
61-
log.Printf("Deleted save: %s", save)
62-
removed = true
41+
if save.Name == name {
42+
return &save, nil
6343
}
6444
}
6545

66-
if !removed {
67-
log.Printf("Did not remove save: %s", saveName)
68-
return errors.New(fmt.Sprintf("Did not remove save: %s", saveName))
46+
return nil, errors.New("save not found")
47+
}
48+
49+
func (s *Save) remove() error {
50+
if s.Name == "" {
51+
return errors.New("save name cannot be blank")
6952
}
7053

71-
return nil
54+
return os.Remove(filepath.Join(config.FactorioSavesDir, s.Name))
7255
}

0 commit comments

Comments
 (0)