/// <inheritdoc /> VersionResult?IVersionStrategy.GetVersion(HttpContext context, RouteData routeData) { if (routeData == null) { throw new ArgumentNullException(nameof(routeData)); } var routeValues = routeData.Values; object versionObject; if (!routeValues.TryGetValue(RouteValueKey, out versionObject)) { return(null); } var versionString = versionObject as string; int version; if (ParsingUtility.TryParseVersion(versionString, out version)) { return(new VersionResult(version)); } return(null); }
/// <inheritdoc /> public VersionResult?GetVersion(HttpContext context, RouteData routeData) { if (context.Request.Query.TryGetValue(ParameterName, out var values)) { var versionString = values.ToString(); if (ParsingUtility.TryParseVersion(versionString, out var version)) { return(new VersionResult(version)); } } return(null); }
private static bool TryGetParameterVersion(MediaTypeHeaderValue acceptHeader, string parameterName, out int version) { foreach (var parameter in acceptHeader.Parameters) { if (parameter.Name.Equals(parameterName, StringComparison.OrdinalIgnoreCase)) { if (ParsingUtility.TryParseVersion(parameter.Value, out version)) { return(true); } } } version = 0; return(false); }
private static bool TryGetFacetVersion(StringSegment subType, out int version) { var facetSeparatorIndex = subType.IndexOf('.'); if (facetSeparatorIndex >= 0) { var facets = subType.Split(DotSeparator).Reverse(); foreach (var facet in facets) { if (ParsingUtility.TryParseVersion(facet, out version)) { return(true); } } } version = 0; return(false); }
/// <inheritdoc /> VersionResult?IVersionStrategy.GetVersion(HttpContext context, RouteData routeData) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var headers = context.Request.Headers; if (headers.TryGetValue(HeaderName, out var header)) { var headerString = header.ToString(); if (ParsingUtility.TryParseVersion(headerString, out var version)) { return(new VersionResult(version, HeaderName)); } } return(null); }