A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Google Drive API changes

+39 -12
+38 -12
src/Javascript/Workers/service.js
··· 49 49 const isOffline = 50 50 !self.navigator.onLine 51 51 52 + // Use cache if offline and requesting something non-local and identified as cached (internal) 52 53 if (isNotLocal && isInternal && isOffline) { 53 54 const promise = caches 54 55 .match(event.request) ··· 56 57 57 58 event.respondWith(promise) 58 59 59 - } else if (event.request.url.includes("service_worker_authentication")) { 60 - const [_, token] = event.request.url.split("service_worker_authentication=") 61 - const newHeaders = new Headers() 60 + // When doing a request with basic authentication in the url, put it in the headers instead 61 + } else if (event.request.url.includes("service_worker_authentication=")) { 62 + const [urlWithoutToken, token] = event.request.url.split("service_worker_authentication=") 62 63 63 - for (const h of event.request.headers.entries()) { 64 - switch (h[0]) { 65 - case "range": 66 - newHeaders.append(h[0], h[1]) 67 - } 68 - } 64 + newRequestWithAuth( 65 + event, 66 + urlWithoutToken, 67 + "Basic " + token 68 + ) 69 69 70 - newHeaders.set("Authorization", "Basic " + token) 70 + // When doing a request with access token in the url, put it in the headers instead 71 + } else if (event.request.url.includes("&access_token=")) { 72 + const [urlWithoutToken, token] = event.request.url.split("&access_token=") 71 73 72 - const newRequest = new Request(event.request, { headers: newHeaders }) 73 - event.respondWith(fetch(newRequest)) 74 + newRequestWithAuth( 75 + event, 76 + urlWithoutToken, 77 + "Bearer " + token 78 + ) 74 79 75 80 } 76 81 }) ··· 78 83 79 84 80 85 // ⚗️ 86 + 87 + 88 + function newRequestWithAuth(event, urlWithoutToken, authToken) { 89 + const newHeaders = new Headers() 90 + 91 + for (const h of event.request.headers.entries()) { 92 + switch (h[0]) { 93 + case "range": 94 + newHeaders.append(h[0], h[1]) 95 + } 96 + } 97 + 98 + newHeaders.set("authorization", authToken) 99 + 100 + const newRequest = new Request(event.request, { 101 + headers: newHeaders, 102 + url: urlWithoutToken 103 + }) 104 + 105 + event.respondWith(fetch(newRequest)) 106 + } 81 107 82 108 83 109 function removeAllCaches() {
+1
src/Library/Sources/Services/Google.elm
··· 16 16 import Sources.Processing exposing (..) 17 17 import Sources.Services.Google.Parser as Parser 18 18 import Time 19 + import Url 19 20 20 21 21 22