예제 #1
0
파일: TasksController.cs 프로젝트: ksp/kurz
        public IActionResult Get()
        {
            string file = null;

            if (KspAuthCookie is object)
            {
                var user = KspAuthenticator.ParseAuthCookie(KspAuthCookie);
                file = TasksJsonFile("-" + user.Id.Value);
                if (!System.IO.File.Exists(file))
                {
                    file = null;
                }
            }

            file ??= TasksJsonFile("");

            return(this.PhysicalFile(file, "text/json"));
        }
예제 #2
0
        public async Task <IActionResult> Get()
        {
            var grafikPage = await System.IO.File.ReadAllTextAsync(Path.Combine(env.ContentRootPath, "../../frontend/public/grafik.html"));

            var p      = new AngleSharp.Html.Parser.HtmlParser();
            var grafik = p.ParseDocument(grafikPage);

            var kspTemplate = p.ParseDocument(await FetchBlankPage());

            pageRewriter.ModifyTree(kspTemplate, "kurz");

            var innerBody = grafik.Body;

            innerBody.Replace(kspTemplate.Body);
            var page = grafik.Body.QuerySelector("#page");

            page.InnerHtml = "";
            page.AppendNodes(innerBody.ChildNodes.ToArray());

            if (KspAuthCookie is object)
            {
                var user     = KspAuthenticator.ParseAuthCookie(KspAuthCookie);
                var metaUser = grafik.CreateElement("meta");
                metaUser.SetAttribute("name", "x-ksp-uid");
                metaUser.SetAttribute("content", user.Id.Value.ToString());
                grafik.Head.AppendChild(metaUser);
            }

            foreach (var headElement in kspTemplate.Head.QuerySelectorAll("link, script"))
            {
                headElement.RemoveFromParent();
                grafik.Head.AppendChild(headElement);
            }

            var outputHtml = new StringWriter();

            grafik.ToHtml(outputHtml, new PrettyMarkupFormatter()
            {
                Indentation = "\t", NewLine = "\n"
            });


            return(this.Content(outputHtml.ToString(), "text/html"));
        }