47 lines
939 B
Go
47 lines
939 B
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"net/http"
|
|
"os/exec"
|
|
"strconv"
|
|
)
|
|
|
|
func (api *API) HandelGetFileAvatar(w http.ResponseWriter, r *http.Request) {
|
|
var err error
|
|
q := r.URL.Query()
|
|
ids := q["id"]
|
|
if len(ids) == 0 {
|
|
err = errors.New(`parameter "id" can't be empty`)
|
|
api.HandleError(w, r, err)
|
|
return
|
|
}
|
|
id, err := strconv.Atoi(ids[0])
|
|
if err != nil {
|
|
api.HandleError(w, r, err)
|
|
return
|
|
}
|
|
file, err := api.Db.GetFile(int64(id))
|
|
if err != nil {
|
|
api.HandleError(w, r, err)
|
|
return
|
|
}
|
|
path, err := file.Path()
|
|
if err != nil {
|
|
api.HandleError(w, r, err)
|
|
return
|
|
}
|
|
log.Println("[api] Get avatar of file", path)
|
|
cmd := exec.Command("ffmpeg", "-i", path, "-c:v", "libwebp_anim", "-update", "1", "-f", "image2pipe", "-")
|
|
cmd.Stdout = w
|
|
w.Header().Set("Content-Type", "image/webp")
|
|
|
|
err = cmd.Run()
|
|
if err != nil {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
api.HandleError(w, r, err)
|
|
return
|
|
}
|
|
}
|