package routes import ( "encoding/json" "io" "net/http" "strconv" "tomatentum.net/svg-templater/pkg/svg" "tomatentum.net/svg-templater/pkg/svg/actions" ) func AddPage(w http.ResponseWriter, r *http.Request) { if err := r.ParseMultipartForm(128000000); err != nil { http.Error(w, "Couldn't parse form data.", http.StatusBadRequest) return } fileheaders := r.MultipartForm.File["files"] id := r.PathValue("id") pages := make([]svg.TemplatePage, len(fileheaders)) for i, fileh := range fileheaders { file, err := fileh.Open() if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } buf, err := io.ReadAll(file) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } page, err := actions.AddPage(id, buf) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } pages[i] = page } err := json.NewEncoder(w).Encode(pages) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } func DeletePage(w http.ResponseWriter, r *http.Request) { id, pagestring := r.PathValue("id"), r.PathValue("page") page, err := strconv.Atoi(pagestring) if err != nil { http.Error(w, "Page must be a number", http.StatusBadRequest) return } ok, err := actions.DeletePage(id, page) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if !ok { http.Error(w, "Could not delete page", http.StatusInternalServerError) return } }