/// <summary> /// Test method to call constraint.Match using the proper arguments for each platform. /// </summary> /// <param name="constraint">The constraint object.</param> /// <param name="versionRequest">The abstracted request.</param> /// <param name="direction">The abstracted route direction.</param> /// <returns>Result from constraint.Match,</returns> private bool ConstraintMatch(ODataVersionConstraint constraint, TestVersionRequest versionRequest, RouteDirection direction) { #if NETCORE AspNetCore.Http.HttpContext context = new AspNetCore.Http.DefaultHttpContext(); AspNetCore.Http.HttpRequest request = context.Request; foreach (KeyValuePair <string, string> kvp in versionRequest.Headers) { request.Headers.Add(kvp.Key, kvp.Value); } System.Uri requestUri = new System.Uri(versionRequest.Uri); request.Method = versionRequest.Method.ToString(); request.Host = new AspNetCore.Http.HostString(requestUri.Host, requestUri.Port); request.Scheme = requestUri.Scheme; AspNetCore.Routing.RouteDirection routeDirection = (direction == RouteDirection.UriResolution) ? AspNetCore.Routing.RouteDirection.IncomingRequest : AspNetCore.Routing.RouteDirection.UrlGeneration; return(constraint.Match(context, null, null, null, routeDirection)); #else HttpRequestMessage request = new HttpRequestMessage(versionRequest.Method, versionRequest.Uri); foreach (KeyValuePair <string, string> kvp in versionRequest.Headers) { request.Headers.TryAddWithoutValidation(kvp.Key, kvp.Value); } System.Web.Http.Routing.HttpRouteDirection routeDirection = (direction == RouteDirection.UriResolution) ? System.Web.Http.Routing.HttpRouteDirection.UriResolution : System.Web.Http.Routing.HttpRouteDirection.UriGeneration; return(constraint.Match(request, null, null, null, routeDirection)); #endif }
public bool Match(HttpRequestMessage request, System.Web.Http.Routing.IHttpRoute route, string parameterName, IDictionary <string, object> values, System.Web.Http.Routing.HttpRouteDirection routeDirection) { if (routeDirection == System.Web.Http.Routing.HttpRouteDirection.UriResolution) { string version = GetApiKey(request) ?? DefaultApiKey; if (!AllowedHeaderKeys.Contains(version)) { throw new Core.Exceptions.Profile.InvalidApiKeyException("Invalid API Key Detected"); } } return(true); }