aboutsummaryrefslogtreecommitdiff
path: root/src/inversify.config.ts
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2020-03-12 22:41:26 -0500
committerMax Isom <[email protected]>2020-03-12 22:41:26 -0500
commit17ba78f7b7d78c638ab00b9d4af79110130b0bcd (patch)
treedf0671a4b2845333198b57906b5dde68b709d37a /src/inversify.config.ts
parent8eb4c8a6c06f672cb50efae5ea30215d465000af (diff)
downloadmuse-17ba78f7b7d78c638ab00b9d4af79110130b0bcd.tar.xz
muse-17ba78f7b7d78c638ab00b9d4af79110130b0bcd.zip
Use IoC, impliment queue
Diffstat (limited to 'src/inversify.config.ts')
-rw-r--r--src/inversify.config.ts54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/inversify.config.ts b/src/inversify.config.ts
new file mode 100644
index 0000000..a042748
--- /dev/null
+++ b/src/inversify.config.ts
@@ -0,0 +1,54 @@
+import 'reflect-metadata';
+import {Container} from 'inversify';
+import {TYPES} from './types';
+import Bot from './bot';
+import {Client} from 'discord.js';
+import YouTube from 'youtube.ts';
+import Spotify from 'spotify-web-api-node';
+import {
+ DISCORD_TOKEN,
+ DISCORD_CLIENT_ID,
+ YOUTUBE_API_KEY,
+ SPOTIFY_CLIENT_ID,
+ SPOTIFY_CLIENT_SECRET,
+ DATA_DIR,
+ CACHE_DIR
+} from './utils/config';
+
+// Services
+import Queue from './services/queue';
+import Player from './services/player';
+
+// Comands
+import Command from './commands';
+import Config from './commands/config';
+import Play from './commands/play';
+import QueueCommad from './commands/queue';
+
+let container = new Container();
+
+// Bot
+container.bind<Bot>(TYPES.Bot).to(Bot).inSingletonScope();
+container.bind<Client>(TYPES.Client).toConstantValue(new Client());
+
+// Services
+container.bind<Player>(TYPES.Services.Player).to(Player).inSingletonScope();
+container.bind<Queue>(TYPES.Services.Queue).to(Queue).inSingletonScope();
+
+// Commands
+container.bind<Command>(TYPES.Command).to(Config).inSingletonScope();
+container.bind<Command>(TYPES.Command).to(Play).inSingletonScope();
+container.bind<Command>(TYPES.Command).to(QueueCommad).inSingletonScope();
+
+// Config values
+container.bind<string>(TYPES.Config.DISCORD_TOKEN).toConstantValue(DISCORD_TOKEN);
+container.bind<string>(TYPES.Config.DISCORD_CLIENT_ID).toConstantValue(DISCORD_CLIENT_ID);
+container.bind<string>(TYPES.Config.YOUTUBE_API_KEY).toConstantValue(YOUTUBE_API_KEY);
+container.bind<string>(TYPES.Config.DATA_DIR).toConstantValue(DATA_DIR);
+container.bind<string>(TYPES.Config.CACHE_DIR).toConstantValue(CACHE_DIR);
+
+// Static libraries
+container.bind<YouTube>(TYPES.Lib.YouTube).toConstantValue(new YouTube(YOUTUBE_API_KEY));
+container.bind<Spotify>(TYPES.Lib.Spotify).toConstantValue(new Spotify({clientId: SPOTIFY_CLIENT_ID, clientSecret: SPOTIFY_CLIENT_SECRET}));
+
+export default container;