Exemple #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() });
            }
        }
Exemple #2
0
 void SendCompletionData(HttpListenerContext context, NameValueCollection parameters)
 {
     dynamic data = JsonConvert.DeserializeObject(parameters["data"]);
     IList<CompletionData> completionData = this.completionHelper.GetCompletionData((string)data.token, (int)data.line, (int)data.col);
     context.SendJsonResponse(new { Items = completionData });
 }