Пример #1
0
        public Task <TraktResponse <ITraktAuthorization> > RefreshAuthorizationAsync(string refreshToken, string clientId, string clientSecret, string redirectUri, CancellationToken cancellationToken = default)
        {
            var request = new AuthorizationRefreshRequest
            {
                RequestBody = new AuthorizationRefreshRequestBody
                {
                    ClientId     = clientId,
                    ClientSecret = clientSecret,
                    RedirectUri  = redirectUri,
                    RefreshToken = refreshToken
                }
            };

            var requestHandler = new AuthenticationRequestHandler(Client);

            return(requestHandler.RefreshAuthorizationAsync(request, cancellationToken));
        }
        public async Task <Pair <bool, TraktResponse <ITraktAuthorization> > > CheckIfAuthorizationIsExpiredOrWasRevokedAsync(bool autoRefresh = false, CancellationToken cancellationToken = default)
        {
            if (_client.Authorization.IsExpired)
            {
                return(new Pair <bool, TraktResponse <ITraktAuthorization> >(true, new TraktResponse <ITraktAuthorization>()));
            }

            bool throwResponseExceptions = true;

            try
            {
                throwResponseExceptions = _client.Configuration.ThrowResponseExceptions;
                _client.Configuration.ThrowResponseExceptions = true;
                await _client.Sync.GetLastActivitiesAsync(cancellationToken).ConfigureAwait(false);
            }
            catch (TraktAuthorizationException)
            {
                if (!autoRefresh)
                {
                    return(new Pair <bool, TraktResponse <ITraktAuthorization> >(true, new TraktResponse <ITraktAuthorization>()));
                }

                var request = new AuthorizationRefreshRequest
                {
                    RequestBody = new AuthorizationRefreshRequestBody
                    {
                        ClientId     = _client.ClientId,
                        ClientSecret = _client.ClientSecret,
                        RefreshToken = _client.Authorization.RefreshToken,
                        RedirectUri  = _client.Authentication.RedirectUri
                    }
                };

                TraktResponse <ITraktAuthorization> response = await RefreshAuthorizationAsync(request, cancellationToken).ConfigureAwait(false);

                return(new Pair <bool, TraktResponse <ITraktAuthorization> >(response.IsSuccess, response));
            }
            finally
            {
                _client.Configuration.ThrowResponseExceptions = throwResponseExceptions;
            }

            return(new Pair <bool, TraktResponse <ITraktAuthorization> >(false, new TraktResponse <ITraktAuthorization>()));
        }
 public Task <TraktResponse <ITraktAuthorization> > RefreshAuthorizationAsync(AuthorizationRefreshRequest request, CancellationToken cancellationToken = default)
 => ExecuteAuthorizationRequestAsync(request, true, cancellationToken);