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));
                }
            }
        }
    }
}