From b0b2c452bd214c6e2fc8abc287128c4292a7c2d8 Mon Sep 17 00:00:00 2001
From: Jonathan Cremin <jonathan@crem.in>
Date: Tue, 24 Oct 2017 19:45:16 +0100
Subject: [PATCH] Authenticate with Google on each API call

---
 lib/services/google/index.js | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/lib/services/google/index.js b/lib/services/google/index.js
index 903d804..10e57cd 100644
--- a/lib/services/google/index.js
+++ b/lib/services/google/index.js
@@ -12,15 +12,14 @@ if (!process.env.GOOGLE_EMAIL || !process.env.GOOGLE_PASSWORD) {
   debug('GOOGLE_EMAIL or GOOGLE_PASSWORD environment variables not found, deactivating Google Play Music.');
 }
 
-const ready = pm.initAsync({
-  email: process.env.GOOGLE_EMAIL,
-  password: process.env.GOOGLE_PASSWORD })
-  .catch((err) => {
-    debug(err);
-  });
 
 export function* lookupId(id, type) {
-  yield ready;
+  yield pm.initAsync({
+    email: process.env.GOOGLE_EMAIL,
+    password: process.env.GOOGLE_PASSWORD })
+    .catch((err) => {
+      debug(err);
+    });
   if (type === 'album') {
     const album = yield pm.getAlbumAsync(id, false);
     return {
@@ -91,7 +90,12 @@ function looseMatch(needle, haystack, type) {
 }
 
 export function* search(data, original = {}) {
-  yield ready;
+  yield pm.initAsync({
+    email: process.env.GOOGLE_EMAIL,
+    password: process.env.GOOGLE_PASSWORD })
+    .catch((err) => {
+      debug(err);
+    });
   let query;
   let album;
   const type = data.type;
@@ -140,7 +144,12 @@ export function* search(data, original = {}) {
 }
 
 export function* parseUrl(url) {
-  yield ready;
+  yield pm.initAsync({
+    email: process.env.GOOGLE_EMAIL,
+    password: process.env.GOOGLE_PASSWORD })
+    .catch((err) => {
+      debug(err);
+    });
   const parsed = parse(url.replace(/\+/g, '%20'));
   const path = parsed.path;
   const hash = parsed.hash;