internal static string GetAllowedMethods(DataServiceConfiguration configuration, RequestDescription description) { if ((description.TargetKind == RequestTargetKind.Metadata) || (description.TargetKind == RequestTargetKind.ServiceDirectory)) { return("GET"); } if (description.TargetKind == RequestTargetKind.Batch) { return("POST"); } int indexOfTargetEntityResource = description.GetIndexOfTargetEntityResource(); ResourceSetWrapper targetContainer = description.SegmentInfos[indexOfTargetEntityResource].TargetContainer; return(GetAllowedMethods(configuration, targetContainer, description)); }
private static void InvokeRequestExpression(RequestDescription description, IDataService service) { HttpVerbs httpVerb = service.OperationContext.Host.HttpVerb; bool flag = (httpVerb == HttpVerbs.POST) && (description.TargetSource == RequestTargetSource.ServiceOperation); if ((httpVerb == HttpVerbs.GET) || flag) { System.Data.Services.SegmentInfo lastSegmentInfo = description.LastSegmentInfo; if ((httpVerb == HttpVerbs.GET) && (description.TargetSource == RequestTargetSource.Property)) { lastSegmentInfo = description.SegmentInfos[description.GetIndexOfTargetEntityResource()]; } if ((lastSegmentInfo.RequestExpression != null) && (lastSegmentInfo.RequestEnumerable == null)) { lastSegmentInfo.RequestEnumerable = service.ExecutionProvider.GetResultEnumerableFromRequest(lastSegmentInfo); } } }
internal static string GetAllowedMethods(DataServiceConfiguration configuration, RequestDescription description) { if ((description.TargetKind == RequestTargetKind.Metadata) || (description.TargetKind == RequestTargetKind.ServiceDirectory)) { return "GET"; } if (description.TargetKind == RequestTargetKind.Batch) { return "POST"; } int indexOfTargetEntityResource = description.GetIndexOfTargetEntityResource(); ResourceSetWrapper targetContainer = description.SegmentInfos[indexOfTargetEntityResource].TargetContainer; return GetAllowedMethods(configuration, targetContainer, description); }
/// <summary>Gets a string with methods allowed on the target for the <paramref name="description"/>.</summary> /// <param name="configuration">configuration object which has the data</param> /// <param name="description">Description with target.</param> /// <returns>A string with methods allowed on the description; possibly null.</returns> internal static string GetAllowedMethods(DataServiceConfiguration configuration, RequestDescription description) { Debug.Assert(description != null, "description != null"); Debug.Assert( description.TargetKind != RequestTargetKind.Nothing, "description.TargetKind != RequestTargetKind.Void - otherwise it hasn't been determined yet"); Debug.Assert( description.TargetKind != RequestTargetKind.VoidServiceOperation, "description.TargetKind != RequestTargetKind.VoidServiceOperation - this method is only for containers"); if (description.TargetKind == RequestTargetKind.Metadata || description.TargetKind == RequestTargetKind.ServiceDirectory) { return XmlConstants.HttpMethodGet; } else if (description.TargetKind == RequestTargetKind.Batch) { return XmlConstants.HttpMethodPost; } else { int index = description.GetIndexOfTargetEntityResource(); Debug.Assert(index >= 0 && index < description.SegmentInfos.Length, "index >=0 && index <description.SegmentInfos.Length"); ResourceSetWrapper container = description.SegmentInfos[index].TargetContainer; return GetAllowedMethods(configuration, container, description); } }