public HomeModule(IViewProjectionFactory viewFactory, ISpamShieldService spamShield, ICommandInvokerFactory commandInvokerFactory) : base(viewFactory) { _viewFactory = viewFactory; _commandInvokerFactory = commandInvokerFactory; Get["/"] = p => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = 1, Take = 10 }); Get["/page/{page:int}"] = p => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = p.page, Take = 10 }); Get["/tag/{Tag}"] = p => ReturnArticlesTaggedBy(new TaggedBlogPostsBindingModel() { Tag = p.tag }); Get[@"/(?<year>\d{4})/(?<month>0[1-9]|1[0-2])/(?<titleslug>[a-zA-Z0-9_-]+)"] = p => ReturnArticle(new BlogPostDetailsBindingModel { Permalink = p.titleslug }, spamShield);//TODO:需要增加对日期有效性的验证 Get[@"/(?<year>\d{4})/(?<month>0[1-9]|1[0-2])"] = p => { var input = new IntervalBlogPostsBindingModel { FromDate = new DateTime(p.year, p.month, 1) }; input.ToDate = input.FromDate.AddMonths(1); return ReturnArticles(input); }; Post["/spam/hash/{tick}"] = p => spamShield.GenerateHash(p.tick); Post["/comment/(?<titleslug>[a-zA-Z0-9_-]+)"] = p => ReturnAddComment(p); }
public HomeModule(IViewProjectionFactory viewFactory) : base(viewFactory) { Get["/"] = o => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = 1 }); Get["/page/{page?1}"] = o => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = o.page }); Get["/tagged/{Tag}"] = parameters => ReturnArticlesTaggedBy(new TaggedBlogPostsBindingModel() { Tag = parameters.tag }); Get["/{year}/{month}/{day}/{titleslug}"] = parameters => { if (Request.Url.Path.EndsWith("/")) { return(new RedirectResponse(Request.Url.Path.TrimEnd('/'), RedirectResponse.RedirectType.Permanent)); } return(ReturnArticle(new BlogPostDetailsBindingModel { Permalink = parameters .titleslug })); }; Get["/{year}/{month}/{day?}"] = parameters => { var day = parameters["day"] == null ? null : (int?)parameters.day; var input = new IntervalBlogPostsBindingModel { FromDate = new DateTime(parameters.year, parameters.month, parameters.day ?? 1) }; input.ToDate = day.HasValue ? input.FromDate.AddDays(1) : input.FromDate.AddMonths(1); return(ReturnArticles(input)); }; }
public HomeModule(IViewProjectionFactory viewFactory, ISpamShieldService spamShield, ICommandInvokerFactory commandInvokerFactory) : base(viewFactory) { _viewFactory = viewFactory; _commandInvokerFactory = commandInvokerFactory; Get["/"] = p => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = 1, Take = 10 }); Get["/page/{page:int}"] = p => ReturnHomeAction(new RecentBlogPostsBindingModel() { Page = p.page, Take = 10 }); Get["/tag/{Tag}"] = p => ReturnArticlesTaggedBy(new TaggedBlogPostsBindingModel() { Tag = p.tag }); Get[@"/(?<year>\d{4})/(?<month>0[1-9]|1[0-2])/(?<titleslug>[a-zA-Z0-9_-]+)"] = p => ReturnArticle(new BlogPostDetailsBindingModel { Permalink = p.titleslug }, spamShield); //TODO:需要增加对日期有效性的验证 Get[@"/(?<year>\d{4})/(?<month>0[1-9]|1[0-2])"] = p => { var input = new IntervalBlogPostsBindingModel { FromDate = new DateTime(p.year, p.month, 1) }; input.ToDate = input.FromDate.AddMonths(1); return(ReturnArticles(input)); }; Post["/spam/hash/{tick}"] = p => spamShield.GenerateHash(p.tick); Post["/comment/(?<titleslug>[a-zA-Z0-9_-]+)"] = p => ReturnAddComment(p); }
public Negotiator ReturnArticles(IntervalBlogPostsBindingModel input) { var model = _viewFactory.Get <IntervalBlogPostsBindingModel, IntervalBlogPostsViewModel>(input); return(View["Archive", model]); }
public Negotiator ReturnArticles(IntervalBlogPostsBindingModel input) { var model = _viewFactory.Get<IntervalBlogPostsBindingModel, IntervalBlogPostsViewModel>(input); return View["Archive", model]; }