using System; using System.Collections.Generic; using System.Linq; namespace ln.http.resources { public class BaseResource : Resource { Dictionary resources = new Dictionary(); 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 GetResources() { return this.resources.Values; } public override IEnumerable 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(); } } }