Implements GET for images

This commit is contained in:
2016-01-25 15:59:45 +01:00
parent 21e6b41f95
commit 6ecaabf955
5 changed files with 59 additions and 23 deletions

View File

@@ -34,21 +34,22 @@ func NewAlbumCoverCache(basepath string, maxRequest uint, window time.Duration)
return res
}
func (c *AlbumCoverCache) fetch(ID AlbumID) (io.ReadCloser, error) {
func (c *AlbumCoverCache) fetch(ID AlbumID) (io.ReadCloser, string, error) {
URL, ok := c.URLs[ID]
if ok == false {
return nil, fmt.Errorf("Cover URL for Album %d is not registered", ID)
return nil, "", fmt.Errorf("Cover URL for Album %d is not registered", ID)
}
ext := AlbumCoverExt(URL)
resp, err := c.getter.Get(URL)
if err != nil {
return nil, err
return nil, ext, err
}
defer closeOrPanic(resp.Body, "GET "+URL)
err = c.dv.WriteStream(c.dataKey(ID), resp.Body, false)
if err != nil {
return nil, err
return nil, ext, err
}
md := coverMetadata{
@@ -58,11 +59,11 @@ func (c *AlbumCoverCache) fetch(ID AlbumID) (io.ReadCloser, error) {
if err == nil {
err = c.dv.Write(c.metadataKey(ID), mdbyte)
if err != nil {
return nil, err
return nil, ext, err
}
}
return c.dv.ReadStream(c.dataKey(ID), false)
rc, err := c.dv.ReadStream(c.dataKey(ID), false)
return rc, ext, err
}
type coverMetadata struct {
@@ -84,7 +85,7 @@ func (c *AlbumCoverCache) RegisterCover(ID AlbumID, URL string) {
}
// GetCover retrieves from the cache or either from www.bedetheque.com the Cover of an album
func (c *AlbumCoverCache) GetCover(ID AlbumID) (io.ReadCloser, error) {
func (c *AlbumCoverCache) GetCover(ID AlbumID) (io.ReadCloser, string, error) {
c.lock.RLock()
defer c.lock.RUnlock()
@@ -107,5 +108,8 @@ func (c *AlbumCoverCache) GetCover(ID AlbumID) (io.ReadCloser, error) {
return c.fetch(ID)
}
return c.dv.ReadStream(c.dataKey(ID), false)
URL := c.URLs[ID]
rc, err := c.dv.ReadStream(c.dataKey(ID), false)
return rc, AlbumCoverExt(URL), err
}