Ejemplo n.º 1
0
        /// <summary>
        /// Registers http request method
        /// </summary>
        /// <param name="path"></param>
        /// <param name="handler"></param>
        public void RegisterHttpRequestHandler(string path, HttpMethod httpMethod, OnHttpRequestDelegate handler)
        {
            string url;

            switch (httpMethod)
            {
            case HttpMethod.POST:
                url = CreateUrlKey(path, httpMethod);
                break;

            case HttpMethod.PUT:
                url = CreateUrlKey(path, httpMethod);
                break;

            default:
                url = CreateUrlKey(path, HttpMethod.GET);
                break;
            }

            if (httpRequestHandlers.ContainsKey(url))
            {
                throw new Exception($"Handler [{url}] already exists");
            }

            httpRequestHandlers[url] = handler;
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected virtual void HttpGetRequestHandler(object sender, HttpRequestEventArgs e)
        {
            // Get request
            var request = e.Request;

            // Get responce
            var response = e.Response;

            // Let's parse user
            string parsedUrl = UrlToPath(request);

            logger.Debug($"HTTP Get Request: [{parsedUrl}]");

            // Let's ceate url key
            string urlKey = CreateUrlKey(parsedUrl, HttpMethod.GET);

            // If our url has index page
            if (IsDefaultPage(urlKey))
            {
                OnHttpRequestDelegate defaultPageHandler = null;

                if (httpRequestHandlers.ContainsKey(urlKey))
                {
                    defaultPageHandler = httpRequestHandlers[urlKey];
                }

                if (defaultPageHandler != null)
                {
                    defaultPageHandler.Invoke(e);
                }
                else
                {
                    byte[] contents = Encoding.UTF8.GetBytes(DefaultIndexPageHtml());

                    response.ContentType     = "text/html";
                    response.ContentEncoding = Encoding.UTF8;
                    response.ContentLength64 = contents.LongLength;
                    response.Close(contents, true);
                }
            }
            else if (httpRequestHandlers.ContainsKey(urlKey))
            {
                httpRequestHandlers[urlKey].Invoke(e);
            }
            else if (TryGetExtension(parsedUrl, out string extension))
            {
                HandlePathWithExtension(e, extension);
            }
            else
            {
                byte[] contents = Encoding.UTF8.GetBytes(Default404Page());

                response.StatusCode      = (int)HttpStatusCode.NotFound;
                response.ContentType     = "text/html";
                response.ContentEncoding = Encoding.UTF8;
                response.ContentLength64 = contents.LongLength;
                response.Close(contents, true);
            }
        }
Ejemplo n.º 3
0
        public void RegisterHttpRequestHandler(string path, OnHttpRequestDelegate handler)
        {
            if (httpRequestHandlers.ContainsKey(path))
            {
                throw new Exception("Handler already exists");
            }

            httpRequestHandlers[path] = handler;
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Registers http get request method
 /// </summary>
 /// <param name="path"></param>
 /// <param name="httpMethod"></param>
 /// <param name="handler"></param>
 public void RegisterHttpRequestHandler(string path, OnHttpRequestDelegate handler)
 {
     RegisterHttpRequestHandler(path, HttpMethod.GET, handler);
 }