build method
Implementation
Client build() {
_validateEnvironment();
final logLevel = env.get(AppEnv.logLevel);
final dartEnv = env.get<DartEnv>(AppEnv.dartEnv);
_logger = ioc.make<LoggerContract>(() => Logger(logLevel, dartEnv.value));
_createCache();
final token = env.get<String>(AppEnv.token, defaultValue: _token);
final intent = env.get<int>(AppEnv.intent, defaultValue: _intent);
final httpVersion = env.get<int>(AppEnv.discordRestHttpVersion,
defaultValue: _discordRestHttpVersion);
final shardVersion = env.get<int>(AppEnv.discordWssVersion,
defaultValue: _discordWssVersion);
final wsEncodingStrategy =
env.get(AppEnv.discordWssEncoding, defaultValue: _wssEncoder);
final http = HttpClient(
config: HttpClientConfigImpl(
uri: Uri.parse('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.strategy());
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,
_watchedFiles,
logger: _logger,
httpClient: http,
packetListener: packetListener,
providerManager: providerManager,
eventListener: eventListener,
globalState: globalStateManager,
interactiveComponent: interactiveComponent,
wss: wssOrchestrator,
);
ioc
..bind<HttpClientContract>(() => http)
..bind<Kernel>(() => kernel)
..bind<MarshallerContract>(Marshaller.new)
..bind<DataStoreContract>(() => DataStore(http))
..bind<CommandInteractionManagerContract>(CommandInteractionManager.new);
packetListener
..kernel = kernel
..init();
final client = Client(kernel);
for (final provider in _providers) {
providerManager.register(provider(client));
}
return client;
}