mirror of
https://github.com/DrMboga/WotBlitzStatisticsBlazor.git
synced 2026-10-24 03:40:07 +02:00
Dictionaries updater factory
This commit is contained in:
1 parent
cdf7ec5130
commit
32f7245d85
11 files changed
+279
-21
No files matched your search
@@ -0,0 +1,13 @@
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.Dictionaries
|
||||
{
|
||||
public class AchievementsDictionaryUpdater : IDictionaryUpdater
|
||||
{
|
||||
public Task<UpdateDictionariesResponseItem> Update()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.Dictionaries
|
||||
{
|
||||
/// <summary>
|
||||
/// Dictionaries updater factory method.
|
||||
/// </summary>
|
||||
/// <param name="dictionaryType">Dictionary type for resolving service.</param>
|
||||
/// <returns>Updater service.</returns>
|
||||
public delegate IDictionaryUpdater DictionariesUpdaterResolver(DictionaryType dictionaryType);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.Dictionaries
|
||||
{
|
||||
public interface IDictionaryUpdater
|
||||
{
|
||||
Task<UpdateDictionariesResponseItem> Update();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
using WotBlitzStatisticsPro.WgApiClient;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.Dictionaries
|
||||
{
|
||||
public class StaticDictionariesUpdater : IDictionaryUpdater
|
||||
{
|
||||
private readonly IWargamingDictionariesApiClient _wargamingDictionariesApiClient;
|
||||
|
||||
public StaticDictionariesUpdater(IWargamingDictionariesApiClient wargamingDictionariesApiClient)
|
||||
{
|
||||
_wargamingDictionariesApiClient = wargamingDictionariesApiClient;
|
||||
}
|
||||
public async Task<UpdateDictionariesResponseItem> Update()
|
||||
{
|
||||
var defaultRealmType = RealmType.Eu;
|
||||
foreach (var requestLanguage in (RequestLanguage[]) Enum.GetValues(typeof(RequestLanguage)))
|
||||
{
|
||||
var (WotEncyclopediaInfoResponse, WotClanMembersDictionaryResponse) =
|
||||
await _wargamingDictionariesApiClient.GetStaticDictionariesAsync(defaultRealmType, requestLanguage);
|
||||
// ToDo: map
|
||||
// ToDo: add to dictionary
|
||||
}
|
||||
|
||||
// ToDo: Save dictionary to Mongo
|
||||
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic.Dictionaries
|
||||
{
|
||||
public class VehiclesDictionaryUpdater : IDictionaryUpdater
|
||||
{
|
||||
public Task<UpdateDictionariesResponseItem> Update()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
using WotBlitzStatisticsPro.Logic.Dictionaries;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic
|
||||
{
|
||||
public class WargamingDictionaries: IWargamingDictionaries
|
||||
{
|
||||
public Task<UpdateDictionariesResponseItem[]> UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest)
|
||||
private readonly DictionariesUpdaterResolver _dictionaryUpdaterFactoryMethod;
|
||||
|
||||
public WargamingDictionaries(DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod)
|
||||
{
|
||||
_dictionaryUpdaterFactoryMethod = dictionaryUpdaterFactoryMethod;
|
||||
}
|
||||
|
||||
public async Task<UpdateDictionariesResponseItem[]> UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest)
|
||||
{
|
||||
var response = new List<UpdateDictionariesResponseItem>();
|
||||
// ToDo: Make factory
|
||||
if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.StaticDictionaries) != 0)
|
||||
|
||||
foreach (var dictionaryType in (DictionaryType[])Enum.GetValues(typeof(DictionaryType)))
|
||||
{
|
||||
// Update static
|
||||
}
|
||||
if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.Achievements) != 0)
|
||||
{
|
||||
// Update achievements
|
||||
}
|
||||
if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.Vehicles) != 0)
|
||||
{
|
||||
// Update vehicles
|
||||
if ((updateDictionariesRequest.DictionaryTypes & dictionaryType) != 0)
|
||||
{
|
||||
var dictionaryUpdater = _dictionaryUpdaterFactoryMethod(dictionaryType);
|
||||
response.Add(await dictionaryUpdater.Update());
|
||||
}
|
||||
}
|
||||
|
||||
return Task.FromResult(response.ToArray());
|
||||
return response.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,47 @@
|
||||
using AutoMapper;
|
||||
using System.Collections.Generic;
|
||||
using AutoMapper;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using WotBlitzStatisticsPro.Common.Model;
|
||||
using WotBlitzStatisticsPro.Logic.Dictionaries;
|
||||
using WotBlitzStatisticsPro.WgApiClient;
|
||||
|
||||
namespace WotBlitzStatisticsPro.Logic
|
||||
{
|
||||
public static class WotBlitzStatisticsLogicInstaller
|
||||
{
|
||||
|
||||
|
||||
public static void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
ConfigureDictionariesFactory(services);
|
||||
services.AddAutoMapper(typeof(WotBlitzStatisticsLogicInstaller));
|
||||
services.AddHttpClient<IWargamingApiClient, WargamingApiClient>();
|
||||
services.AddHttpClient<IWargamingDictionariesApiClient, WargamingApiClient>();
|
||||
services.AddTransient<IWargamingSearch, WargamingSearch>();
|
||||
services.AddTransient<IWargamingDictionaries, WargamingDictionaries>();
|
||||
}
|
||||
|
||||
private static void ConfigureDictionariesFactory(IServiceCollection services)
|
||||
{
|
||||
services.AddTransient<StaticDictionariesUpdater>();
|
||||
services.AddTransient<AchievementsDictionaryUpdater>();
|
||||
services.AddTransient<VehiclesDictionaryUpdater>();
|
||||
|
||||
services.AddTransient<DictionariesUpdaterResolver>(serviceProvider => dictionaryType =>
|
||||
{
|
||||
switch (dictionaryType)
|
||||
{
|
||||
case DictionaryType.StaticDictionaries:
|
||||
return serviceProvider.GetService<StaticDictionariesUpdater>();
|
||||
case DictionaryType.Achievements:
|
||||
return serviceProvider.GetService<AchievementsDictionaryUpdater>();
|
||||
case DictionaryType.Vehicles:
|
||||
return serviceProvider.GetService<VehiclesDictionaryUpdater>();
|
||||
default:
|
||||
throw new KeyNotFoundException(
|
||||
$"Unable to find service for dictionary type '{dictionaryType}'");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user