Files
podstalk/handler/settings.go
T
jbrechtel 68c1f38b8d
Build and Deploy / build-and-deploy (push) Failing after 36s
Initial commit
2026-07-07 21:58:39 -04:00

51 lines
1.1 KiB
Go

package handler
import (
"net/http"
"os"
"path/filepath"
"podstalk/store"
)
type SettingsHandler struct {
Store *store.Store
UploadDir string
}
func (h *SettingsHandler) ServeSettings(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
return
}
if err := r.ParseMultipartForm(10 << 20); err != nil {
http.Redirect(w, r, "/?error=file+too+large", http.StatusSeeOther)
return
}
title := r.FormValue("podcast_title")
if title != "" {
h.Store.SetSetting("podcast_title", title)
}
// Handle podcast image upload
file, header, err := r.FormFile("podcast_image")
if err == nil {
defer file.Close()
catDir := filepath.Join(h.UploadDir, "images")
os.MkdirAll(catDir, 0755)
ext := filepath.Ext(header.Filename)
dst, err := os.Create(filepath.Join(catDir, "podcast"+ext))
if err == nil {
defer dst.Close()
dst.ReadFrom(file)
h.Store.SetSetting("podcast_image", "images/podcast"+ext)
}
}
http.Redirect(w, r, "/", http.StatusSeeOther)
}