package app import ( "encoding/json" "fmt" "io" "log" "net/http" "os" "path/filepath" "strings" "be/app/helper" "be/app/structs" ) func SaveMacro(w http.ResponseWriter, r *http.Request) { var newMacro structs.NewMacro body, err := io.ReadAll(r.Body) if err != nil { panic(err) } log.Println(string(body)) err = json.Unmarshal(body, &newMacro) if err != nil { panic(err) } stepsJSON, err := json.Marshal(newMacro.Steps) if err != nil { panic(err) } err = os.WriteFile("../macros/"+helper.FormatMacroFileName(newMacro.Name)+".json", stepsJSON, 0644) if err != nil { panic(err) } } func ListMacros(w http.ResponseWriter, r *http.Request) { log.Println("listing macros") dir := "../macros" files, err := os.ReadDir(dir) if err != nil { log.Fatal(err) } var fileNames []string for _, file := range files { filename := filepath.Base(file.Name()) filename = strings.TrimSuffix(filename, filepath.Ext(filename)) filename = strings.Replace(filename, "_", " ", -1) fileNames = append(fileNames, filename) } json.NewEncoder(w).Encode(fileNames) } func DeleteMacro(w http.ResponseWriter, r *http.Request) {} func PlayMacro(w http.ResponseWriter, r *http.Request) { var req structs.MacroRequest err := json.NewDecoder(r.Body).Decode(&req) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } macro := req.Macro var filename = helper.FormatMacroFileName(macro) var filepath = fmt.Sprintf("../macros/%s.json", filename) macroFile, err := helper.ReadMacroFile(filepath) if err != nil { fmt.Println(err) http.Error(w, err.Error(), http.StatusInternalServerError) return } helper.RunMacroSteps(macroFile) }