Ejemplo n.º 1
0
        async Task <JToken> CallInternalAsync(FormUrlEncodedContent content, int attemptNumber)
        {
            CancellationToken.ThrowIfCancellationRequested();

            await EnsureApiClientAsync();

            try {
                var response = await apiClient.PostAsync("/api/1", content, CancellationToken);

                if (!response.IsSuccessStatusCode)
                {
                    throw new HttpRequestException("invalid HTTP request");
                }

                var stream = await response.Content.ReadAsStreamAsync();

                var json = (JObject)JToken.ReadFrom(new JsonTextReader(new StreamReader(stream)));

                if (json ["status"].Value <string> () != "ok")
                {
                    Console.Error.WriteLine(json);
                    throw new HttpRequestException("JSON result is not status==ok");
                }

                return(json ["result"]);
            } catch (Exception e) when(!(e is HttpRequestException))
            {
                apiClient             = null;
                tokenEndpointResponse = null;

                if (attemptNumber >= MaxRetryAttempts)
                {
                    throw;
                }

                return(await CallInternalAsync(content, attemptNumber ++));
            }
        }
Ejemplo n.º 2
0
        async Task RefreshAccessTokenAsync()
        {
            var client = CreateHttp();

            client.DefaultRequestHeaders.Authorization = clientCredentials.ToHttpBasicAuthentication();

            var response = await client.PostAsync(
                "/oauth2/token",
                CreateHttpContent ("grant_type", "client_credentials")
                );

            tokenEndpointResponse = await response.Content.ReadAsJsonAsync <TokenEndpointResponse> ();

            if (tokenEndpointResponse?.ErrorCode != null)
            {
                throw new TokenEndpointException(tokenEndpointResponse);
            }

            if (!response.IsSuccessStatusCode)
            {
                throw new HttpRequestException("invalid HTTP request with no TokenEndpointResponse");
            }
        }
Ejemplo n.º 3
0
        public TokenEndpointException(TokenEndpointResponse response)
            : base(String.Format ("HTTP request error: {0} ({1})",
				response.ErrorCode, response.ErrorDescription))
        {
            Response = response;
        }
 public TokenEndpointException(TokenEndpointResponse response)
     : base(String.Format("HTTP request error: {0} ({1})",
                          response.ErrorCode, response.ErrorDescription))
 {
     Response = response;
 }