@@ -42,7 +42,6 @@ func ListInstalledMods(w http.ResponseWriter, r *http.Request) {
4242
4343 resp .Success = true
4444
45- fmt .Printf ("%+v" , resp )
4645 if err := json .NewEncoder (w ).Encode (resp ); err != nil {
4746 log .Printf ("Error in list mods: %s" , err )
4847 }
@@ -328,6 +327,43 @@ func RemoveSave(w http.ResponseWriter, r *http.Request) {
328327 }
329328}
330329
330+ // Launches Factorio server binary with --create flag to create save
331+ // Url must include save name for creation of savefile
332+ func CreateSaveHandler (w http.ResponseWriter , r * http.Request ) {
333+ var err error
334+ resp := JSONResponse {
335+ Success : false ,
336+ }
337+
338+ vars := mux .Vars (r )
339+ saveName := vars ["save" ]
340+
341+ if saveName == "" {
342+ log .Printf ("Error creating save, no name provided: %s" , err )
343+ resp .Data = "No save name provided."
344+ if err := json .NewEncoder (w ).Encode (resp ); err != nil {
345+ log .Printf ("Error encoding save handler response: %s" , err )
346+ }
347+ return
348+ }
349+
350+ cmdOut , err := createSave (saveName )
351+ if err != nil {
352+ log .Printf ("Error creating save: %s" , err )
353+ resp .Data = "Error creating savefile."
354+ if err := json .NewEncoder (w ).Encode (resp ); err != nil {
355+ log .Printf ("Error encoding save handler response: %s" , err )
356+ }
357+ return
358+ }
359+
360+ resp .Success = true
361+ resp .Data = fmt .Sprintf ("Save %s created successfully. Command output: \n %s" , saveName , cmdOut )
362+ if err := json .NewEncoder (w ).Encode (resp ); err != nil {
363+ log .Printf ("Error encoding save response: %s" , err )
364+ }
365+ }
366+
331367// Returns last lines of the factorio-current.log file
332368func LogTail (w http.ResponseWriter , r * http.Request ) {
333369 var err error
0 commit comments