/// <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; }
/// <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); } }
public void RegisterHttpRequestHandler(string path, OnHttpRequestDelegate handler) { if (httpRequestHandlers.ContainsKey(path)) { throw new Exception("Handler already exists"); } httpRequestHandlers[path] = handler; }
/// <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); }