connectOAuth2WithOptions static method

Future<NyxxOAuth2> connectOAuth2WithOptions(
  1. OAuth2ApiOptions apiOptions,
  2. [RestClientOptions clientOptions = const RestClientOptions()]
)

Create an instance of NyxxOAuth2 using the provided options.

Note that client.user.id will contain Snowflake.zero if there no identify scope.

Implementation

static Future<NyxxOAuth2> connectOAuth2WithOptions(OAuth2ApiOptions apiOptions, [RestClientOptions clientOptions = const RestClientOptions()]) async {
  clientOptions.logger
    ..info('Connecting to the REST API via OAuth2')
    ..fine('Token: ${apiOptions.token}, Authorization: ${apiOptions.authorizationHeader}, User-Agent: ${apiOptions.userAgent}')
    ..fine('Plugins: ${clientOptions.plugins.map((plugin) => plugin.name).join(', ')}');

  return _doConnect(apiOptions, clientOptions, () async {
    final client = NyxxOAuth2._(apiOptions, clientOptions);
    final information = await client.users.fetchCurrentOAuth2Information();

    return client
      .._application = information.application
      .._user = information.user ?? PartialUser(id: Snowflake.zero, manager: client.users);
  }, clientOptions.plugins);
}