IEnumerator CoProcessFileGet(HttpListenerContext context, string path) { var request = context.Request; Debug.Assert(request.HttpMethod == "GET"); var ret = new CoroutineReturnValue <string>(); yield return(DebugServerUtil.CoLoad(ret, path, overrideEnabled: true)); var response = context.Response; if (ret.Exception != null) { response.StatusCode = (int)HttpStatusCode.InternalServerError; response.Close(); } else { var ext = System.IO.Path.GetExtension(path); var isText = (ext == ".txt") || (ext == ".json") || (ext == ".html") || (ext == ".htm") || (ext == ".xml") || (ext == ".yaml") || (ext == ".csv"); var sb = new StringBuilder(); var writer = HtmlUtil.CreateWriter(sb); var title = path; HtmlUtil.WriteHeader(writer, title); writer.WriteStartElement("body"); writer.WriteElementString("h1", title); if (isText) { HtmlUtil.WriteTextarea(writer, "text", 20, 60, ret.Value); HtmlUtil.WriteBr(writer); HtmlUtil.WriteInput(writer, "update", "button", "submit"); } HtmlUtil.WriteInput(writer, "delete", "button", "delete file"); HtmlUtil.WriteBr(writer); HtmlUtil.WriteInput(writer, "file", "file"); HtmlUtil.WriteInput(writer, "upload", "button", "upload file"); HtmlUtil.WriteBr(writer); HtmlUtil.WriteOutput(writer, "log"); writer.WriteStartElement("script"); writer.WriteString(fileGetScript); writer.WriteEndElement(); //script writer.WriteEndElement(); //body writer.WriteEndElement(); //html writer.Close(); var html = sb.ToString(); var bytes = Encoding.UTF8.GetBytes(html); response.Close(bytes, willBlock: false); } }