bookends

commit 72c091bc43f6c75f32c601207d23e7d75898bd4b

Author: Honza Pokorny <honza@redhat.com>

Move cover download logic to a method

 pkg/bookends/bookends.go | 92 +++++++++++++++++++++--------------------


diff --git a/pkg/bookends/bookends.go b/pkg/bookends/bookends.go
index e04ae6ff7e4fe7c98c51924085673fa2ebc6ff31..bafec02a594a9aa639c07bce578074f1b184f497 100644
--- a/pkg/bookends/bookends.go
+++ b/pkg/bookends/bookends.go
@@ -90,7 +90,53 @@ 	localPath := path.Join("cache", fmt.Sprintf("%s.jpg", b.ISBN))
 	return url.Parse(localPath)
 }
 
-func (b Book) DownloadCover() error {
+func (b Book) DownloadCover(config Config) error {
+	cachePath := path.Join(config.CacheDir, fmt.Sprintf("%s.jpg", b.ISBN))
+
+	if PathExists(cachePath) {
+		return nil
+	}
+
+	coversPath := path.Join(config.CoversDir, fmt.Sprintf("%s.jpg", b.ISBN))
+
+	if PathExists(coversPath) {
+		// Copy the file over
+		err := copy(coversPath, cachePath)
+
+		if err != nil {
+			return err
+		}
+
+		return nil
+
+	}
+
+	coverUrl, err := b.CoverURL()
+
+	if err != nil {
+		return err
+	}
+
+	resp, err := http.Get(coverUrl.String())
+
+	if err != nil {
+		return err
+	}
+
+	if resp.StatusCode > 201 {
+		return errors.New("non 200 response:" + b.Title)
+	}
+
+	destination, err := os.Create(cachePath)
+	if err != nil {
+		return err
+	}
+	defer destination.Close()
+	_, err = io.Copy(destination, resp.Body)
+
+	if err != nil {
+		return err
+	}
 	return nil
 }
 
@@ -329,49 +375,7 @@ 		return err
 	}
 
 	for _, book := range books {
-		cachePath := path.Join(config.CacheDir, fmt.Sprintf("%s.jpg", book.ISBN))
-
-		if PathExists(cachePath) {
-			continue
-		}
-
-		coversPath := path.Join(config.CoversDir, fmt.Sprintf("%s.jpg", book.ISBN))
-
-		if PathExists(coversPath) {
-			// Copy the file over
-			err := copy(coversPath, cachePath)
-
-			if err != nil {
-				return nil
-			}
-
-			continue
-
-		}
-
-		coverUrl, err := book.CoverURL()
-
-		if err != nil {
-			return err
-		}
-
-		resp, err := http.Get(coverUrl.String())
-
-		if err != nil {
-			return err
-		}
-
-		if resp.StatusCode > 201 {
-			return errors.New("  non 200 response:" + book.Title)
-		}
-
-		destination, err := os.Create(cachePath)
-		if err != nil {
-			return err
-		}
-		defer destination.Close()
-		_, err = io.Copy(destination, resp.Body)
-
+		err = book.DownloadCover(config)
 		if err != nil {
 			return err
 		}