package caddyhugo import ( "fmt" "io" "net/http" "git.stephensearles.com/stephen/caddy-hugo2/media" ) func (ch *CaddyHugo) uploadMedia(w http.ResponseWriter, r *http.Request) (int, error) { if ch.Media == nil { http.NotFound(w, r) return 404, nil } mr, err := r.MultipartReader() if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return 400, nil } for { part, err := mr.NextPart() if err == io.EOF { break } if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return 400, nil } name := part.FileName() if name != "" { err = ch.Media.ReceiveNewMedia(name, part) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return 500, nil } } } return 200, nil } func (ch *CaddyHugo) serveMediaPage(w http.ResponseWriter, r *http.Request) (int, error) { if ch.Media == nil { http.NotFound(w, r) return 404, nil } io.WriteString(w, `
`) io.WriteString(w, UploadPage("media")) io.WriteString(w, `
`) if ch.Media != nil { mm, err := ch.Media.Walk() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return 500, nil } for _, m := range media.Set(mm).ByDate() { size, err := ch.Media.ThumbMax(*m, 100) if err != nil { fmt.Fprintf(w, `
error rendering %q: %v
`, m.Name, err) continue } switch m.Type { case media.TypeImage: fmt.Fprintf(w, `

📋
`, size.Dx(), size.Dy(), m.ThumbPath(size), m.Name, m.ThumbPath(size)) case media.TypeVideo: // TODO: onmouseover sucks for mobile fmt.Fprintf(w, `

📋
`, size.Dx(), size.Dy(), m.ThumbPath(size), m.Name, m.ThumbPath(size)) } } } io.WriteString(w, ``) return 200, nil } func (ch *CaddyHugo) serveMedia(w http.ResponseWriter, r *http.Request) (int, error) { if ch.Media == nil { http.NotFound(w, r) return 404, nil } ch.Media.ServeHTTP(w, r) return 200, nil }