public static IHttpRequest CompileRequest <TResource>(this IQueryable <TResource> urlQuery, IHttpRequest relativeTo = default) { var baseUrl = BaseUrl(urlQuery); var httpRequest = new HttpRequest(baseUrl); return(urlQuery.Compile <IHttpRequest, IBuildHttpRequests>( httpRequest, (request, methodAttr, method, methodArguments) => { return methodAttr.MutateRequest(request, method, methodArguments); }, (request, method, methodArguments) => { if (method.Name == "Where") { var x = new ResourceQueryExtensions.BinaryComparisonQueryAttribute(); return x.MutateRequest(request, method, methodArguments); } throw new ArgumentException($"Cannot compile Method `{method.DeclaringType.FullName}..{method.Name}`"); })); }
public static Uri Location <TResource>(this IQueryable <TResource> urlQuery) { var baseUrl = BaseUrl(urlQuery); var queryUrl = urlQuery.Compile <Uri, IBuildUrls>( baseUrl, (url, attr, method, methodArguments) => { var updatedUrl = attr.BindUrlQueryValue(url, method, methodArguments); return(updatedUrl); }, (url, method, methodArguments) => { if (method.Name == "Where") { var x = new ResourceQueryExtensions.BinaryComparisonQueryAttribute(); return(x.BindUrlQueryValue(url, method, methodArguments)); } throw new ArgumentException($"Cannot compile Method `{method.DeclaringType.FullName}..{method.Name}`"); }); return(queryUrl); }