From 1c39ad27a58dbd33a624196b940b46121994cf61 Mon Sep 17 00:00:00 2001 From: Alexandre Tuleu Date: Mon, 25 Jan 2016 15:20:19 +0100 Subject: [PATCH] Refactors Cover's Extension cleaning in Album --- album.go | 13 +++++++++++++ album_test.go | 19 +++++++++++++++++++ router.go | 8 +------- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/album.go b/album.go index d000826..c2354d8 100644 --- a/album.go +++ b/album.go @@ -1,8 +1,10 @@ package main import ( + "path" "regexp" "strconv" + "strings" "time" ) @@ -101,3 +103,14 @@ func (a *Album) String() string { } return res + a.Title } + +var rxExt = regexp.MustCompile(`\.([0-9]+)([a-zA-Z]+)\z`) + +func (a *Album) CoverExt() string { + ext := path.Ext(a.CoverURL) + m := rxExt.FindStringSubmatch(ext) + if m != nil { + ext = "." + m[2] + } + return strings.ToLower(ext) +} diff --git a/album_test.go b/album_test.go index a7dead7..ca0e9eb 100644 --- a/album_test.go +++ b/album_test.go @@ -38,3 +38,22 @@ func (s *AlbumSuite) TestAuthors(c *C) { } } + +func (s *AlbumSuite) TestExt(c *C) { + type TestData struct { + A *Album + Res string + } + data := []TestData{ + {&Album{CoverURL: "foo/bar/test.jpg"}, ".jpg"}, + {&Album{CoverURL: "foo/bar/foo.JPG"}, ".jpg"}, + {&Album{CoverURL: "foo/bar/foo.JPEG"}, ".jpeg"}, + {&Album{CoverURL: "foo/bar/foo.023879jpg"}, ".jpg"}, + {&Album{CoverURL: "foo/bar/foo.PNG"}, ".png"}, + {&Album{CoverURL: "foo/bar/foo.gif"}, ".gif"}, + } + + for _, d := range data { + c.Check(d.A.CoverExt(), Equals, d.Res, Commentf("With URL %s", d.A.CoverURL)) + } +} diff --git a/router.go b/router.go index 7750208..f6dde5b 100644 --- a/router.go +++ b/router.go @@ -8,9 +8,7 @@ import ( "os" "path" "path/filepath" - "regexp" "strconv" - "strings" "ponyo.epfl.ch/gitlab/alexandre.tuleu/narco" @@ -20,8 +18,6 @@ import ( "golang.org/x/net/context" ) -var rxExt = regexp.MustCompile(`[0-9]+`) - func (a *appData) buildRouter() http.Handler { router := httprouter.New() @@ -79,9 +75,7 @@ func (a *appData) buildRouter() http.Handler { } album := *albumUnsafe - ext := path.Ext(album.CoverURL) - ext = strings.ToLower(rxExt.ReplaceAllString(ext, "")) - album.CoverURL = fmt.Sprintf("/covers/%d%s", album.ID, ext) + album.CoverURL = fmt.Sprintf("/covers/%d%s", album.ID, album.CoverExt()) enc := json.NewEncoder(w) if err := enc.Encode(album); err != nil {