ln.http.resources/ResourceApplication.cs

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);
}
}
}