コード例 #1
0
        public async Task Http_request_should_have_correct_format()
        {
            var handler = new NetworkHandler(HttpStatusCode.NotFound, "not found");

            var client  = new HttpClient(handler);
            var request = new JsonWebKeySetRequest
            {
                Address = _endpoint
            };

            request.Headers.Add("custom", "custom");
            request.Properties.Add("custom", "custom");

            var response = await client.GetJsonWebKeySetAsync(request);

            var httpRequest = handler.Request;

            httpRequest.Method.Should().Be(HttpMethod.Get);
            httpRequest.RequestUri.Should().Be(new Uri(_endpoint));
            httpRequest.Content.Should().BeNull();

            var headers = httpRequest.Headers;

            headers.Count().Should().Be(2);
            headers.Should().Contain(h => h.Key == "custom" && h.Value.First() == "custom");

            var properties = httpRequest.Properties;

            properties.Count.Should().Be(1);

            var prop = properties.First();

            prop.Key.Should().Be("custom");
            ((string)prop.Value).Should().Be("custom");
        }
コード例 #2
0
        /// <summary>
        /// Sends a JSON web key set document request
        /// </summary>
        /// <param name="client">The client.</param>
        /// <param name="request">The request</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public static async Task <JsonWebKeySetResponse> GetJsonWebKeySetAsync(this HttpMessageInvoker client, JsonWebKeySetRequest request, CancellationToken cancellationToken = default)
        {
            var clone = request.Clone();

            clone.Method = HttpMethod.Get;
            clone.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/jwk-set+json"));
            clone.Prepare();

            HttpResponseMessage response;

            try
            {
                response = await client.SendAsync(clone, cancellationToken).ConfigureAwait(false);

                string responseContent = null;
                if (response.Content != null)
                {
                    responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                }

                if (!response.IsSuccessStatusCode)
                {
                    return(await ProtocolResponse.FromHttpResponseAsync <JsonWebKeySetResponse>(response, $"Error connecting to {clone.RequestUri.AbsoluteUri}: {response.ReasonPhrase}").ConfigureAwait(false));
                }
            }
            catch (Exception ex)
            {
                return(ProtocolResponse.FromException <JsonWebKeySetResponse>(ex, $"Error connecting to {clone.RequestUri.AbsoluteUri}. {ex.Message}."));
            }

            return(await ProtocolResponse.FromHttpResponseAsync <JsonWebKeySetResponse>(response));
        }