|
@@ -1,12 +1,14 @@
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Threading.Tasks;
|
|
|
using System.Linq;
|
|
|
+using System.Web;
|
|
|
|
|
|
using GenHTTP.Api.Content;
|
|
|
using GenHTTP.Api.Content.Templating;
|
|
|
using GenHTTP.Api.Protocol;
|
|
|
|
|
|
using GenHTTP.Modules.IO;
|
|
|
-using GenHTTP.Modules.Scriban;
|
|
|
+using GenHTTP.Modules.Razor;
|
|
|
|
|
|
using Benchmarks.Model;
|
|
|
|
|
@@ -27,32 +29,32 @@ namespace Benchmarks.Tests
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
- public class FortuneHandler : IHandler, IPageRenderer
|
|
|
- {
|
|
|
+ #region Supporting data structures
|
|
|
|
|
|
- #region Get-/Setters
|
|
|
+ public sealed class FortuneModel : PageModel
|
|
|
+ {
|
|
|
|
|
|
- public IHandler Parent { get; }
|
|
|
+ public List<Fortune> Cookies { get; }
|
|
|
|
|
|
- private IHandler Page { get; }
|
|
|
+ public FortuneModel(IRequest request, IHandler handler, List<Fortune> cookies) : base(request, handler)
|
|
|
+ {
|
|
|
+ Cookies = cookies;
|
|
|
+ }
|
|
|
|
|
|
- private IRenderer<TemplateModel> Template { get; }
|
|
|
+ }
|
|
|
|
|
|
- #endregion
|
|
|
+ #endregion
|
|
|
|
|
|
- #region Supporting data structures
|
|
|
+ public class FortuneHandler : IHandler, IPageRenderer
|
|
|
+ {
|
|
|
|
|
|
- public class FortuneModel : PageModel
|
|
|
- {
|
|
|
+ #region Get-/Setters
|
|
|
|
|
|
- public List<Fortune> Cookies { get; }
|
|
|
+ public IHandler Parent { get; }
|
|
|
|
|
|
- public FortuneModel(IRequest request, IHandler handler, List<Fortune> cookies) : base(request, handler)
|
|
|
- {
|
|
|
- Cookies = cookies;
|
|
|
- }
|
|
|
+ private IHandler Page { get; }
|
|
|
|
|
|
- }
|
|
|
+ private IRenderer<TemplateModel> Template { get; }
|
|
|
|
|
|
#endregion
|
|
|
|
|
@@ -62,31 +64,33 @@ namespace Benchmarks.Tests
|
|
|
{
|
|
|
Parent = parent;
|
|
|
|
|
|
- Page = ModScriban.Page(Data.FromResource("Fortunes.html"), (r, h) => GetFortunes(r, h))
|
|
|
- .Title("Fortunes")
|
|
|
- .Build(this);
|
|
|
+ Page = ModRazor.Page(Resource.FromAssembly("Fortunes.html"), (r, h) => GetFortunes(r, h))
|
|
|
+ .Title("Fortunes")
|
|
|
+ .AddAssemblyReference<HttpUtility>()
|
|
|
+ .AddUsing("System.Web")
|
|
|
+ .Build(this);
|
|
|
|
|
|
- Template = ModScriban.Template<TemplateModel>(Data.FromResource("Template.html")).Build();
|
|
|
+ Template = ModRazor.Template<TemplateModel>(Resource.FromAssembly("Template.html")).Build();
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region Functionality
|
|
|
|
|
|
- public IResponse Handle(IRequest request) => Page.Handle(request);
|
|
|
+ public ValueTask<IResponse> HandleAsync(IRequest request) => Page.HandleAsync(request);
|
|
|
|
|
|
public IEnumerable<ContentElement> GetContent(IRequest request) => Enumerable.Empty<ContentElement>();
|
|
|
|
|
|
- public IResponseBuilder Render(TemplateModel model)
|
|
|
+ public async ValueTask<IResponseBuilder> RenderAsync(TemplateModel model)
|
|
|
{
|
|
|
return model.Request.Respond()
|
|
|
- .Content(Template.Render(model))
|
|
|
+ .Content(await Template.RenderAsync(model))
|
|
|
.Header("Content-Type", "text/html; charset=utf-8");
|
|
|
}
|
|
|
|
|
|
private FortuneModel GetFortunes(IRequest request, IHandler handler)
|
|
|
{
|
|
|
- using var context = DatabaseContext.Create();
|
|
|
+ using var context = DatabaseContext.CreateNoTracking();
|
|
|
|
|
|
var fortunes = context.Fortune.ToList();
|
|
|
|