package main import ( "encoding/json" "net/http" "os" "path/filepath" "strings" ) const staticDir = "static" // move FileData and AsciiEntry here if you want, or leave in main.go func file_handler(w http.ResponseWriter, r *http.Request) { data := FileData{ ImageNames: []string{}, SpicyImageNames: []string{}, AsciiFiles: []AsciiEntry{}, } dirs, err := os.ReadDir(staticDir) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } for _, dir := range dirs { dirName := dir.Name() if strings.EqualFold(dirName, "images") { files, _ := os.ReadDir(filepath.Join(staticDir, dirName)) for _, file := range files { fileName := file.Name() data.ImageNames = append(data.ImageNames, filepath.Join(staticDir, dirName, fileName)) } } else if strings.EqualFold(dirName, "spicy") { files, _ := os.ReadDir(filepath.Join(staticDir, dirName)) for _, file := range files { fileName := file.Name() data.SpicyImageNames = append(data.SpicyImageNames, filepath.Join(staticDir, dirName, fileName)) } } else if strings.EqualFold(dirName, "ascii_art") { files, _ := os.ReadDir(filepath.Join(staticDir, dirName)) for _, file := range files { fileName := file.Name() data.AsciiFiles = append(data.AsciiFiles, AsciiEntry{Name: filepath.Join(staticDir, dirName, fileName), FontSize: 12}, ) } } } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(data) }