コード例 #1
0
 private async Task WriteToStream(Stream outputStream, IViewEngine viewEngine, IPageViewDefinition viewDefinition)
 {
     using (var writer = new StreamWriter(outputStream))
     {
         SourceLocation errorLocation = null;
         Exception error = null;
         try
         {
             viewDefinition.Render(viewEngine, writer);
         }
         catch (VeilParserException ex)
         {
             error = ex;
             errorLocation = ex.Location;
         }
         catch (VeilCompilerException ex)
         {
             error = ex;
             errorLocation = ex.Node.Location;
         }
         catch (Exception ex)
         {
             error = ex;
         }
         
         if (error != null)
             await GetErrorPage(writer, error, errorLocation).ConfigureAwait(false);
     }
 }
コード例 #2
0
 private async Task WritePageDefinition(IPageViewDefinition viewDefinition, PathInfo fileName)
 {
     using (var stream = new StreamWriter(_fileSystem.OpenWrite(fileName)))
     {
         var value = JsonConvert.SerializeObject(viewDefinition, Formatting.Indented);
         await stream.WriteAsync(value).ConfigureAwait(false);
     }
 }
コード例 #3
0
        public async Task<bool> UpdateViewDefinitionForId(string id, IPageViewDefinition viewDefinition)
        {
            var fileId = PathInfo.Create(id);
            if (!_fileSystem.FileExists(fileId)) 
                return false;

            await WritePageDefinition(viewDefinition, fileId).ConfigureAwait(false);
            return true;
        }
コード例 #4
0
 protected HttpResponseMessage View(IViewEngine viewEngine, IPageViewDefinition siteDefinition)
 {
     var message = new HttpResponseMessage(HttpStatusCode.OK)
     {
         Content =
             new PushStreamContent((o, c, t) => WriteToStream(o, viewEngine, siteDefinition),
                 new MediaTypeHeaderValue("text/html"))
     };
     return message;
 }
コード例 #5
0
        protected HttpResponseMessage View(IViewEngine viewEngine, IPageViewDefinition siteDefinition)
        {
            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content =
                    new PushStreamContent((o, c, t) => WriteToStream(o, viewEngine, siteDefinition),
                                          new MediaTypeHeaderValue("text/html"))
            };

            return(message);
        }
コード例 #6
0
        public bool TryGetFromViewId(string id, out IPageViewDefinition viewDefinition)
        {
            var fileId = PathInfo.Create(id);
            if (_fileSystem.FileExists(fileId))
            {
                if (TryReadPageDefinition(out viewDefinition, fileId))
                    return true;
            }

            viewDefinition = null;
            return false;
        }
コード例 #7
0
        public bool TryGetFromView(string path, out IPageViewDefinition viewDefinition)
        {
            var fileName = _fileSystem.Path.ChangeExtension(_fileSystem.Path.Combine(_viewPathInfo, PathInfo.Create(path)), "html.json");
            if (_fileSystem.FileExists(fileName))
            {
                if (TryReadPageDefinition(out viewDefinition, fileName)) 
                    return true;
            }

            viewDefinition = null;
            return false;
        }
コード例 #8
0
        public async Task <bool> UpdateViewDefinitionForId(string id, IPageViewDefinition viewDefinition)
        {
            var fileId = PathInfo.Create(id);

            if (!_fileSystem.FileExists(fileId))
            {
                return(false);
            }

            await WritePageDefinition(viewDefinition, fileId).ConfigureAwait(false);

            return(true);
        }
コード例 #9
0
        private static TemplateItemModel GetViews(string section, IPageViewDefinition pageViewDefinition)
        {
            var schemaUrl   = "/web/viewdefinition_schema.json";
            var dataUrl     = string.Format("/{0}model/{1}", section, pageViewDefinition.Id);
            var templateUrl = string.Format("/{0}{1}", section, pageViewDefinition.Id);

            return(new TemplateItemModel
            {
                Text = pageViewDefinition.Id,
                Url = string.Format("/web/module?id={0}&app={1}", pageViewDefinition.Id, section),
                EditUrl = string.Format("/web/edit?schema={0}&data={1}&template={2}&id={4}&app={3}", schemaUrl, dataUrl, templateUrl, section, pageViewDefinition.Id),
                PageEditUrl = string.Format("/web/page_edit?id={0}&app={1}", pageViewDefinition.Id, section)
            });
        }
コード例 #10
0
        private bool TryReadPageDefinition(out IPageViewDefinition viewDefinition, PathInfo fileName)
        {
            using (var reader = new JsonTextReader(new StreamReader(_fileSystem.OpenRead(fileName))))
            {
                viewDefinition = Deserialize(reader);

                if (viewDefinition == null)
                    return false;

                viewDefinition.Id = fileName.ToString();

                return true;
            }
        }
コード例 #11
0
ファイル: HomeController.cs プロジェクト: namics/TerrificNet
        private static TemplateItemModel GetViews(string section, IPageViewDefinition pageViewDefinition)
        {
            var schemaUrl = "/web/viewdefinition_schema.json";
            var dataUrl = string.Format("/{0}model/{1}", section, pageViewDefinition.Id);
            var templateUrl = string.Format("/{0}{1}", section, pageViewDefinition.Id);

            return new TemplateItemModel
            {
                Text = pageViewDefinition.Id,
                Url = string.Format("/web/module?id={0}&app={1}", pageViewDefinition.Id, section),
                EditUrl = string.Format("/web/edit?schema={0}&data={1}&template={2}&id={4}&app={3}", schemaUrl, dataUrl, templateUrl, section, pageViewDefinition.Id),
                PageEditUrl = string.Format("/web/page_edit?id={0}&app={1}", pageViewDefinition.Id, section)
            };
        }
コード例 #12
0
        public bool TryGetFromViewId(string id, out IPageViewDefinition viewDefinition)
        {
            var fileId = PathInfo.Create(id);

            if (_fileSystem.FileExists(fileId))
            {
                if (TryReadPageDefinition(out viewDefinition, fileId))
                {
                    return(true);
                }
            }

            viewDefinition = null;
            return(false);
        }
コード例 #13
0
        public bool TryGetFromView(string path, out IPageViewDefinition viewDefinition)
        {
            var fileName = _fileSystem.Path.ChangeExtension(_fileSystem.Path.Combine(_viewPathInfo, PathInfo.Create(path)), "html.json");

            if (_fileSystem.FileExists(fileName))
            {
                if (TryReadPageDefinition(out viewDefinition, fileName))
                {
                    return(true);
                }
            }

            viewDefinition = null;
            return(false);
        }
コード例 #14
0
        private bool TryReadPageDefinition(out IPageViewDefinition viewDefinition, PathInfo fileName)
        {
            using (var reader = new JsonTextReader(new StreamReader(_fileSystem.OpenRead(fileName))))
            {
                viewDefinition = Deserialize(reader);

                if (viewDefinition == null)
                {
                    return(false);
                }

                viewDefinition.Id = fileName.ToString();

                return(true);
            }
        }
コード例 #15
0
        private static async Task <string> CreateSiteHtml(IView view, IPageViewDefinition siteDefinition)
        {
            var pageHtmlBuilder = new StringBuilder();

            using (var writer = new StringWriter(pageHtmlBuilder))
            {
                var context = new RenderingContext(writer);
                context.Data.Add("pageEditor", true);
                context.Data.Add("siteDefinition", siteDefinition);

                view.Render(JObject.FromObject(siteDefinition), context);
            }

            var html = pageHtmlBuilder.ToString();

            html = html.Replace("<!DOCTYPE html>", "").Replace("<html>", "").Replace("</html>", "");
            html = new Regex("<head>(.*)</head>", RegexOptions.Singleline).Replace(html, "");
            html = new Regex("<script( src[=]\".*\")?>(.*)</script>", RegexOptions.Singleline).Replace(html, "");

            return(html);
        }
コード例 #16
0
        private async Task WriteToStream(Stream outputStream, IViewEngine viewEngine, IPageViewDefinition viewDefinition)
        {
            using (var writer = new StreamWriter(outputStream))
            {
                SourceLocation errorLocation = null;
                Exception      error         = null;
                try
                {
                    viewDefinition.Render(viewEngine, writer);
                }
                catch (VeilParserException ex)
                {
                    error         = ex;
                    errorLocation = ex.Location;
                }
                catch (VeilCompilerException ex)
                {
                    error         = ex;
                    errorLocation = ex.Node.Location;
                }
                catch (Exception ex)
                {
                    error = ex;
                }

                if (error != null)
                {
                    await GetErrorPage(writer, error, errorLocation).ConfigureAwait(false);
                }
            }
        }
コード例 #17
0
        private static async Task<string> CreateSiteHtml(IView view, IPageViewDefinition siteDefinition)
		{
			var pageHtmlBuilder = new StringBuilder();
			using (var writer = new StringWriter(pageHtmlBuilder))
			{
				var context = new RenderingContext(writer);
				context.Data.Add("pageEditor", true);
				context.Data.Add("siteDefinition", siteDefinition);

				view.Render(JObject.FromObject(siteDefinition), context);
			}

			var html = pageHtmlBuilder.ToString();

			html = html.Replace("<!DOCTYPE html>", "").Replace("<html>", "").Replace("</html>", "");
			html = new Regex("<head>(.*)</head>", RegexOptions.Singleline).Replace(html, "");
			html = new Regex("<script( src[=]\".*\")?>(.*)</script>", RegexOptions.Singleline).Replace(html, "");

			return html;
		}
コード例 #18
0
 private HttpResponseMessage Get(IPageViewDefinition data)
 {
     return(View(_viewEngine, data));
 }
コード例 #19
0
 private async Task WritePageDefinition(IPageViewDefinition viewDefinition, PathInfo fileName)
 {
     using (var stream = new StreamWriter(_fileSystem.OpenWrite(fileName)))
     {
         var value = JsonConvert.SerializeObject(viewDefinition, Formatting.Indented);
         await stream.WriteAsync(value).ConfigureAwait(false);
     }
 }
コード例 #20
0
 private HttpResponseMessage Get(IPageViewDefinition data)
 {
     return View(_viewEngine, data);
 }