WIP
parent
a100bf3592
commit
92baad434c
|
@ -79,6 +79,9 @@ namespace ln.http.resources
|
||||||
|
|
||||||
switch (httpRequest.Method)
|
switch (httpRequest.Method)
|
||||||
{
|
{
|
||||||
|
case "GET":
|
||||||
|
responseValue = instance;
|
||||||
|
break;
|
||||||
case "PUT":
|
case "PUT":
|
||||||
JsonConvert.PopulateObject(httpRequest.ContentReader.ReadToEnd(), instance);
|
JsonConvert.PopulateObject(httpRequest.ContentReader.ReadToEnd(), instance);
|
||||||
bool updated = collection.Update(instance);
|
bool updated = collection.Update(instance);
|
||||||
|
|
|
@ -16,6 +16,7 @@ namespace ln.http.resources
|
||||||
public virtual DirectoryInfo DirectoryInfo { get; }
|
public virtual DirectoryInfo DirectoryInfo { get; }
|
||||||
|
|
||||||
protected Dictionary<string, Resource> cache = new Dictionary<string, Resource>();
|
protected Dictionary<string, Resource> cache = new Dictionary<string, Resource>();
|
||||||
|
protected Dictionary<string, Resource> injectedResources = new Dictionary<string, Resource>();
|
||||||
|
|
||||||
public DirectoryResource(String path)
|
public DirectoryResource(String path)
|
||||||
: base(System.IO.Path.GetFileName(path))
|
: base(System.IO.Path.GetFileName(path))
|
||||||
|
@ -40,6 +41,9 @@ namespace ln.http.resources
|
||||||
|
|
||||||
public override bool Contains(string name)
|
public override bool Contains(string name)
|
||||||
{
|
{
|
||||||
|
if (injectedResources.ContainsKey(name))
|
||||||
|
return true;
|
||||||
|
|
||||||
String cPath = GetCombinedPath(name);
|
String cPath = GetCombinedPath(name);
|
||||||
bool exists = File.Exists(cPath) || Directory.Exists(cPath);
|
bool exists = File.Exists(cPath) || Directory.Exists(cPath);
|
||||||
|
|
||||||
|
@ -60,11 +64,19 @@ namespace ln.http.resources
|
||||||
cache.Remove(resource.Name);
|
cache.Remove(resource.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void InjectResource(Resource resource)
|
||||||
|
{
|
||||||
|
injectedResources.Add(resource.Name, resource);
|
||||||
|
}
|
||||||
|
|
||||||
public override Resource GetResource(string name)
|
public override Resource GetResource(string name)
|
||||||
{
|
{
|
||||||
if (!Contains(name))
|
if (!Contains(name))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
if (injectedResources.ContainsKey(name))
|
||||||
|
return injectedResources[name];
|
||||||
|
|
||||||
if (cache.ContainsKey(name))
|
if (cache.ContainsKey(name))
|
||||||
return cache[name];
|
return cache[name];
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,9 @@ namespace ln.http.resources
|
||||||
public Resource(Resource container,String name)
|
public Resource(Resource container,String name)
|
||||||
:this(name)
|
:this(name)
|
||||||
{
|
{
|
||||||
container.AddResource(this);
|
if (container != null)
|
||||||
|
container.AddResource(this);
|
||||||
|
|
||||||
Container = container;
|
Container = container;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ namespace ln.http.resources
|
||||||
public Template Template { get; }
|
public Template Template { get; }
|
||||||
public object This { get; set; }
|
public object This { get; set; }
|
||||||
|
|
||||||
|
public override bool HandlesDispatching => true;
|
||||||
|
|
||||||
public TemplateResource(Resource container, string filename)
|
public TemplateResource(Resource container, string filename)
|
||||||
: base(container, System.IO.Path.GetFileName(filename))
|
: base(container, System.IO.Path.GetFileName(filename))
|
||||||
{
|
{
|
||||||
|
@ -42,12 +44,15 @@ namespace ln.http.resources
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override HttpResponse GetResponse(HttpRequest httpRequest)
|
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);
|
HttpResponse httpResponse = new HttpResponse(httpRequest);
|
||||||
|
|
||||||
Template.Context context = new Template.Context(Template);
|
Template.Context context = new Template.Context(Template);
|
||||||
context.ExpressionContext.AddMappedValue("__root__", Root);
|
context.ExpressionContext.AddMappedValue("__root__", Root);
|
||||||
|
context.ExpressionContext.AddMappedValue("__path__", suffixPath);
|
||||||
context.ExpressionContext.AddMappedValue("request", httpRequest);
|
context.ExpressionContext.AddMappedValue("request", httpRequest);
|
||||||
context.ExpressionContext.AddMappedValue("response", httpResponse);
|
context.ExpressionContext.AddMappedValue("response", httpResponse);
|
||||||
context.ExpressionContext.AddMappedValue("this", This);
|
context.ExpressionContext.AddMappedValue("this", This);
|
||||||
|
|
Loading…
Reference in New Issue