package handlers import ( "html/template" "net/http" "os" "path/filepath" "sort" ory "github.com/ory/client-go" "decor-by-hannahs/internal/db" ) type Photo struct { URL string Caption string } func GalleryHandler(q *db.Queries, tmpl *template.Template, oryClient *ory.APIClient) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var photos []Photo galleryDir := "assets/gallery-photos" entries, err := os.ReadDir(galleryDir) if err == nil { for _, entry := range entries { if !entry.IsDir() { ext := filepath.Ext(entry.Name()) if ext == ".jpg" || ext == ".jpeg" || ext == ".png" || ext == ".gif" { photos = append(photos, Photo{ URL: "/assets/gallery-photos/" + entry.Name(), Caption: "", }) } } } } sort.Slice(photos, func(i, j int) bool { return photos[i].URL < photos[j].URL }) type data struct { Photos []Photo ActivePage string Authenticated bool OryLoginURL string } if err := tmpl.ExecuteTemplate(w, "gallery.tmpl", data{ Photos: photos, ActivePage: "gallery", Authenticated: isAuthenticated(r, oryClient), OryLoginURL: "/login", }); err != nil { http.Error(w, "Failed to render page", http.StatusInternalServerError) } } }