Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 3 additions & 16 deletions src/BattleMuffin/Configuration/ClientConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,33 +9,20 @@ namespace BattleMuffin.Configuration
[UsedImplicitly]
public class ClientConfiguration : IClientConfiguration
{
public ClientConfiguration(Region region, string clientId, string clientSecret)
public ClientConfiguration(Region region, string clientId, string clientSecret, CultureInfo? locale = null)
{
var regionConfig = RegionConfigurationMap.Mapping.ContainsKey(region)
? RegionConfigurationMap.Mapping[region]
: throw new RegionException("Configuration not found for specified region");

Host = regionConfig.Host;
OauthHost = regionConfig.OauthHost;
Locale = regionConfig.DefaultLocale;
ClientId = clientId;
ClientSecret = clientSecret;
}

public ClientConfiguration(Region region, string clientId, string clientSecret, CultureInfo locale)
{
var regionConfig = RegionConfigurationMap.Mapping.ContainsKey(region)
? RegionConfigurationMap.Mapping[region]
: throw new RegionException("Configuration not found for specified region");

if (regionConfig.AvailableLocales.All(x => !x.Equals(locale)))
if (locale != null && !regionConfig.AvailableLocales.Any(x => x.Equals(locale)))
{
throw new LocaleException("Locale not valid for specified region");
}

Host = regionConfig.Host;
OauthHost = regionConfig.OauthHost;
Locale = locale;
Locale = locale ?? regionConfig.DefaultLocale;
ClientId = clientId;
ClientSecret = clientSecret;
}
Expand Down
11 changes: 2 additions & 9 deletions src/BattleMuffin/Extensions/DependencyInjectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,9 @@ private static void AddBattleMuffinHttpClient(this IServiceCollection serviceCol

serviceCollection.AddSingleton<BattleMuffinClientFactory>();
}

public static void AddWarcraftClient(this IServiceCollection serviceCollection, Region region, string clientId, string clientSecret)
{
serviceCollection.AddSingleton<IClientConfiguration>(x => new ClientConfiguration(region, clientId, clientSecret));
serviceCollection.AddBattleMuffinHttpClient();
serviceCollection.AddSingleton<IWarcraftClient, WarcraftClient>();
}


[UsedImplicitly]
public static void AddWarcraftClient(this IServiceCollection serviceCollection, Region region, string clientId, string clientSecret, CultureInfo locale)
public static void AddWarcraftClient(this IServiceCollection serviceCollection, Region region, string clientId, string clientSecret, CultureInfo? locale = null)
{
serviceCollection.AddSingleton<IClientConfiguration>(x => new ClientConfiguration(region, clientId, clientSecret, locale));
serviceCollection.AddBattleMuffinHttpClient();
Expand Down