/// <summary> /// This method must be used inside CacheKeyGenerator /// </summary> /// <param name="request"></param> /// <returns></returns> public virtual string GetRoutePattern(HttpRequestMessage request) { var routeData = request.GetRouteData(); if (routeData == null) routeData = _configuration.Routes.GetRouteData(request); if(routeData == null) return GetDefaultRoutePattern(request); var routeInfo = new RouteInfo(routeData.Route); // deal with no parameters if (routeInfo.Parameters.Count == 0) return GetDefaultRoutePattern(request); // deal with catchall if (routeInfo.Parameters.Any(x => x.IsCatchAll)) return GetDefaultRoutePattern(request); if (routeInfo.IsCollection(routeData)) { return routeInfo.BuildCollectionPattern( routeData); } else { return routeInfo.BuildInstancePattern(request.RequestUri, routeData); } }
/// <summary> /// This method must be set to LinkedRoutePatternProvider of CachingHandler /// </summary> /// <param name="message"></param> /// <returns>All linked route patterns</returns> public virtual IEnumerable <string> GetLinkedRoutePatterns(HttpRequestMessage request) { var routeData = request.GetRouteData(); if (routeData == null) { return(new string[0]); } var routeInfo = new RouteInfo(routeData.Route); // deal with no parameters if (routeInfo.Parameters.Count == 0) { return(new string[0]); } // deal with catchall if (routeInfo.Parameters.Any(x => x.IsCatchAll)) { return(new string[0]); } var linkedRoutePatterns = new List <string>(); linkedRoutePatterns.Add(routeInfo.GetRoot(routeData)); if (!routeInfo.IsCollection(routeData)) { linkedRoutePatterns.Add(routeInfo.BuildCollectionPattern(routeData)); } return(linkedRoutePatterns); }
/// <summary> /// This method must be set to LinkedRoutePatternProvider of CachingHandler /// </summary> /// <param name="message"></param> /// <returns>All linked route patterns</returns> public virtual IEnumerable<string> GetLinkedRoutePatterns(HttpRequestMessage request) { var routeData = request.GetRouteData(); if (routeData == null) return new string[0]; var routeInfo = new RouteInfo(routeData.Route); // deal with no parameters if (routeInfo.Parameters.Count == 0) return new string[0]; // deal with catchall if (routeInfo.Parameters.Any(x => x.IsCatchAll)) return new string[0]; var linkedRoutePatterns = new List<string>(); if (!routeInfo.IsCollection(routeData)) { linkedRoutePatterns.Add(routeInfo.BuildCollectionPattern(request.RequestUri, routeData)); } return linkedRoutePatterns; }
/// <summary> /// This method must be used inside CacheKeyGenerator /// </summary> /// <param name="request"></param> /// <returns></returns> public virtual string GetRoutePattern(HttpRequestMessage request) { var routeData = request.GetRouteData(); if (routeData == null) { routeData = _configuration.Routes.GetRouteData(request); } if (routeData == null) { return(GetDefaultRoutePattern(request)); } var routeInfo = new RouteInfo(routeData.Route); // deal with no parameters if (routeInfo.Parameters.Count == 0) { return(GetDefaultRoutePattern(request)); } // deal with catchall if (routeInfo.Parameters.Any(x => x.IsCatchAll)) { return(GetDefaultRoutePattern(request)); } if (routeInfo.IsCollection(routeData)) { return(routeInfo.BuildCollectionPattern(routeData)); } else { return(routeInfo.BuildInstancePattern(request.RequestUri, routeData)); } }