You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
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 |
|
}
|
|
|