/* exported ArtworkService */ /* global Response, ServiceWorkerWare, bridge */ 'use strict'; importScripts('components/bridge/client.js'); var client = bridge.client({ service: 'music-service', endpoint: new BroadcastChannel('music-service') }); function ArtworkService(worker) { var stopAfter = ServiceWorkerWare.decorators.stopAfter; worker.get('/api/artwork/original/:filePath', stopAfter((request) => { return new Promise((resolve) => { var filePath = decodeURIComponent(request.parameters.filePath); client.method('getSongArtwork', filePath) .then(file => resolve(respond(file))) .catch((error) => { resolve(new Response('', { status: 404 })); }); }); })); worker.get('/api/artwork/thumbnail/:filePath', stopAfter((request) => { return new Promise((resolve) => { var filePath = decodeURIComponent(request.parameters.filePath); client.method('getSongThumbnail', filePath) .then(file => resolve(respond(file))) .catch((error) => { resolve(new Response('', { status: 404 })); }); }); })); worker.get('/api/artwork/url/original/:filePath', stopAfter((request) => { return new Promise((resolve) => { var filePath = decodeURIComponent(request.parameters.filePath); client.method('getSongArtworkURL', filePath) .then(file => resolve(respond(file))) .catch((error) => { resolve(new Response('', { status: 404 })); }); }); })); worker.get('/api/artwork/url/thumbnail/:filePath', stopAfter((request) => { return new Promise((resolve) => { var filePath = decodeURIComponent(request.parameters.filePath); client.method('getSongThumbnailURL', filePath) .then(file => resolve(respond(file))) .catch((error) => { resolve(new Response('', { status: 404 })); }); }); })); function respond(response) { return new Response(JSON.stringify(response), { headers: { 'Content-Type': response.type || 'application/octet-stream' } }); } }