/// <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); }
/// <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)); }