StorageServerTimeoutPolicy
using Azure.Core;
using System;
using System.Globalization;
using System.Runtime.CompilerServices;
namespace Azure.Storage
{
internal class StorageServerTimeoutPolicy
{
private const string QueryParameterKeyWithEqualSign = "timeout=";
public static StorageServerTimeoutPolicy { get; } = new StorageServerTimeoutPolicy();
private StorageServerTimeoutPolicy()
: this()
{
}
public override void OnSendingRequest(HttpMessage message)
{
object obj = default(object);
if (message.TryGetProperty("Azure.Storage.StorageServerTimeoutPolicy.Timeout", ref obj)) {
if (!(obj is TimeSpan)) {
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(50, 2);
defaultInterpolatedStringHandler.AppendFormatted("Azure.Storage.StorageServerTimeoutPolicy.Timeout");
defaultInterpolatedStringHandler.AppendLiteral(" http message property must be a TimeSpan but was ");
defaultInterpolatedStringHandler.AppendFormatted(obj?.GetType());
throw new ArgumentException(defaultInterpolatedStringHandler.ToStringAndClear());
}
TimeSpan timeSpan = (TimeSpan)obj;
string query = message.get_Request().get_Uri().get_Query();
int num = Convert.ToInt32(timeSpan.TotalSeconds);
if (string.IsNullOrEmpty(query)) {
RequestUriBuilder uri = message.get_Request().get_Uri();
uri.set_Query(uri.get_Query() + string.Format(CultureInfo.InvariantCulture, "?{0}{1}", "timeout=", num));
} else if (!query.Contains("timeout=")) {
RequestUriBuilder uri2 = message.get_Request().get_Uri();
uri2.set_Query(uri2.get_Query() + string.Format(CultureInfo.InvariantCulture, "&{0}{1}", "timeout=", num));
}
}
}
}
}