ln.http.resources/BaseResource.cs

78 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace ln.http.resources
{
public class BaseResource : Resource
{
Dictionary<string, Resource> resources = new Dictionary<string, Resource>();
public BaseResource(String name)
:base(name)
{
}
public BaseResource(Resource container,String name)
:base(container,name)
{
}
public override bool Contains(String name)
{
return resources.ContainsKey(name);
}
public override bool Contains(Resource resource)
{
return resources.ContainsValue(resource);
}
public override void AddResource(Resource resource)
{
this.resources.Add(resource.Name, resource);
}
public override void RemoveResource(Resource resource)
{
if (resource.Container != this)
throw new ArgumentOutOfRangeException("can't remove resource from foreign container");
this.resources.Remove(resource.Name);
}
public override Resource GetResource(string name)
{
if (this.resources.ContainsKey(name))
return this.resources[name];
return GetFallBackResource();
}
public override IEnumerable<Resource> GetResources()
{
return this.resources.Values;
}
public override IEnumerable<Resource> GetResources(Type resourceType)
{
return this.resources.Values.Where((x) => resourceType.IsInstanceOfType(x));
}
public virtual Resource CreateResource(string name)
{
throw new NotImplementedException();
}
public override HttpResponse GetResponse(HttpRequest httpRequest)
{
if (DefaultResource != null)
return httpRequest.Redirect(String.Join("/", DefaultResource.Path));
throw new NotImplementedException();
}
}
}