using System; using Microsoft.Extensions.DependencyInjection; using Wino.Core.Domain.Models.Requests; using Wino.Core.Domain.Models.Synchronization; using Wino.Messaging.Client.Authorization; using Wino.Messaging.Server; using Wino.Server.MessageHandlers; namespace Wino.Server.Core { public class ServerMessageHandlerFactory : IServerMessageHandlerFactory { public ServerMessageHandlerBase GetHandler(string typeName) { return typeName switch { nameof(NewMailSynchronizationRequested) => App.Current.Services.GetService(), nameof(NewCalendarSynchronizationRequested) => App.Current.Services.GetService(), nameof(ServerRequestPackage) => App.Current.Services.GetService(), nameof(DownloadMissingMessageRequested) => App.Current.Services.GetService(), nameof(AuthorizationRequested) => App.Current.Services.GetService(), nameof(ProtocolAuthorizationCallbackReceived) => App.Current.Services.GetService(), nameof(SynchronizationExistenceCheckRequest) => App.Current.Services.GetService(), nameof(ServerTerminationModeChanged) => App.Current.Services.GetService(), nameof(TerminateServerRequested) => App.Current.Services.GetService(), nameof(ImapConnectivityTestRequested) => App.Current.Services.GetService(), _ => throw new Exception($"Server handler for {typeName} is not registered."), }; } public void Setup(IServiceCollection serviceCollection) { // Register all known handlers. serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); serviceCollection.AddTransient(); } } }