Example #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WebServer" /> class.
        /// </summary>
        /// <remarks>
        /// <c>urlPrefixes</c> must be specified as something similar to: http://localhost:9696/
        /// Please notice the ending slash. -- It is important.
        /// </remarks>
        /// <param name="urlPrefixes">The URL prefix.</param>
        /// <param name="routingStrategy">The routing strategy.</param>
        /// <param name="httpListener">The HTTP listener.</param>
        /// <exception cref="ArgumentException">Argument urlPrefix must be specified.</exception>
        public WebServer(string[] urlPrefixes, RoutingStrategy routingStrategy, IHttpListener httpListener)
        {
            if (urlPrefixes == null || urlPrefixes.Length <= 0)
            {
                throw new ArgumentException("At least 1 URL prefix in urlPrefixes must be specified");
            }

            $"Running HTTPListener: {httpListener.GetType()}".Info(nameof(WebServer));

            RoutingStrategy = routingStrategy;
            Listener        = httpListener;

            foreach (var prefix in urlPrefixes)
            {
                var urlPrefix = new string(prefix?.ToCharArray());

                if (urlPrefix.EndsWith("/") == false)
                {
                    urlPrefix = urlPrefix + "/";
                }
                urlPrefix = urlPrefix.ToLowerInvariant();

                Listener.AddPrefix(urlPrefix);
                $"Web server prefix '{urlPrefix}' added.".Info(nameof(WebServer));
            }

            "Finished Loading Web Server.".Info(nameof(WebServer));
        }
Example #2
0
            void OnAfterUnRegister(IHttpListener listner)
            {
             
                var type = listner.GetType();

                var methods = listner.GetType().GetMethods();
                foreach (var m in methods)
                {
                    if (m.DeclaringType != type)
                        continue;
                    RemoveEvent(listner, m);
                }
            }
Example #3
0
            void OnAfterRegister(IHttpListener listner)
            {
                var methods = listner.GetType().GetMethods();
                var type = listner.GetType();
                foreach (var m in methods)
                {
                    if (m.DeclaringType != type)
                        continue;

                    try
                    {
                        AddEvent(listner, m);
                    }
                    catch (Exception e)
                    {
                        e.Handle();
                    }
                }
            }