35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ln.http.resources
|
|
{
|
|
public class ResourceApplication : HttpApplication
|
|
{
|
|
public Resource RootResource { get; set; }
|
|
|
|
public ResourceApplication()
|
|
{
|
|
RootResource = new BaseResource("");
|
|
}
|
|
|
|
public override HttpResponse GetResponse(HttpRequest httpRequest)
|
|
{
|
|
Resource currentResource = RootResource;
|
|
Queue<String> pathStack = new Queue<String>(httpRequest.URI.AbsolutePath.Split(new String[] { "/" }, StringSplitOptions.RemoveEmptyEntries));
|
|
|
|
while ((pathStack.Count > 0) && (!currentResource.HandlesDispatching))
|
|
{
|
|
String next = pathStack.Dequeue();
|
|
if (!currentResource.Contains(next))
|
|
{
|
|
currentResource = currentResource.GetFallBackResource();
|
|
break;
|
|
}
|
|
currentResource = currentResource.GetResource(next);
|
|
}
|
|
|
|
return currentResource.GetResponse(httpRequest,pathStack);
|
|
}
|
|
}
|
|
}
|