void HandleRequest(HttpListenerContext context) { try { HttpListenerRequest request = context.Request; NameValueCollection parameters = ParseRequest(request); switch (request.HttpMethod + ":" + request.Url.AbsolutePath) { case "GET:/": context.SendFile("index.html"); break; case "GET:/open": var projectTree = new FileSystemEntry(parameters["directory"].Trim()); context.SendJsonResponse(projectTree); break; case "GET:/load": context.SendFile(parameters["filepath"]); this.ui.Title = "SimpleDevelop - " + Path.GetFileName(parameters["filepath"]); break; case "POST:/save": File.WriteAllText(parameters["filepath"], parameters["code"]); this.ui.Title = "SimpleDevelop - " + Path.GetFileName(parameters["filepath"]); context.Ok(); break; case "POST:/compile": this.compiler.ExecuteWithCallback(parameters["code"], output => { context.SendTextResponse(output, null); }); break; case "POST:/complete": SendCompletionData(context, parameters); break; case "POST:/parse": this.completionHelper.ProcessCode(parameters["code"]); if (!this.ui.Title.EndsWith("*")) { this.ui.Title += "*"; } context.Ok(); break; case "POST:/exit": Stop(); break; default: context.SendAsset(GetFileName(context.Request.Url.AbsolutePath)); break; } } catch (Exception ex) { context.SendJsonResponse(new { Error = ex.ToString() }); } }