/* admin.go * * Here is where all the neccesary functions for managing episodes * live, e.g adding removing etc. */ package main import ( "fmt" "io" "io/ioutil" "net/http" "os" "strings" ) // Write custom CSS to disk or send it back to the client if GET func CustomCss(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { r.ParseMultipartForm(32 << 20) css := strings.Join(r.Form["css"], "") filename := "custom.css" err := ioutil.WriteFile("./assets/web/static/"+filename, []byte(css), 0644) if err != nil { w.Write([]byte("")) panic(err) } else { w.Write([]byte("")) } } else { css, err := ioutil.ReadFile("./assets/web/static/custom.css") if err != nil { panic(err) } else { w.Write(css) } } } func CreateEpisode(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { r.ParseMultipartForm(32 << 20) // Build filename for episode date := strings.Join(r.Form["date"], "") title := strings.Join(r.Form["title"], "") name := fmt.Sprintf("%v_%v", date, title) filename := name + ".mp3" shownotes := name + "_SHOWNOTES.md" fmt.Println(name) description := strings.Join(r.Form["description"], "") fmt.Println(description) // Finish building filenames err := ioutil.WriteFile("./podcasts/"+shownotes, []byte(description), 0644) if err != nil { w.Write([]byte("")) fmt.Println(err) } file, handler, err := r.FormFile("file") if err != nil { w.Write([]byte("")) fmt.Println(err) return } defer file.Close() fmt.Println(handler.Header) f, err := os.OpenFile("./podcasts/"+filename, os.O_WRONLY|os.O_CREATE, 0666) if err != nil { w.Write([]byte("")) fmt.Println(err) return } defer f.Close() io.Copy(f, file) w.Write([]byte("")) } } func RemoveEpisode(w http.ResponseWriter, r *http.Request) { // Episode should be the full MP3 filename // Remove MP3 first r.ParseMultipartForm(32 << 20) episode := strings.Join(r.Form["episode"], "") os.Remove(episode) sn := strings.Replace(episode, ".mp3", "_SHOWNOTES.md", 2) os.Remove(sn) }