Response
Represents the HTTP response from the service.
using Azure.Core;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.CompilerServices;
namespace Azure
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public abstract class Response : IDisposable
{
private static readonly BinaryData s_EmptyBinaryData = new BinaryData(Array.Empty<byte>());
public abstract int Status { get; }
public abstract string ReasonPhrase { get; }
[System.Runtime.CompilerServices.Nullable(2)]
public abstract Stream ContentStream {
[System.Runtime.CompilerServices.NullableContext(2)]
get;
[System.Runtime.CompilerServices.NullableContext(2)]
set;
}
public abstract string ClientRequestId { get; set; }
public virtual ResponseHeaders Headers => new ResponseHeaders(this);
public virtual BinaryData Content {
get {
if (ContentStream == null)
return s_EmptyBinaryData;
MemoryStream memoryStream = ContentStream as MemoryStream;
if (memoryStream == null)
throw new InvalidOperationException("The response is not fully buffered.");
if (memoryStream.TryGetBuffer(out ArraySegment<byte> buffer))
return new BinaryData((ReadOnlyMemory<byte>)buffer.AsMemory());
return new BinaryData(memoryStream.ToArray());
}
}
public virtual bool IsError { get; set; }
internal HttpMessageSanitizer Sanitizer { get; set; } = HttpMessageSanitizer.Default;
[System.Runtime.CompilerServices.Nullable(2)]
[field: System.Runtime.CompilerServices.Nullable(2)]
internal RequestFailedDetailsParser RequestFailedDetailsParser {
[System.Runtime.CompilerServices.NullableContext(2)]
get;
[System.Runtime.CompilerServices.NullableContext(2)]
set;
}
public abstract void Dispose();
protected internal abstract bool TryGetHeader(string name, [System.Runtime.CompilerServices.Nullable(2)] [NotNullWhen(true)] out string value);
protected internal abstract bool TryGetHeaderValues(string name, [System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})] [NotNullWhen(true)] out IEnumerable<string> values);
protected internal abstract bool ContainsHeader(string name);
protected internal abstract IEnumerable<HttpHeader> EnumerateHeaders();
public static Response<T> FromValue<[System.Runtime.CompilerServices.Nullable(2)] T>(T value, Response response)
{
return new ValueResponse<T>(response, value);
}
public override string ToString()
{
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(24, 2);
defaultInterpolatedStringHandler.AppendLiteral("Status: ");
defaultInterpolatedStringHandler.AppendFormatted(Status);
defaultInterpolatedStringHandler.AppendLiteral(", ReasonPhrase: ");
defaultInterpolatedStringHandler.AppendFormatted(ReasonPhrase);
return defaultInterpolatedStringHandler.ToStringAndClear();
}
[System.Runtime.CompilerServices.NullableContext(2)]
internal static void DisposeStreamIfNotBuffered(ref Stream stream)
{
if (!(stream is MemoryStream)) {
stream?.Dispose();
stream = null;
}
}
}
}