Implements GET for images
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user