public async Task Login(LoginInfo loginInfo, CancellationToken cancellationToken)
        {
            var instance = new Instance(loginInfo.Instance);

            var mastodonClient = await _clientRepository.FindMastodonClient(instance, cancellationToken);

            if (mastodonClient is null)
            {
                MastodonClientId     clientId;
                MastodonClientSecret clientSecret;

                try
                {
                    var(id, secret) = await _registerClient.RegisterClient(loginInfo, cancellationToken);

                    clientId     = new MastodonClientId(id);
                    clientSecret = new MastodonClientSecret(secret);
                }
                catch
                {
                    _showRegisterClientError.ShowRegisterClientError();
                    return;
                }

                mastodonClient = _clientRepository.CreateMastodonClient(instance, clientId, clientSecret);
                await _clientRepository.SaveMastodonClient(mastodonClient, cancellationToken);
            }

            var authorizeUrl = await mastodonClient.GetAuthorizeUri();

            _showAuthUrl.ShowAuthUrl(new AuthorizationUrl(authorizeUrl));
        }
Пример #2
0
 public MastodonClient(Instance instance, MastodonClientId clientId, MastodonClientSecret clientSecret)
 {
     Instance     = instance;
     ClientId     = clientId;
     ClientSecret = clientSecret;
 }
 public MastodonClient CreateMastodonClient(Instance instance, MastodonClientId clientId,
                                            MastodonClientSecret clientSecret)
 {
     return(new(instance, clientId, clientSecret));
 }