diff --git a/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpConfigurationExtensions.cs b/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpConfigurationExtensions.cs index 7d9073ca..30be8d35 100644 --- a/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpConfigurationExtensions.cs +++ b/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpConfigurationExtensions.cs @@ -1,5 +1,4 @@ -using System.Diagnostics.Contracts; -namespace System.Web.Http +namespace System.Web.Http { using Controllers; using Diagnostics.CodeAnalysis; @@ -9,9 +8,7 @@ namespace System.Web.Http using Microsoft.Web.Http; using Microsoft.Web.Http.Controllers; using Microsoft.Web.Http.Dispatcher; - using Microsoft.Web.Http.Routing; using Microsoft.Web.Http.Versioning; - using Routing; /// /// Provides extension methods for the class. @@ -20,43 +17,18 @@ public static class HttpConfigurationExtensions { private const string ApiVersioningOptionsKey = "MS_ApiVersioningOptions"; - private static ApiVersioningOptions GetApiVersioningOptions( this HttpConfiguration configuration ) - { - Contract.Requires( configuration != null ); - - var options = default( ApiVersioningOptions ); - configuration.Properties.TryGetValue( ApiVersioningOptionsKey, out options ); - return options; - } - - /// - /// Gets the configured, default service API version. - /// - /// The current configuration. - /// The configured, default API version. - /// If the has not added API versioning, then this method - /// always returns . - public static ApiVersion GetDefaultApiVersion( this HttpConfiguration configuration ) - { - Arg.NotNull( configuration, nameof( configuration ) ); - Contract.Ensures( Contract.Result() != null ); - - return configuration.GetApiVersioningOptions()?.DefaultApiVersion ?? ApiVersion.Default; - } - /// - /// Gets the configured service API version reader. + /// Gets the current API versioning options. /// /// The current configuration. - /// The configured API service reader. - /// If the has not added API versioning, then this method - /// always returns a new instance of the . - public static IApiVersionReader GetApiVersionReader( this HttpConfiguration configuration ) + /// The current API versioning options. + public static ApiVersioningOptions GetApiVersioningOptions( this HttpConfiguration configuration ) { Arg.NotNull( configuration, nameof( configuration ) ); - Contract.Ensures( Contract.Result() != null ); + Contract.Ensures( Contract.Result() != null ); - return configuration.GetApiVersioningOptions()?.ApiVersionReader ?? new QueryStringApiVersionReader(); + var options = default( ApiVersioningOptions ); + return configuration.Properties.TryGetValue( ApiVersioningOptionsKey, out options ) ? options : new ApiVersioningOptions(); } /// @@ -91,4 +63,4 @@ public static void AddApiVersioning( this HttpConfiguration configuration, Actio configuration.Properties.AddOrUpdate( ApiVersioningOptionsKey, options, ( key, oldValue ) => options ); } } -} +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpRequestMessageExtensions.cs b/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpRequestMessageExtensions.cs index 9e24802d..3436ad65 100644 --- a/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpRequestMessageExtensions.cs +++ b/src/Microsoft.AspNet.WebApi.Versioning/System.Web.Http/HttpRequestMessageExtensions.cs @@ -58,6 +58,19 @@ internal static HttpResponseMessage CreateErrorResponse( this HttpRequestMessage } ); } + /// + /// Gets the current API versioning options. + /// + /// The request to get the API versioning options for. + /// The current API versioning options. + public static ApiVersioningOptions GetApiVersioningOptions( this HttpRequestMessage request ) + { + Arg.NotNull( request, nameof( request ) ); + Contract.Ensures( Contract.Result() != null ); + + return request.GetConfiguration()?.GetApiVersioningOptions() ?? new ApiVersioningOptions(); + } + /// /// Gets the current raw, unparsed service API version requested. /// @@ -70,7 +83,7 @@ public static string GetRawRequestedApiVersion( this HttpRequestMessage request { Arg.NotNull( request, nameof( request ) ); - var reader = request.GetConfiguration()?.GetApiVersionReader() ?? new QueryStringApiVersionReader(); + var reader = request.GetApiVersioningOptions().ApiVersionReader; return reader.Read( request ); } @@ -126,4 +139,4 @@ public static void SetRequestedApiVersion( this HttpRequestMessage request, ApiV } } } -} +} \ No newline at end of file diff --git a/src/Microsoft.AspNet.WebApi.Versioning/Versioning/ApiVersionModel.cs b/src/Microsoft.AspNet.WebApi.Versioning/Versioning/ApiVersionModel.cs index ed43ce93..6d412b32 100644 --- a/src/Microsoft.AspNet.WebApi.Versioning/Versioning/ApiVersionModel.cs +++ b/src/Microsoft.AspNet.WebApi.Versioning/Versioning/ApiVersionModel.cs @@ -91,7 +91,7 @@ private static IReadOnlyList GetDeclaredControllerApiVersions( HttpC if ( versions.Count == 0 ) { - versions = new[] { controllerDescriptor.Configuration.GetDefaultApiVersion() }; + versions = new[] { controllerDescriptor.Configuration.GetApiVersioningOptions().DefaultApiVersion }; } return versions; @@ -110,7 +110,7 @@ private static IReadOnlyList GetSupportedControllerApiVersions( Http if ( versions.Count == 0 ) { - versions = new[] { controllerDescriptor.Configuration.GetDefaultApiVersion() }; + versions = new[] { controllerDescriptor.Configuration.GetApiVersioningOptions().DefaultApiVersion }; } else {