build method
Implementation
Client build() {
_watcherConfig.watchedFiles.add(_scaffold.entrypoint);
ioc
..bind<ScaffoldContract>(() => _scaffold)
..bind<LoggerContract>(() => _logger)
..bind<EnvContract>(() => _env);
_validateEnvironment();
_createCache();
final token = _env.get<String>(AppEnv.token);
final httpVersion = int.parse(_env.get(AppEnv.discordRestHttpVersion));
final shardVersion = int.parse(_env.get(AppEnv.discordWssVersion));
final intent = int.parse(_env.get(AppEnv.intent));
final http = HttpClient(
config: HttpClientConfigImpl(baseUrl: 'https://discord.com/api/v$httpVersion', headers: {
Header.userAgent('Mineral'),
Header.contentType('application/json'),
}));
final shardConfig = ShardingConfig(token: token, intent: intent, version: shardVersion, encoding: _wsEncodingStrategy);
final packetListener = PacketListener();
final eventListener = EventListener();
final providerManager = ProviderManager();
final globalStateManager = ioc.make(GlobalStateManager.new);
final interactiveComponent = ioc.make<InteractiveComponentManagerContract>(InteractiveComponentManager.new);
final wssOrchestrator =
ioc.make<WebsocketOrchestratorContract>(() => WebsocketOrchestrator(shardConfig));
final kernel = Kernel(
_hasDefinedDevPort,
_devPort,
watcherConfig: _watcherConfig,
logger: _logger,
environment: _env,
httpClient: http,
packetListener: packetListener,
providerManager: providerManager,
eventListener: eventListener,
globalState: globalStateManager,
interactiveComponent: interactiveComponent,
wss: wssOrchestrator,
);
final datastore = DataStore(http);
ioc
..bind<HttpClientContract>(() => http)
..bind<KernelContract>(() => kernel)
..bind<MarshallerContract>(Marshaller.new)
..bind<DataStoreContract>(() => datastore)
..bind<CommandInteractionManagerContract>(CommandInteractionManager.new);
packetListener
..kernel = kernel
..init();
final client = Client(kernel);
for (final provider in _providers) {
providerManager.register(provider(client));
}
return client;
}