Пример #1
0
        private async static Task <Authorization> PostAccessTokenAsync(DataAdapter dataAdapter, string code, CancellationToken cancellationToken = default)
        {
            _postAccessTokenParameters = new Dictionary <string, string>()
            {
                { "grant_type", "authorization_code" },
                { "refresh_token", string.Empty },
                { "access_type", "offline" },
                { "code", code },
                { "client_id", $"{dataAdapter.Settings["ApiKey"]}@AMER.OAUTHAP" },
                { "redirect_uri", "https://localhost:44328/api/authorization/postaccesstoken" }
            };
            _json = await Requester.QueueRequestAsync(Enums.HttpVerb.Post, dataAdapter.Settings["AuthenticationUri"], new FormUrlEncodedContent(_postAccessTokenParameters), cancellationToken);

            _authorizationCode = JsonSerializer.Deserialize <AuthorizationCode>(_json);
            _authorization     = new Authorization()
            {
                AccessToken           = _authorizationCode.access_token,
                RefreshToken          = _authorizationCode.refresh_token,
                TokenType             = _authorizationCode.token_type,
                ExpiresIn             = _authorizationCode.expires_in,
                Scope                 = _authorizationCode.scope,
                RefreshTokenExpiresIn = _authorizationCode.refresh_token_expires_in,
                Updated               = DateTime.UtcNow
            };
            return(_authorization);
        }
Пример #2
0
        public async static Task <Authorization> UpdateTokenAsync(this DataAdapter dataAdapter, string code, CancellationToken cancellationToken = default)
        {
            if (code == null)
            {
                try
                {
                    _authorization = dataAdapter.StocksDbContext.Authorization.Single();
                    if (!_authorization.IsRefreshTokenExpired())
                    {
                        if (_authorization.IsAccessTokenExpired())
                        {
                            _authorization = await PostRefreshTokenAsync(dataAdapter, cancellationToken);

                            dataAdapter.StocksDbContext.Update(_authorization);
                        }
                    }

                    else
                    {
                        throw new TimeoutException("Refresh Token Expired");
                    }
                }

                catch
                {
                    throw new NullReferenceException("Token Does Not Exist");
                }
            }

            else
            {
                _authorization = await PostAccessTokenAsync(dataAdapter, code, cancellationToken);

                dataAdapter.StocksDbContext.Update(_authorization);
            }

            await dataAdapter.StocksDbContext.SaveChangesAsync(cancellationToken);

            return(_authorization);
        }
Пример #3
0
        private async static Task <Authorization> PostRefreshTokenAsync(DataAdapter dataAdapter, CancellationToken cancellationToken = default)
        {
            _authorization             = dataAdapter.StocksDbContext.Authorization.Single();
            _postAccessTokenParameters = new Dictionary <string, string>()
            {
                { "grant_type", "refresh_token" },
                { "refresh_token", _authorization.RefreshToken },
                { "access_type", string.Empty },
                { "code", string.Empty },
                { "client_id", $"{dataAdapter.Settings["ApiKey"]}@AMER.OAUTHAP" },
                { "redirect_uri", string.Empty }
            };
            _json = await Requester.QueueRequestAsync(Enums.HttpVerb.Post, dataAdapter.Settings["AuthenticationUri"], new FormUrlEncodedContent(_postAccessTokenParameters), cancellationToken);

            _refreshToken = JsonSerializer.Deserialize <RefreshToken>(_json);
            _authorization.AccessToken = _refreshToken.access_token;
            _authorization.Scope       = _refreshToken.scope;
            _authorization.ExpiresIn   = _refreshToken.expires_in;
            _authorization.TokenType   = _refreshToken.token_type;
            _authorization.Updated     = DateTime.UtcNow;
            return(_authorization);
        }