-
Notifications
You must be signed in to change notification settings - Fork 703
/
ActionApiVersionConventionBuilderBase.cs
63 lines (55 loc) · 2.12 KB
/
ActionApiVersionConventionBuilderBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
namespace Microsoft.AspNetCore.Mvc.Versioning.Conventions
{
using Microsoft.AspNetCore.Mvc.ApplicationModels;
using System;
using System.Linq;
using static System.Linq.Enumerable;
/// <content>
/// Provides additional implementation specific to Microsoft ASP.NET Core.
/// </content>
[CLSCompliant( false )]
public partial class ActionApiVersionConventionBuilderBase : IApiVersionConvention<ActionModel>
{
/// <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 );
}
}
}