go-common/app/interface/main/creative/dao/bfs/cover.go

60 lines
1.3 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package bfs
import (
"bytes"
"context"
"io/ioutil"
"net/http"
"fmt"
"go-common/library/log"
)
// UpVideoCovers upload video covers.
func (d *Dao) UpVideoCovers(c context.Context, covers []string) (cvs []string, err error) {
var (
nfsURL string
)
for _, cv := range covers {
// get nfs file
bs, err := d.bvcCover(cv)
if err != nil || len(bs) == 0 {
log.Error("d.UpVideoCovers(%s) error(%v) or bs==0", nfsURL, err)
continue
}
// up to bfs
bfsPath, err := d.UploadArc(c, http.DetectContentType(bs), bytes.NewReader(bs))
if err != nil {
log.Error("d.UpVideoCovers raw url(%s) error(%v)", cv, err)
continue
}
// parse bfs return path
if err != nil {
log.Error("url.Parse(%v) error(%v)", bfsPath, err)
continue
}
cvs = append(cvs, bfsPath)
log.Info("UpVideoCovers cover(%s) bfs (%s)", cv, bfsPath)
}
return
}
// bvcCover http get bvc cover bytes.
func (d *Dao) bvcCover(url string) (bs []byte, err error) {
resp, err := d.client.Get(url)
if err != nil {
log.Error("s.client.Get(%v) error(%v)", url, err)
return
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
err = fmt.Errorf("get NFS file faild, url(%s) http status: %d", url, resp.StatusCode)
return
}
// read bytes
if bs, err = ioutil.ReadAll(resp.Body); err != nil {
log.Error("ioutil.ReadAll error(%v)", err)
}
return
}