Пример #1
0
        /// <summary>
        /// Gets the API version information associated with a action.
        /// </summary>
        /// <param name="action">The <see cref="HttpActionDescriptor">action</see> to evaluate.</param>
        /// <param name="mapping">One or more of the <see cref="ApiVersionMapping"/> values.</param>
        /// <returns>The <see cref="ApiVersionModel">API version information</see> for the action.</returns>
        public static ApiVersionModel GetApiVersionModel(this HttpActionDescriptor action, ApiVersionMapping mapping)
        {
            Arg.NotNull(action, nameof(action));
            Contract.Ensures(Contract.Result <ApiVersionModel>() != null);

            switch (mapping)
            {
            case Explicit:
                return(action.GetProperty <ApiVersionModel>() ?? ApiVersionModel.Empty);

            case Implicit:
                return(action.ControllerDescriptor.GetApiVersionModel());

            case Explicit | Implicit:

                var model = action.GetProperty <ApiVersionModel>() ?? ApiVersionModel.Empty;

                if (model.IsApiVersionNeutral || model.DeclaredApiVersions.Count > 0)
                {
                    return(model);
                }

                var implicitModel = action.ControllerDescriptor.GetApiVersionModel();

                return(new ApiVersionModel(
                           implicitModel.DeclaredApiVersions,
                           model.SupportedApiVersions,
                           model.DeprecatedApiVersions,
                           Empty <ApiVersion>(),
                           Empty <ApiVersion>()));
            }

            return(ApiVersionModel.Empty);
        }
Пример #2
0
        /// <summary>
        /// Gets the API version information associated with a action.
        /// </summary>
        /// <param name="actionDescriptor">The <see cref="HttpActionDescriptor">action</see> to evaluate.</param>
        /// <returns>The <see cref="ApiVersionModel">API version information</see> for the action.</returns>
        public static ApiVersionModel GetApiVersionModel(this HttpActionDescriptor actionDescriptor)
        {
            Arg.NotNull(actionDescriptor, nameof(actionDescriptor));
            Contract.Ensures(Contract.Result <ApiVersionModel>() != null);

            return(actionDescriptor.GetProperty <ApiVersionModel>() ?? new ApiVersionModel(actionDescriptor));
        }