StorageServerTimeoutPolicy
using Azure.Core;
using Azure.Core.Pipeline;
using System;
using System.Globalization;
namespace Azure.Storage
{
internal class StorageServerTimeoutPolicy : HttpPipelineSynchronousPolicy
{
private const string QueryParameterKeyWithEqualSign = "timeout=";
public static StorageServerTimeoutPolicy { get; } = new StorageServerTimeoutPolicy();
private StorageServerTimeoutPolicy()
{
}
public override void OnSendingRequest(HttpMessage message)
{
if (message.TryGetProperty("Azure.Storage.StorageServerTimeoutPolicy.Timeout", out object value)) {
if (!(value is TimeSpan))
throw new ArgumentException(string.Format("{0} http message property must be a TimeSpan but was {1}", "Azure.Storage.StorageServerTimeoutPolicy.Timeout", value?.GetType()));
TimeSpan timeSpan = (TimeSpan)value;
string query = message.Request.Uri.Query;
int num = Convert.ToInt32(timeSpan.TotalSeconds);
if (string.IsNullOrEmpty(query)) {
RequestUriBuilder uri = message.Request.Uri;
uri.Query += string.Format(CultureInfo.InvariantCulture, "?{0}{1}", "timeout=", num);
} else if (!query.Contains("timeout=")) {
RequestUriBuilder uri2 = message.Request.Uri;
uri2.Query += string.Format(CultureInfo.InvariantCulture, "&{0}{1}", "timeout=", num);
}
}
}
}
}