From b64a14b761a38da13b81370828a2d5e9ad68c330 Mon Sep 17 00:00:00 2001 From: Florrie Date: Mon, 28 May 2018 22:42:37 -0300 Subject: Initial commit --- index.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 index.js (limited to 'index.js') diff --git a/index.js b/index.js new file mode 100644 index 0000000..6edbd01 --- /dev/null +++ b/index.js @@ -0,0 +1,47 @@ +// omg I am tired of code + +const { getPlayer } = require('./players') +const { getDownloaderFor } = require('./downloaders') +const EventEmitter = require('events') + +class InternalApp extends EventEmitter { + constructor() { + super() + + // downloadCache [downloaderFunction] [downloaderArg] + this.downloadCache = new Map() + } + + async download(arg) { + const downloader = getDownloaderFor(arg) + if (this.downloadCache.has(downloader)) { + const category = this.downloadCache.get(downloader) + if (category.hasOwnProperty(arg)) { + return category[arg] + } + } + + const ret = await this.downloadIgnoringCache(arg) + + if (!this.downloadCache.has(downloader)) { + this.downloadCache.set(downloader, {}) + } + + this.downloadCache.get(downloader)[arg] = ret + + return ret + } + + downloadIgnoringCache(arg) { + const downloader = getDownloaderFor(arg) + return downloader(arg) + } +} + +async function main() { + const internalApp = new InternalApp() + const player = await getPlayer() + player.playFile(await internalApp.download('http://billwurtz.com/cable-television.mp3')) +} + +main().catch(err => console.error(err)) -- cgit 1.3.0-6-gf8a5