42 lines
1.1 KiB
C#
42 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using appsrv.resources;
|
|
using System.Linq;
|
|
namespace appsrv.server
|
|
{
|
|
public class ApplicationServer
|
|
{
|
|
public Resource DefaultRoot { get; set; }
|
|
|
|
|
|
Dictionary<String, Resource> roots = new Dictionary<string, Resource>();
|
|
|
|
public ApplicationServer()
|
|
{
|
|
}
|
|
|
|
public void AddRoot(String name,Resource rootResource){
|
|
roots.Add(name, rootResource);
|
|
if (DefaultRoot == null){
|
|
DefaultRoot = rootResource;
|
|
}
|
|
}
|
|
|
|
public Resource FindRoot(String rootName)
|
|
{
|
|
if (roots.ContainsKey(rootName))
|
|
return roots[rootName];
|
|
|
|
return DefaultRoot;
|
|
}
|
|
|
|
public void HandleRequest(HttpRequest request){
|
|
Resource rootResource = FindRoot(request.Hostname);
|
|
Stack<String> requestPath = new Stack<string>(request.URI.AbsolutePath.Split(new char[] { '/' },StringSplitOptions.RemoveEmptyEntries).Reverse());
|
|
|
|
rootResource.Request(requestPath, request);
|
|
}
|
|
|
|
}
|
|
}
|