78 lines
2.0 KiB
C#
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();
|
|
}
|
|
|
|
|
|
}
|
|
}
|