public virtual void ApplyTo(HttpActionDescriptor actionDescriptor)
        {
            if (actionDescriptor == null)
            {
                throw new ArgumentNullException(nameof(actionDescriptor));
            }

            var attributes = new List <object>();

            attributes.AddRange(actionDescriptor.GetCustomAttributes <IApiVersionNeutral>(inherit: true));
            attributes.AddRange(actionDescriptor.GetCustomAttributes <IApiVersionProvider>(inherit: false));
            MergeAttributesWithConventions(attributes);

            if (VersionNeutral)
            {
                actionDescriptor.SetProperty(ApiVersionModel.Neutral);
                return;
            }

            ApiVersionModel?versionModel;

            if (MappedVersions.Count == 0)
            {
                var declaredVersions = SupportedVersions.Union(DeprecatedVersions);

                versionModel = new ApiVersionModel(
                    declaredVersions,
                    SupportedVersions,
                    DeprecatedVersions,
                    AdvertisedVersions,
                    DeprecatedAdvertisedVersions);
            }
            else
            {
                var emptyVersions = Empty <ApiVersion>();

                versionModel = new ApiVersionModel(
                    declaredVersions: MappedVersions,
                    supportedVersions: emptyVersions,
                    deprecatedVersions: emptyVersions,
                    advertisedVersions: emptyVersions,
                    deprecatedAdvertisedVersions: emptyVersions);
            }

            actionDescriptor.SetProperty(versionModel);
        }
示例#2
0
        /// <summary>
        /// Applies the builder conventions to the specified controller action.
        /// </summary>
        /// <param name="actionModel">The <see cref="ActionModel">action model</see> to apply the conventions to.</param>
#pragma warning disable CA1725
        public virtual void ApplyTo(ActionModel actionModel)
#pragma warning restore CA1725
        {
            if (actionModel == null)
            {
                throw new ArgumentNullException(nameof(actionModel));
            }

            MergeAttributesWithConventions(actionModel.Attributes);

            if (VersionNeutral)
            {
                actionModel.SetProperty(ApiVersionModel.Neutral);
                return;
            }

            ApiVersionModel versionModel;

            if (MappedVersions.Count == 0)
            {
                var declaredVersions = SupportedVersions.Union(DeprecatedVersions);

                versionModel = new ApiVersionModel(
                    declaredVersions,
                    SupportedVersions,
                    DeprecatedVersions,
                    AdvertisedVersions,
                    DeprecatedAdvertisedVersions);
            }
            else
            {
                var emptyVersions = Empty <ApiVersion>();

                versionModel = new ApiVersionModel(
                    declaredVersions: MappedVersions,
                    supportedVersions: emptyVersions,
                    deprecatedVersions: emptyVersions,
                    advertisedVersions: emptyVersions,
                    deprecatedAdvertisedVersions: emptyVersions);
            }

            actionModel.SetProperty(versionModel);
        }
示例#3
0
        /// <summary>
        /// Applies the builder conventions to the specified controller action.
        /// </summary>
        /// <param name="actionModel">The <see cref="ActionModel">action model</see> to apply the conventions to.</param>
        public virtual void ApplyTo(ActionModel actionModel)
        {
            Arg.NotNull(actionModel, nameof(actionModel));

            MergeAttributesWithConventions(actionModel.Attributes);

            if (VersionNeutral)
            {
                actionModel.SetProperty(ApiVersionModel.Neutral);
                return;
            }

            var versionModel = default(ApiVersionModel);

            if (MappedVersions.Count == 0)
            {
                var declaredVersions = SupportedVersions.Union(DeprecatedVersions);

                versionModel = new ApiVersionModel(
                    declaredVersions,
                    SupportedVersions,
                    DeprecatedVersions,
                    AdvertisedVersions,
                    DeprecatedAdvertisedVersions);
            }
            else
            {
                var emptyVersions = Empty <ApiVersion>();

                versionModel = new ApiVersionModel(
                    declaredVersions: MappedVersions,
                    supportedVersions: emptyVersions,
                    deprecatedVersions: emptyVersions,
                    advertisedVersions: emptyVersions,
                    deprecatedAdvertisedVersions: emptyVersions);
            }

            actionModel.SetProperty(versionModel);
        }