예제 #1
0
        private static Tokenizer Execute(IRestClient client, TokenRequest tokenRequest, GrantType grantType)
        {
            var request  = tokenRequest.ToRestRequest();
            var response = client.Execute(request);

            return(ProcessResponse(response, grantType));
        }
        private static async Task<Tokenizer> ExecuteAsync(IRestClient client, TokenRequest tokenRequest, GrantType grantType, CancellationToken cancellationToken = default)
        {
            var request = tokenRequest.ToRestRequest();
            var response = await client.ExecuteAsync(request, request.Method, cancellationToken).ConfigureAwait(false);

            return ProcessResponse(response, grantType);
        }
        private Task <AccessToken> ExecuteAccessTokenRequest(TokenRequest tokenRequest, CancellationToken cancellationToken)
        {
            var restRequest = tokenRequest.ToRestRequest(_serverConfiguration.TokensUrl);

            return(RestClient.Execute(restRequest, cancellationToken)
                   .ContinueWith(t =>
            {
                // We will only process HTTP 200 status codes, as only then we can be sure
                // that we have received a correct response and can be try to deserialize
                // the access token response
                if (t.Result.StatusCode == HttpStatusCode.OK)
                {
                    return _jsonDeserializer.Deserialize <AccessTokenResponse>(t.Result).ToAccessToken();
                }

                throw new HttpException((int)t.Result.StatusCode, t.Result.StatusDescription);
            }, cancellationToken));
        }