Exemple #1
0
        /// <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);
 }