| File: Tasks\Http\HttpResponseMessageWrapper.cs | Web Access |
| Project: src\sdk\src\WebSdk\Publish\Tasks\Microsoft.NET.Sdk.Publish.Tasks.csproj (Microsoft.NET.Sdk.Publish.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Net; using System.Net.Http; namespace Microsoft.NET.Sdk.Publish.Tasks; internal class HttpResponseMessageWrapper : IHttpResponse { private readonly HttpResponseMessage _message; private readonly Lazy<Task<Stream>?> _responseBodyTask; public HttpResponseMessageWrapper(HttpResponseMessage message) { _message = message; _responseBodyTask = new Lazy<Task<Stream>?>(GetResponseStream); StatusCode = message?.StatusCode ?? HttpStatusCode.InternalServerError; } /// <inheritdoc/> public HttpStatusCode StatusCode { get; private set; } /// <inheritdoc/> public async Task<Stream?> GetResponseBodyAsync() { return _responseBodyTask.Value is not null ? await _responseBodyTask.Value : null; } /// <inheritdoc/> public IEnumerable<string> GetHeader(string name) { if (_message is not null && _message.Headers is not null && _message.Headers.TryGetValues(name, out IEnumerable<string>? values)) { return values; } return []; } private Task<Stream>? GetResponseStream() { return _message is not null && _message.Content is not null ? _message.Content.ReadAsStreamAsync() : null; } }