public void Configure()
        {
            var config = ConfigurationManager.GetSection("WriteHttp") as WriteHttpPluginConfig;

            if (config == null)
            {
                throw new Exception("Cannot get configuration section : WriteHttp");
            }

            _httpWriters.Clear();

            foreach (WriteHttpPluginConfig.WriteHttpNodeConfig node in config.Nodes)
            {
                var writer = new HttpWriter
                {
                    Url         = node.Url,
                    Timeout     = node.Timeout,
                    BatchSize   = node.BatchSize,
                    MaxIdleTime = node.MaxIdleTime,
                    EnableProxy = node.Proxy.Enable
                };

                if (writer.EnableProxy)
                {
                    writer.WebProxy = node.Proxy.Url.Length > 0 ? new WebProxy(node.Proxy.Url) : new WebProxy();
                }
                _httpWriters.Add(writer);
            }

            Logger.Info("WriteHttp plugin configured");
        }
        public void Configure()
        {
            var config = ConfigurationManager.GetSection("WriteHttp") as WriteHttpPluginConfig;
            if (config == null)
            {
                throw new Exception("Cannot get configuration section : WriteHttp");
            }

            _httpWriters.Clear();

            foreach (WriteHttpPluginConfig.WriteHttpNodeConfig node in config.Nodes)
            {
                var writer = new HttpWriter
                {
                    Url = node.Url,
                    Timeout = node.Timeout,
                    BatchSize = node.BatchSize,
                    MaxIdleTime = node.MaxIdleTime,
                    EnableProxy = node.Proxy.Enable
                };

                if (writer.EnableProxy)
                {
                    writer.WebProxy = node.Proxy.Url.Length > 0 ? new WebProxy(node.Proxy.Url) : new WebProxy();
                }

                if (!string.IsNullOrEmpty(node.UserName) && !string.IsNullOrEmpty(node.Password))                
                {
                    /* Possibly misfeature- adding BasicAuthHeaderData to HttpWriter class to efficiently support basic auth,
                     * but saves the ToBase64String string encode on each request. Better, but more expensive, would be
                     * to put both on as secure strings and add a config param to support other auth methods while
                     * building the HttpWebResponse on each call. @FerventGeek */ 
                    writer.BasicAuthHeaderData = System.Convert.ToBase64String(
                        System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(node.UserName + ":" + node.Password));
                    Logger.Info("Using BasicAuth for node {0}, user {1}", node.Name, node.UserName);
                }
                
                if (!string.IsNullOrEmpty(node.SafeCharsRegex))
                {
                    // compile for perfomace, since config is only loaded on start
                    writer.SafeCharsRegex = new Regex("[^" + node.SafeCharsRegex + "]", RegexOptions.Compiled);
                    Logger.Info("Using SafeChars for node {0}, regex \"{1}\" replaced with \"{2}\"",
                        node.Name, writer.SafeCharsRegex.ToString(), node.ReplaceWith);
                }

                if (node.ReplaceWith == null)
                {
                    // default, strip unsafe chars
                    writer.ReplaceWith = "";
                }
                else
                {
                    writer.ReplaceWith = node.ReplaceWith;
                }

                _httpWriters.Add(writer);
            }

            Logger.Info("WriteHttp plugin configured");
        }
        public void Configure()
        {
            var config = ConfigurationManager.GetSection("WriteHttp") as WriteHttpPluginConfig;

            if (config == null)
            {
                throw new Exception("Cannot get configuration section : WriteHttp");
            }

            _httpWriters.Clear();

            foreach (WriteHttpPluginConfig.WriteHttpNodeConfig node in config.Nodes)
            {
                var writer = new HttpWriter
                {
                    Url         = node.Url,
                    Timeout     = node.Timeout,
                    BatchSize   = node.BatchSize,
                    MaxIdleTime = node.MaxIdleTime,
                    EnableProxy = node.Proxy.Enable
                };

                if (writer.EnableProxy)
                {
                    writer.WebProxy = node.Proxy.Url.Length > 0 ? new WebProxy(node.Proxy.Url) : new WebProxy();
                }

                if (!string.IsNullOrEmpty(node.UserName) && !string.IsNullOrEmpty(node.Password))
                {
                    /* Possibly misfeature- adding BasicAuthHeaderData to HttpWriter class to efficiently support basic auth,
                     * but saves the ToBase64String string encode on each request. Better, but more expensive, would be
                     * to put both on as secure strings and add a config param to support other auth methods while
                     * building the HttpWebResponse on each call. @FerventGeek */
                    writer.BasicAuthHeaderData = System.Convert.ToBase64String(
                        System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(node.UserName + ":" + node.Password));
                    Logger.Info("Using BasicAuth for node {0}, user {1}", node.Name, node.UserName);
                }

                if (!string.IsNullOrEmpty(node.SafeCharsRegex))
                {
                    // compile for perfomace, since config is only loaded on start
                    writer.SafeCharsRegex = new Regex("[^" + node.SafeCharsRegex + "]", RegexOptions.Compiled);
                    Logger.Info("Using SafeChars for node {0}, regex \"{1}\" replaced with \"{2}\"",
                                node.Name, writer.SafeCharsRegex.ToString(), node.ReplaceWith);
                }

                if (node.ReplaceWith == null)
                {
                    // default, strip unsafe chars
                    writer.ReplaceWith = "";
                }
                else
                {
                    writer.ReplaceWith = node.ReplaceWith;
                }

                _httpWriters.Add(writer);
            }

            Logger.Info("WriteHttp plugin configured");
        }
        public void Configure()
        {
            var config = ConfigurationManager.GetSection("WriteHttp") as WriteHttpPluginConfig;
            if (config == null)
            {
                throw new Exception("Cannot get configuration section : WriteHttp");
            }

            _httpWriters.Clear();

            foreach (WriteHttpPluginConfig.WriteHttpNodeConfig node in config.Nodes)
            {
                var writer = new HttpWriter
                {
                    Url = node.Url,
                    Timeout = node.Timeout,
                    BatchSize = node.BatchSize,
                    MaxIdleTime = node.MaxIdleTime,
                    EnableProxy = node.Proxy.Enable
                };

                if (writer.EnableProxy)
                {
                    writer.WebProxy = node.Proxy.Url.Length > 0 ? new WebProxy(node.Proxy.Url) : new WebProxy();
                }
                _httpWriters.Add(writer);
            }

            Logger.Info("WriteHttp plugin configured");
        }