public static JsonObject TorrentAddByUrl(string url, bool addcookies)
        {
            JsonObject request   = CreateBasicObject(ProtocolConstants.METHOD_TORRENTADD);
            JsonObject arguments = GetArgObject(request);
            Uri        uri       = new Uri(url);

            if (!uri.Scheme.Equals("magnet") && addcookies && Program.DaemonDescriptor.RpcVersion >= 13)
            {
                arguments.Put(ProtocolConstants.FIELD_COOKIES, PersistentCookies.RetrieveIECookiesForUrl(url));
            }
            arguments.Put(ProtocolConstants.FIELD_FILENAME, uri.AbsoluteUri);
            arguments.Put(ProtocolConstants.FIELD_PAUSED, Program.Settings.Current.StartPaused);
            return(request);
        }
        public static void SetupWebRequest(HttpWebRequest request, bool rpc, bool authenticate)
        {
            request.KeepAlive = false;
            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            request.UserAgent = $"{AboutDialog.AssemblyProduct}/{AboutDialog.AssemblyVersion}";
            if (XTransmissionSessionId != null && authenticate && rpc)
            {
                request.Headers["X-Transmission-Session-Id"] = XTransmissionSessionId;
            }
            if (!rpc)
            {
                request.CookieContainer = PersistentCookies.GetCookieContainerForUrl(request.RequestUri);
            }
            TransmissionServer settings = Program.Settings.Current;

            if (settings.AuthEnabled && authenticate)
            {
                request.Credentials     = new NetworkCredential(settings.Username, settings.ValidPassword);
                request.PreAuthenticate = Program.DaemonDescriptor.Version < 1.40 || Program.DaemonDescriptor.Version >= 1.6;
            }
            if (settings.Proxy.ProxyMode == ProxyMode.Enabled)
            {
                request.Proxy = new WebProxy(settings.Proxy.Host, settings.Proxy.Port);
                if (settings.Proxy.AuthEnabled)
                {
                    string[] user = settings.Proxy.Username.Split("\\".ToCharArray(), 2);
                    if (user.Length > 1)
                    {
                        request.Proxy.Credentials = new NetworkCredential(user[1], settings.Proxy.ValidPassword, user[0]);
                    }
                    else
                    {
                        request.Proxy.Credentials = new NetworkCredential(settings.Proxy.Username, settings.Proxy.ValidPassword);
                    }
                }
            }
            else if (settings.Proxy.ProxyMode == ProxyMode.Disabled)
            {
                request.Proxy = null;
            }
        }