70 lines
2.3 KiB
C#
70 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using ln.http.resources;
|
|
using ln.http;
|
|
using ln.templates;
|
|
|
|
namespace ln.http.resources
|
|
{
|
|
public class TemplateResource : Resource
|
|
{
|
|
public Template Template { get; }
|
|
public object This { get; set; }
|
|
|
|
public override bool HandlesDispatching => true;
|
|
|
|
public TemplateResource(Resource container, string filename)
|
|
: base(container, System.IO.Path.GetFileName(filename))
|
|
{
|
|
Template = new Template(filename, (container as TemplateProvider));
|
|
}
|
|
public TemplateResource(Resource container, string filename,object This)
|
|
:this(container,filename)
|
|
{
|
|
this.This = This;
|
|
}
|
|
|
|
public override IEnumerable<Resource> GetResources()
|
|
{
|
|
return new Resource[0];
|
|
}
|
|
|
|
public override bool Contains(string name)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public override void AddResource(Resource resource)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override void RemoveResource(Resource resource)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override HttpResponse GetResponse(HttpRequest httpRequest, Queue<string> pathStack) => GetResponse(httpRequest, pathStack.ToArray());
|
|
public override HttpResponse GetResponse(HttpRequest httpRequest) => GetResponse(httpRequest,new string[0]);
|
|
public HttpResponse GetResponse(HttpRequest httpRequest,string[] suffixPath)
|
|
{
|
|
HttpResponse httpResponse = new HttpResponse(httpRequest);
|
|
|
|
Template.Context context = new Template.Context(Template);
|
|
context.ExpressionContext.AddMappedValue("__root__", Root);
|
|
context.ExpressionContext.AddMappedValue("__path__", suffixPath);
|
|
context.ExpressionContext.AddMappedValue("request", httpRequest);
|
|
context.ExpressionContext.AddMappedValue("response", httpResponse);
|
|
context.ExpressionContext.AddMappedValue("this", This);
|
|
|
|
bool unframed = httpRequest.GetRequestHeader("x-template-unframed", "framed").Equals("unframed");
|
|
|
|
httpResponse.ContentWriter.Write(Template.Generate(context,unframed));
|
|
|
|
return httpResponse;
|
|
}
|
|
}
|
|
|
|
|
|
}
|