Have nicer 404 errors for covers

This commit is contained in:
2016-01-25 16:13:29 +01:00
parent ab1e7c7e91
commit f4c30e2b0e
2 changed files with 14 additions and 1 deletions

View File

@@ -20,6 +20,12 @@ type AlbumCoverCache struct {
TTL time.Duration
}
type ErrorNotRegistered AlbumID
func (e ErrorNotRegistered) Error() string {
return fmt.Sprintf("Cover URL for Album %d is not registered", AlbumID(e))
}
// NewAlbumCoverCache is creating a new cache at specified location on the fs
func NewAlbumCoverCache(basepath string, maxRequest uint, window time.Duration) *AlbumCoverCache {
res := &AlbumCoverCache{
@@ -37,7 +43,7 @@ func NewAlbumCoverCache(basepath string, maxRequest uint, window time.Duration)
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, "", ErrorNotRegistered(ID)
}
ext := AlbumCoverExt(URL)

View File

@@ -97,6 +97,7 @@ func (a *appData) buildRouter() http.Handler {
if err != nil {
narco.Error(ctx, w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
return
}
rc, ext, err := a.cover.GetCover(AlbumID(ID))
@@ -104,10 +105,16 @@ func (a *appData) buildRouter() http.Handler {
defer closeOrPanic(rc, "Album cover "+name)
}
if err != nil {
if _, ok := err.(ErrorNotRegistered); ok == true {
narco.Error(ctx, w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
return
}
narco.Error(ctx, w, err, http.StatusInternalServerError)
return
}
if ext != requestedExt {
narco.Error(ctx, w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
return
}
io.Copy(w, rc)