internal static void HandleRequest(WebRequest request, string content) { //var url = this.RequestUrl; //if (url == "/") url = "index.html"; //var local = Path.Combine(/*WebServer.HtmlDirectory*/ @"C:\Development\Sync\Terraria-s-Dedicated-Server-Mod\tdsm-core\WebInterface\Files", EncapsulatePath(url)); var local = GetEncapsulated(request); if (local != null && local.Exists) { //TODO implement cache using (var fs = local.OpenRead()) { var ext = local.Extension.ToLower(); var contentType = "text/html"; if (_contentTypes.ContainsKey(ext)) contentType = _contentTypes[ext]; request.RepsondHeader(200, "OK", contentType, fs.Length); var buf = new byte[512]; while (fs.Position < fs.Length) { var read = fs.Read(buf, 0, buf.Length); if (read > 0) { request.Send(buf, read, SocketFlags.None); } else break; } } request.End(); } else { //var segments = request.RequestUrl.Split('/'); if (request.Path != null) if (_pages.ContainsKey(request.Path)) { if (_pages[request.Path].CanProcess(request)) { _pages[request.Path].ProcessRequest(request); request.End(); } else { request.RepsondHeader(404, "Not Found", "text/html", 0); request.End(); } } } }