示例#1
0
        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() });
            }
        }