StorageResponseClassifier
using Azure.Core;
using System;
namespace Azure.Storage
{
internal class StorageResponseClassifier
{
public Uri SecondaryStorageUri { get; set; }
public override bool IsRetriableResponse(HttpMessage message)
{
if (SecondaryStorageUri != (Uri)null && message.get_Request().get_Uri().get_Host() == SecondaryStorageUri.Host && message.get_Response().get_Status() == 404)
return true;
if (message.get_Response().get_Status() >= 400) {
ResponseHeaders headers = message.get_Response().get_Headers();
string a = default(string);
if (headers.TryGetValue("x-ms-error-code", ref a) && (a == "InternalError" || a == "OperationTimedOut" || a == "ServerBusy"))
return true;
}
return this.IsRetriableResponse(message);
}
public override bool IsErrorResponse(HttpMessage message)
{
if (message.get_Response().get_Status() == 409) {
RequestHeaders headers = message.get_Request().get_Headers();
ResponseHeaders headers2 = message.get_Response().get_Headers();
string a = default(string);
if (headers2.TryGetValue("x-ms-error-code", ref a) && (a == "ContainerAlreadyExists" || a == "BlobAlreadyExists"))
return !headers.Contains(Names.get_IfMatch()) && !headers.Contains(Names.get_IfNoneMatch()) && !headers.Contains(Names.get_IfModifiedSince()) && !headers.Contains(Names.get_IfUnmodifiedSince());
}
return this.IsErrorResponse(message);
}
public StorageResponseClassifier()
: this()
{
}
}
}