Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        /// <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);
        }