public ActionResult RedirectAction(string docId)
 {
     string fileName;
     if (!CheckRequest(docId, out fileName))
     {
         return View("Error");
     }
     Document doc = new Document("", "");
     doc.ReadXmlCompressed(fileName);
     string url = doc.Features.GetFeatureValue("responseUrl");
     if (url == null)
     {
         ViewBag.ErrorMessage = "Document URL not found.";
         ViewBag.Details = "Feature name: responseUrl";
         return View("Error");
     }
     return Redirect(url);
 }
 public ActionResult Html(string docId)
 {
     string xmlFileName, htmlFileName;
     if (!CheckRequest(docId, out xmlFileName) || !CheckRequest(docId, out htmlFileName, /*htmlFile=*/true))
     {
         return View("Error");
     }
     Document doc = new Document("", "");
     doc.ReadXmlCompressed(xmlFileName);
     string charSet = doc.Features.GetFeatureValue("charSet");
     byte[] bytes;
     using (FileStream stream = new FileStream(htmlFileName, FileMode.Open))
     {
         using (GZipStream gzStream = new GZipStream(stream, CompressionMode.Decompress))
         {
             bytes = gzStream.ReadAllBytes(/*sizeLimit=*/0);
         }
     }
     return File(bytes, "text/html; charset=" + charSet);
 }
 public ActionResult Text(string docId, bool? includeBoilerplate)
 {
     string fileName;
     if (!CheckRequest(docId, out fileName))
     {
         return View("Error");
     }
     if (!includeBoilerplate.HasValue)
     {
         includeBoilerplate = false;
     }
     Document doc = new Document("", "");
     doc.ReadXmlCompressed(fileName);
     StringBuilder txt = new StringBuilder();
     string selector = includeBoilerplate.Value ? "TextBlock" : "TextBlock/Content";
     foreach (TextBlock textBlock in doc.GetAnnotatedBlocks(selector))
     {
         txt.AppendLine(textBlock.Text);
     }
     return Content(txt.ToString(), "text/plain");
 }
 public ActionResult Xml(string docId)
 {
     string fileName;
     if (!CheckRequest(docId, out fileName))
     {
         return View("Error");
     }
     Document doc = new Document("", "");
     doc.ReadXmlCompressed(fileName);
     return Content(doc.GetXml(), "application/xml");
 }
 public ActionResult ViewAction(string docId)
 {
     string fileName;
     if (!CheckRequest(docId, out fileName))
     {
         return View("Error");
     }
     Document doc = new Document("", "");
     doc.ReadXmlCompressed(fileName);
     ArrayList<object> treeItems, features, content;
     DocumentSerializer.SerializeDocument(doc, out treeItems, out features, out content);
     // fill ViewBag
     ViewBag.Title = doc.Name;
     ViewBag.TreeItemsParam = treeItems;
     ViewBag.FeaturesParam = features;
     ViewBag.ContentParam = content;
     // render
     return View("View");
 }