Skip to content

Commit

Permalink
Merge pull request #2 from granstel/remove-autofac
Browse files Browse the repository at this point in the history
Remove autofac
  • Loading branch information
granstel authored May 7, 2022
2 parents 7b202cf + 73ab289 commit 1030df7
Show file tree
Hide file tree
Showing 40 changed files with 313 additions and 440 deletions.
61 changes: 16 additions & 45 deletions src/GranSteL.Chatbot.Api/DependencyConfiguration.cs
Original file line number Diff line number Diff line change
@@ -1,72 +1,43 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using Autofac;
using Autofac.Extensions.DependencyInjection;
using GranSteL.Chatbot.Api.DependencyModules;
using GranSteL.Chatbot.Services.Configuration;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace GranSteL.Chatbot.Api
{
internal static class DependencyConfiguration
{
internal static IContainer Configure(IServiceCollection services, IConfiguration appConfiguration)
internal static void Configure(IServiceCollection services, IConfiguration appConfiguration)
{
var containerBuilder = new ContainerBuilder();

containerBuilder.Populate(services);

var configuration = appConfiguration.GetSection($"{nameof(AppConfiguration)}").Get<AppConfiguration>();

containerBuilder.RegisterInstance(configuration).SingleInstance();
containerBuilder.RegisterInstance(configuration.HttpLog).SingleInstance();
containerBuilder.RegisterInstance(configuration.Redis).SingleInstance();
containerBuilder.RegisterInstance(configuration.Dialogflow).SingleInstance();
services.AddSingleton(configuration);
services.AddSingleton(configuration.HttpLog);
services.AddSingleton(configuration.Redis);
services.AddSingleton(configuration.Dialogflow);

containerBuilder.RegisterModule<InternalServicesModule>();
containerBuilder.RegisterModule<ExternalServicesModule>();
services.AddInternalServices();
services.AddExternalServices();

var names = GetAssembliesNames();
containerBuilder.RegisterModule(new MappingModule(names));
RegisterFromMessengersAssemblies(containerBuilder, names);

return containerBuilder.Build();
services.AddMapping(names);
}

private static void RegisterFromMessengersAssemblies(ContainerBuilder containerBuilder, string[] names)
{
foreach (var name in names)
{
var assembly = Assembly.Load(name);

containerBuilder.RegisterAssemblyModules(assembly);
}
}

private static string[] GetAssembliesNames()
public static ICollection<string> GetAssembliesNames()
{
var result = new List<string>();

var files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "GranSteL.Chatbot*.dll");

foreach (var file in files)
{
var info = new FileInfo(file);

var name = info.Name.Replace(info.Extension, string.Empty);

if (name.Equals(AppDomain.CurrentDomain.FriendlyName, StringComparison.InvariantCultureIgnoreCase))
{
continue;
}
var callingAssemble = Assembly.GetCallingAssembly();

result.Add(name);
}
var names = callingAssemble.GetCustomAttributes<ApplicationPartAttribute>()
.Where(a => a.AssemblyName.Contains("GranSteL.Chatbot", StringComparison.InvariantCultureIgnoreCase))
.Select(a => a.AssemblyName).ToList();

return result.ToArray();
return names;
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using Google.Apis.Auth.OAuth2;
using Google.Cloud.Dialogflow.V2;
using GranSteL.Chatbot.Services.Configuration;
using GranSteL.Helpers.Redis;
using Grpc.Auth;
using Microsoft.Extensions.DependencyInjection;
using StackExchange.Redis;

namespace GranSteL.Chatbot.Api.DependencyModules
{
internal static class ExternalServicesRegistration
{
internal static void AddExternalServices(this IServiceCollection services)
{
services.AddSingleton<SessionsClient>(RegisterDialogflowSessionsClient);

services.AddSingleton<IDatabase>(RegisterRedisClient);

services.AddSingleton<IRedisCacheService>(RegisterCacheService);
}

private static SessionsClient RegisterDialogflowSessionsClient(IServiceProvider provider)
{
var configuration = provider.GetService<DialogflowConfiguration>();

var credential = GoogleCredential.FromFile(configuration.JsonPath).CreateScoped(SessionsClient.DefaultScopes);

var clientBuilder = new SessionsClientBuilder
{
ChannelCredentials = credential.ToChannelCredentials()
};

var client = clientBuilder.Build();

return client;
}

private static IDatabase RegisterRedisClient(IServiceProvider provider)
{
var configuration = provider.GetService<RedisConfiguration>();

var redisClient = ConnectionMultiplexer.Connect(configuration.ConnectionString);

var dataBase = redisClient.GetDatabase();

return dataBase;
}

private static RedisCacheService RegisterCacheService(IServiceProvider provider)
{
var configuration = provider.GetService<RedisConfiguration>();

var db = provider.GetService<IDatabase>();

var service = new RedisCacheService(db, configuration.KeyPrefix);

return service;
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using GranSteL.Chatbot.Services;
using Microsoft.Extensions.DependencyInjection;

namespace GranSteL.Chatbot.Api.DependencyModules
{
internal static class InternalServicesRegistration
{
internal static void AddInternalServices(this IServiceCollection services)
{
services.AddTransient<IConversationService, ConversationService>();
services.AddScoped<IDialogflowService, DialogflowService>();
}
}
}
23 changes: 0 additions & 23 deletions src/GranSteL.Chatbot.Api/DependencyModules/MappingModule.cs

This file was deleted.

21 changes: 21 additions & 0 deletions src/GranSteL.Chatbot.Api/DependencyModules/MappingRegistration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System.Collections.Generic;
using AutoMapper;
using GranSteL.Chatbot.Services.Mappings;
using Microsoft.Extensions.DependencyInjection;

namespace GranSteL.Chatbot.Api.DependencyModules
{
internal static class MappingRegistration
{
internal static void AddMapping(this IServiceCollection services, IEnumerable<string> names)
{
services.AddSingleton<IMapper>(p => new Mapper(new MapperConfiguration(c =>
{
c.AddMaps(names);
c.AddProfile<InternalMapping>();
c.AddProfile<DialogflowMapping>();
})));
}
}
}
68 changes: 0 additions & 68 deletions src/GranSteL.Chatbot.Api/Extensions/RegistrationExtensions.cs

This file was deleted.

4 changes: 1 addition & 3 deletions src/GranSteL.Chatbot.Api/GranSteL.Chatbot.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Autofac" Version="6.*" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.*" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.*" />
<PackageReference Include="Newtonsoft.Json" Version="12.*" />
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
<PackageReference Include="NLog" Version="4.*" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.*" />
</ItemGroup>
Expand Down
Loading

0 comments on commit 1030df7

Please sign in to comment.