/// <summary> /// Creates a new resource demand /// </summary> /// <param name="capability"></param> /// <param name="demand"></param> public ServiceResourceCapability(ResourceCapabilityType capability, String[] demand) { this.Capability = capability; this.Demand = demand; }
/// <summary> /// Conver the ResourceCapbility into a collection of service metadata capapbilities /// </summary> /// <param name="me">The resource capability type to convert</param> /// <param name="getDemandsFunc">A callback which fetches the policies the resource requires.</param> /// <returns>The collection of metadata capabilities to pass to the OPTIONS call</returns> public static IEnumerable <ServiceResourceCapability> ToResourceCapabilityStatement(this ResourceCapabilityType me, Func <ResourceCapabilityType, String[]> getDemandsFunc) { var caps = new List <ServiceResourceCapability>(); if (me.HasFlag(ResourceCapabilityType.Create)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.Create, getDemandsFunc(ResourceCapabilityType.Create))); } if (me.HasFlag(ResourceCapabilityType.CreateOrUpdate)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.CreateOrUpdate, getDemandsFunc(ResourceCapabilityType.CreateOrUpdate))); } if (me.HasFlag(ResourceCapabilityType.Delete)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.Delete, getDemandsFunc(ResourceCapabilityType.Delete))); } if (me.HasFlag(ResourceCapabilityType.Get)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.Get, getDemandsFunc(ResourceCapabilityType.Get))); } if (me.HasFlag(ResourceCapabilityType.GetVersion)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.GetVersion, getDemandsFunc(ResourceCapabilityType.GetVersion))); } if (me.HasFlag(ResourceCapabilityType.History)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.History, getDemandsFunc(ResourceCapabilityType.History))); } if (me.HasFlag(ResourceCapabilityType.Search)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.Search, getDemandsFunc(ResourceCapabilityType.Search))); } if (me.HasFlag(ResourceCapabilityType.Update)) { caps.Add(new ServiceResourceCapability(ResourceCapabilityType.Update, getDemandsFunc(ResourceCapabilityType.Update))); } return(caps); }