public void Register() { Application.Current.Use(new HtmlFromJsonProvider()); Application.Current.Use(new PartialToStandaloneHtmlProvider()); Handle.GET("/WebsiteProvider", () => { return("Welcome to WebsiteProvider."); }); Handle.GET("/WebsiteProvider/partial/template/{?}", (string templateId) => { var page = new WebTemplatePage { Data = GetWebTemplate(templateId) }; InitializeTemplate(page); return(page); }); Handle.GET("/WebsiteProvider/partial/layout/{?}", (string templateId) => { WrapperPage page; if (Session.Current != null) { page = Session.Current.Data as WrapperPage; var sessionWebTemplate = page?.WebTemplatePage.Data; if (sessionWebTemplate != null) { var webTemplate = GetWebTemplate(templateId); if (sessionWebTemplate.Equals(webTemplate)) { return(page); } } } else { Session.Current = new Session(SessionOptions.PatchVersioning); } page = new WrapperPage { Session = Session.Current }; if (page.Session.PublicViewModel != page) { page.Session.PublicViewModel = page; } return(page); }); Handle.GET("/WebsiteProvider/partial/wrapper?uri={?}&response={?}", (string requestUri, string responseKey) => { Response currentResponse = ResponseStorage.Get(responseKey); WebUrl webUrl = this.GetWebUrl(requestUri); WebTemplate template = webUrl?.Template; if (template == null) { throw new Exception("Default template is missing"); } WrapperPage master = GetLayoutPage(template); master.IsFinal = webUrl.IsFinal || string.IsNullOrEmpty(webUrl.Url); if (!template.Equals(master.WebTemplatePage.Data)) { master.WebTemplatePage = GetTemplatePage(template.GetObjectID()); } UpdateTemplateSections(requestUri, currentResponse, master.WebTemplatePage, webUrl); return(master); }); RegisterFilter(); }
protected WrapperPage GetLayoutPage(WebTemplate template) { return(Self.GET <WrapperPage>("/WebsiteProvider/partial/layout/" + template.GetObjectID())); }