Skip to content

Commit 4ba159a

Browse files
committed
Removed Moq from tests & enabled .NET Core
- Introduced AssemblyWrapper to enable testing - Cleaned up properties on ResourceManagerStringLocalizer - #15 Change "Strategy" to "Provider" - #19
1 parent 9384848 commit 4ba159a

17 files changed

+166
-143
lines changed

samples/LocalizationSample/Startup.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public void Configure(IApplicationBuilder app, IStringLocalizer<Startup> SR)
3636
//}
3737
};
3838

39-
// Optionally create an app-specific strategy with just a delegate, e.g. look up user preference from DB.
40-
// Inserting it as position 0 ensures it has priority over any of the default strategies.
41-
//options.RequestCultureStrategies.Insert(0, new CustomRequestCultureStrategy(async context =>
39+
// Optionally create an app-specific provider with just a delegate, e.g. look up user preference from DB.
40+
// Inserting it as position 0 ensures it has priority over any of the default providers.
41+
//options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context =>
4242
//{
4343

4444
//}));
@@ -74,13 +74,13 @@ await context.Response.WriteAsync(
7474
function useCookie() {{
7575
var culture = document.getElementById('culture');
7676
var uiCulture = document.getElementById('uiCulture');
77-
var cookieValue = '{CookieRequestCultureStrategy.DefaultCookieName}=c='+culture.options[culture.selectedIndex].value+'|uic='+uiCulture.options[uiCulture.selectedIndex].value;
77+
var cookieValue = '{CookieRequestCultureProvider.DefaultCookieName}=c='+culture.options[culture.selectedIndex].value+'|uic='+uiCulture.options[uiCulture.selectedIndex].value;
7878
document.cookie = cookieValue;
7979
window.location = window.location.href.split('?')[0];
8080
}}
8181
8282
function clearCookie() {{
83-
document.cookie='{CookieRequestCultureStrategy.DefaultCookieName}=""""';
83+
document.cookie='{CookieRequestCultureProvider.DefaultCookieName}=""""';
8484
}}
8585
</script>
8686
</head>
@@ -101,7 +101,7 @@ function clearCookie() {{
101101
await context.Response.WriteAsync("</form>");
102102
await context.Response.WriteAsync("<br />");
103103
await context.Response.WriteAsync("<table><tbody>");
104-
await context.Response.WriteAsync($"<tr><th>Winning strategy:</th><td>{requestCultureFeature.Strategy.GetType().Name}</td></tr>");
104+
await context.Response.WriteAsync($"<tr><th>Winning provider:</th><td>{requestCultureFeature.Provider.GetType().Name}</td></tr>");
105105
await context.Response.WriteAsync($"<tr><th>{SR["Current request culture:"]}</th><td>{requestCulture.Culture.DisplayName} ({requestCulture.Culture})</td></tr>");
106106
await context.Response.WriteAsync($"<tr><th>{SR["Current request UI culture:"]}</th><td>{requestCulture.UICulture.DisplayName} ({requestCulture.UICulture})</td></tr>");
107107
await context.Response.WriteAsync($"<tr><th>{SR["Current thread culture:"]}</th><td>{CultureInfo.CurrentCulture.DisplayName} ({CultureInfo.CurrentCulture})</td></tr>");

src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/AcceptLanguageHeaderRequestCultureProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Microsoft.AspNet.Localization
1313
/// <summary>
1414
/// Determines the culture information for a request via the value of the Accept-Language header.
1515
/// </summary>
16-
public class AcceptLanguageHeaderRequestCultureStrategy : RequestCultureStrategy
16+
public class AcceptLanguageHeaderRequestCultureProvider : RequestCultureProvider
1717
{
1818
/// <summary>
1919
/// The maximum number of values in the Accept-Language header to attempt to create a <see cref="System.Globalization.CultureInfo"/>

src/Microsoft.AspNet.Localization/CookieRequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/CookieRequestCultureProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Microsoft.AspNet.Localization
1212
/// <summary>
1313
/// Determines the culture information for a request via the value of a cookie.
1414
/// </summary>
15-
public class CookieRequestCultureStrategy : RequestCultureStrategy
15+
public class CookieRequestCultureProvider : RequestCultureProvider
1616
{
1717
private static readonly char[] _cookieSeparator = new[] { '|' };
1818
private static readonly string _culturePrefix = "c=";

src/Microsoft.AspNet.Localization/CustomRequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/CustomRequestCultureProvider.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,23 @@ namespace Microsoft.AspNet.Localization
1111
/// <summary>
1212
/// Determines the culture information for a request via the configured delegate.
1313
/// </summary>
14-
public class CustomRequestCultureStrategy : RequestCultureStrategy
14+
public class CustomRequestCultureProvider : RequestCultureProvider
1515
{
16-
private readonly Func<HttpContext, Task<RequestCulture>> _strategy;
16+
private readonly Func<HttpContext, Task<RequestCulture>> _provider;
1717

1818
/// <summary>
19-
/// Creates a new <see cref="CustomRequestCultureStrategy"/> using the specified delegate.
19+
/// Creates a new <see cref="CustomRequestCultureProvider"/> using the specified delegate.
2020
/// </summary>
21-
/// <param name="strategy">The strategy delegate.</param>
22-
public CustomRequestCultureStrategy([NotNull] Func<HttpContext, Task<RequestCulture>> strategy)
21+
/// <param name="provider">The provider delegate.</param>
22+
public CustomRequestCultureProvider([NotNull] Func<HttpContext, Task<RequestCulture>> provider)
2323
{
24-
_strategy = strategy;
24+
_provider = provider;
2525
}
2626

2727
/// <inheritdoc />
2828
public override Task<RequestCulture> DetermineRequestCulture([NotNull] HttpContext httpContext)
2929
{
30-
return _strategy(httpContext);
30+
return _provider(httpContext);
3131
}
3232
}
3333
}

src/Microsoft.AspNet.Localization/IRequestCultureFeature.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public interface IRequestCultureFeature
1414
RequestCulture RequestCulture { get; }
1515

1616
/// <summary>
17-
/// The <see cref="IRequestCultureStrategy"/> that determined the request's culture information.
18-
/// If the value is <c>null</c> then no strategy was used and the request's culture was set to the value of
17+
/// The <see cref="IRequestCultureProvider"/> that determined the request's culture information.
18+
/// If the value is <c>null</c> then no provider was used and the request's culture was set to the value of
1919
/// <see cref="RequestLocalizationOptions.DefaultRequestCulture"/>.
2020
/// </summary>
21-
IRequestCultureStrategy Strategy { get; }
21+
IRequestCultureProvider Provider { get; }
2222
}
2323
}

src/Microsoft.AspNet.Localization/IRequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/IRequestCultureProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77
namespace Microsoft.AspNet.Localization
88
{
99
/// <summary>
10-
/// Represents a strategy for determining the culture information of an <see cref="HttpRequest"/>.
10+
/// Represents a provider for determining the culture information of an <see cref="HttpRequest"/>.
1111
/// </summary>
12-
public interface IRequestCultureStrategy
12+
public interface IRequestCultureProvider
1313
{
1414
/// <summary>
15-
/// Implements the strategy to determine the culture of the given request.
15+
/// Implements the provider to determine the culture of the given request.
1616
/// </summary>
1717
/// <param name="httpContext">The <see cref="HttpContext"/> for the request.</param>
1818
/// <returns>
1919
/// The determined <see cref="RequestCulture"/>.
20-
/// Returns <c>null</c> if the strategy couldn't determine a <see cref="RequestCulture"/>.
20+
/// Returns <c>null</c> if the provider couldn't determine a <see cref="RequestCulture"/>.
2121
/// </returns>
2222
Task<RequestCulture> DetermineRequestCulture(HttpContext httpContext);
2323
}

src/Microsoft.AspNet.Localization/QueryStringRequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/QueryStringRequestCultureProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Microsoft.AspNet.Localization
1111
/// <summary>
1212
/// Determines the culture information for a request via values in the query string.
1313
/// </summary>
14-
public class QueryStringRequestCultureStrategy : RequestCultureStrategy
14+
public class QueryStringRequestCultureProvider : RequestCultureProvider
1515
{
1616
/// <summary>
1717
/// The key that contains the culture name.

src/Microsoft.AspNet.Localization/RequestCultureFeature.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ public class RequestCultureFeature : IRequestCultureFeature
1414
/// Creates a new <see cref="RequestCultureFeature"/> with the specified <see cref="Localization.RequestCulture"/>.
1515
/// </summary>
1616
/// <param name="requestCulture">The <see cref="Localization.RequestCulture"/>.</param>
17-
public RequestCultureFeature([NotNull] RequestCulture requestCulture, IRequestCultureStrategy strategy)
17+
public RequestCultureFeature([NotNull] RequestCulture requestCulture, IRequestCultureProvider provider)
1818
{
1919
RequestCulture = requestCulture;
20-
Strategy = strategy;
20+
Provider = provider;
2121
}
2222

2323
/// <inheritdoc />
2424
public RequestCulture RequestCulture { get; }
2525

2626
/// <inheritdoc />
27-
public IRequestCultureStrategy Strategy { get; }
27+
public IRequestCultureProvider Provider { get; }
2828
}
2929
}

src/Microsoft.AspNet.Localization/RequestCultureStrategy.cs renamed to src/Microsoft.AspNet.Localization/RequestCultureProvider.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33

44
using System.Threading.Tasks;
55
using Microsoft.AspNet.Http;
6-
using Microsoft.Framework.Internal;
76

87
namespace Microsoft.AspNet.Localization
98
{
109
/// <summary>
11-
/// An abstract base class strategy for determining the culture information of an <see cref="HttpRequest"/>.
10+
/// An abstract base class provider for determining the culture information of an <see cref="HttpRequest"/>.
1211
/// </summary>
13-
public abstract class RequestCultureStrategy : IRequestCultureStrategy
12+
public abstract class RequestCultureProvider : IRequestCultureProvider
1413
{
1514
/// <summary>
1615
/// The current options for the <see cref="RequestLocalizationMiddleware"/>.

src/Microsoft.AspNet.Localization/RequestLocalizationMiddleware.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,23 @@ public async Task Invoke([NotNull] HttpContext context)
4040
var requestCulture = _options.DefaultRequestCulture ??
4141
new RequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
4242

43-
IRequestCultureStrategy winningStrategy = null;
43+
IRequestCultureProvider winningProvider = null;
4444

45-
if (_options.RequestCultureStrategies != null)
45+
if (_options.RequestCultureProviders != null)
4646
{
47-
foreach (var strategy in _options.RequestCultureStrategies)
47+
foreach (var provider in _options.RequestCultureProviders)
4848
{
49-
var result = await strategy.DetermineRequestCulture(context);
49+
var result = await provider.DetermineRequestCulture(context);
5050
if (result != null)
5151
{
5252
requestCulture = result;
53-
winningStrategy = strategy;
53+
winningProvider = provider;
5454
break;
5555
}
5656
}
5757
}
5858

59-
context.SetFeature<IRequestCultureFeature>(new RequestCultureFeature(requestCulture, winningStrategy));
59+
context.SetFeature<IRequestCultureFeature>(new RequestCultureFeature(requestCulture, winningProvider));
6060

6161
SetCurrentThreadCulture(requestCulture);
6262

src/Microsoft.AspNet.Localization/RequestLocalizationOptions.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ public RequestLocalizationOptions()
1919
{
2020
DefaultRequestCulture = new RequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture);
2121

22-
RequestCultureStrategies = new List<IRequestCultureStrategy>
22+
RequestCultureProviders = new List<IRequestCultureProvider>
2323
{
24-
new QueryStringRequestCultureStrategy { Options = this },
25-
new CookieRequestCultureStrategy { Options = this },
26-
new AcceptLanguageHeaderRequestCultureStrategy { Options = this }
24+
new QueryStringRequestCultureProvider { Options = this },
25+
new CookieRequestCultureProvider { Options = this },
26+
new AcceptLanguageHeaderRequestCultureProvider { Options = this }
2727
};
2828
}
2929

3030
/// <summary>
3131
/// The default <see cref="RequestCulture"/> to use. This value will be used if none of the configured
32-
/// <see cref="IRequestCultureStrategy"/> options result in a non-<c>null</c> result.
32+
/// <see cref="IRequestCultureProvider"/> options result in a non-<c>null</c> result.
3333
/// Defaults to <see cref="RequestCulture.Culture"/> set to <see cref="CultureInfo.DefaultThreadCurrentCulture"/>
3434
/// and <see cref="RequestCulture.UICulture"/> set to <see cref="CultureInfo.DefaultThreadCurrentUICulture"/>.
3535
/// </summary>
@@ -54,16 +54,16 @@ public RequestLocalizationOptions()
5454
public IList<CultureInfo> SupportedUICultures { get; set; }
5555

5656
/// <summary>
57-
/// An ordered list of strategies used to determine a request's culture information. The first strategy that
57+
/// An ordered list of providers used to determine a request's culture information. The first provider that
5858
/// returns a non-<c>null</c> result for a given request will be used.
5959
/// Defaults to the following:
6060
/// <list type="number">
61-
/// <item><description><see cref="QueryStringRequestCultureStrategy"/></description></item>
62-
/// <item><description><see cref="CookieRequestCultureStrategy"/></description></item>
63-
/// <item><description><see cref="AcceptLanguageHeaderRequestCultureStrategy"/></description></item>
61+
/// <item><description><see cref="QueryStringRequestCultureProvider"/></description></item>
62+
/// <item><description><see cref="CookieRequestCultureProvider"/></description></item>
63+
/// <item><description><see cref="AcceptLanguageHeaderRequestCultureProvider"/></description></item>
6464
/// </list>
6565
/// </summary>
6666
[SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "Improves usability")]
67-
public IList<IRequestCultureStrategy> RequestCultureStrategies { get; set; }
67+
public IList<IRequestCultureProvider> RequestCultureProviders { get; set; }
6868
}
6969
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
using System.IO;
5+
using System.Reflection;
6+
using Microsoft.Framework.Internal;
7+
8+
namespace Microsoft.Framework.Localization.Internal
9+
{
10+
public class AssemblyWrapper
11+
{
12+
public AssemblyWrapper([NotNull] Assembly assembly)
13+
{
14+
Assembly = assembly;
15+
}
16+
17+
public Assembly Assembly { get; }
18+
19+
public virtual string FullName => Assembly.FullName;
20+
21+
public virtual Stream GetManifestResourceStream(string name) => Assembly.GetManifestResourceStream(name);
22+
}
23+
}

0 commit comments

Comments
 (0)