Пример #1
0
        private static async Task <HttpResponseMessage> BuildResponseAsync(HttpRequestMessage request, HttpInterceptionResponse response)
        {
            var result = new HttpResponseMessage(response.StatusCode);

            try
            {
                result.RequestMessage = request;

                if (response.ReasonPhrase != null)
                {
                    result.ReasonPhrase = response.ReasonPhrase;
                }

                if (response.Version != null)
                {
                    result.Version = response.Version;
                }

                if (response.ContentStream != null)
                {
                    result.Content = new StreamContent(await response.ContentStream().ConfigureAwait(false) ?? Stream.Null);
                }
                else
                {
                    byte[] content = await response.ContentFactory().ConfigureAwait(false) ?? Array.Empty <byte>();

                    result.Content = new ByteArrayContent(content);
                }

                PopulateHeaders(result.Content.Headers, response.ContentHeaders);

                // Do not overwrite a custom Content-Type header if already set
                if (!result.Content.Headers.TryGetValues("content-type", out var contentType))
                {
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue(response.ContentMediaType);
                }

                PopulateHeaders(result.Headers, response.ResponseHeaders);
            }
            catch (Exception)
            {
                result.Dispose();
                throw;
            }

            return(result);
        }