Skip to content

Commit 962e5a1

Browse files
code review tweaks
1 parent ee03b2f commit 962e5a1

9 files changed

Lines changed: 315 additions & 298 deletions

File tree

FileProcessor.Tests/BootstrapperTests.cs

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,34 +30,16 @@ public void VerifyBootstrapperIsValid()
3030

3131
this.AddTestRegistrations(services, hostingEnvironment.Object);
3232
s.ConfigureContainer(services);
33-
34-
var g = Startup.Container.GetInstance<ISecurityServiceClient>();
35-
36-
33+
3734
Startup.Container.AssertConfigurationIsValid(AssertMode.Full);
3835
}
3936

4037
private IConfigurationRoot SetupMemoryConfiguration()
4138
{
42-
//Dictionary<String, String> configuration = new Dictionary<String, String>();
43-
4439
IConfigurationBuilder builder = new ConfigurationBuilder();
4540

46-
//configuration.Add("ConnectionStrings:HealthCheck", "HeathCheckConnString");
47-
//configuration.Add("SecurityConfiguration:Authority", "https://127.0.0.1");
48-
//configuration.Add("EventStoreSettings:ConnectionString", "https://127.0.0.1:2113");
49-
//configuration.Add("EventStoreSettings:ConnectionName", "UnitTestConnection");
50-
//configuration.Add("EventStoreSettings:UserName", "admin");
51-
//configuration.Add("EventStoreSettings:Password", "changeit");
52-
//configuration.Add("AppSettings:UseConnectionStringConfig", "false");
53-
//configuration.Add("AppSettings:SecurityService", "http://127.0.0.1");
54-
//configuration.Add("AppSettings:MessagingServiceApi", "http://127.0.0.1");
55-
//configuration.Add("AppSettings:EstateManagementApi", "http://127.0.0.1");
56-
//configuration.Add("AppSettings:TransactionProcessorApi", "http://127.0.0.1");
57-
//configuration.Add("AppSettings:DatabaseEngine", "SqlServer");
58-
59-
//builder.AddInMemoryCollection(configuration);
6041
builder.AddInMemoryCollection(TestData.DefaultAppSettings);
42+
6143
return builder.Build();
6244
}
6345

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
namespace FileProcessor.Bootstrapper;
2+
3+
using System;
4+
using System.Net.Http;
5+
using EstateManagement.Client;
6+
using Lamar;
7+
using Microsoft.Extensions.DependencyInjection;
8+
using SecurityService.Client;
9+
using Shared.General;
10+
using TransactionProcessor.Client;
11+
12+
/// <summary>
13+
///
14+
/// </summary>
15+
/// <seealso cref="Lamar.ServiceRegistry" />
16+
public class ClientRegistry : ServiceRegistry
17+
{
18+
#region Constructors
19+
20+
/// <summary>
21+
/// Initializes a new instance of the <see cref="ClientRegistry"/> class.
22+
/// </summary>
23+
public ClientRegistry() {
24+
this.AddSingleton<ISecurityServiceClient, SecurityServiceClient>();
25+
this.AddSingleton<IEstateClient, EstateClient>();
26+
this.AddSingleton<ITransactionProcessorClient, TransactionProcessorClient>();
27+
28+
this.AddSingleton<Func<String, String>>(container => serviceName => { return ConfigurationReader.GetBaseServerUri(serviceName).OriginalString; });
29+
30+
SocketsHttpHandler httpMessageHandler = new SocketsHttpHandler {
31+
SslOptions = {
32+
RemoteCertificateValidationCallback = (sender,
33+
certificate,
34+
chain,
35+
errors) => true,
36+
}
37+
};
38+
39+
HttpClient httpClient = new(httpMessageHandler);
40+
this.AddSingleton(httpClient);
41+
}
42+
43+
#endregion
44+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
namespace FileProcessor.Bootstrapper;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using BusinessLogic.EventHandling;
6+
using Lamar;
7+
using Microsoft.Extensions.Configuration;
8+
using Microsoft.Extensions.DependencyInjection;
9+
using Shared.EventStore.EventHandling;
10+
11+
/// <summary>
12+
///
13+
/// </summary>
14+
/// <seealso cref="Lamar.ServiceRegistry" />
15+
public class DomainEventHandlerRegistry : ServiceRegistry
16+
{
17+
#region Constructors
18+
19+
/// <summary>
20+
/// Initializes a new instance of the <see cref="DomainEventHandlerRegistry"/> class.
21+
/// </summary>
22+
public DomainEventHandlerRegistry()
23+
{
24+
Dictionary<String, String[]> eventHandlersConfiguration = new Dictionary<String, String[]>();
25+
26+
if (Startup.Configuration != null)
27+
{
28+
IConfigurationSection section = Startup.Configuration.GetSection("AppSettings:EventHandlerConfiguration");
29+
30+
if (section != null)
31+
{
32+
Startup.Configuration.GetSection("AppSettings:EventHandlerConfiguration").Bind(eventHandlersConfiguration);
33+
}
34+
}
35+
36+
this.AddSingleton(eventHandlersConfiguration);
37+
38+
this.AddSingleton<Func<Type, IDomainEventHandler>>(container => type =>
39+
{
40+
IDomainEventHandler handler = container.GetService(type) as IDomainEventHandler;
41+
return handler;
42+
});
43+
44+
this.AddSingleton<FileDomainEventHandler>();
45+
this.AddSingleton<IDomainEventHandlerResolver, DomainEventHandlerResolver>();
46+
}
47+
48+
#endregion
49+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
namespace FileProcessor.Bootstrapper;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.IO.Abstractions;
6+
using System.Linq;
7+
using BusinessLogic.FileFormatHandlers;
8+
using FIleProcessor.Models;
9+
using Lamar;
10+
using Microsoft.Extensions.Configuration;
11+
using Microsoft.Extensions.DependencyInjection;
12+
13+
/// <summary>
14+
///
15+
/// </summary>
16+
/// <seealso cref="Lamar.ServiceRegistry" />
17+
public class FileRegistry : ServiceRegistry
18+
{
19+
#region Constructors
20+
21+
/// <summary>
22+
/// Initializes a new instance of the <see cref="FileRegistry"/> class.
23+
/// </summary>
24+
public FileRegistry()
25+
{
26+
IEnumerable<FileProfile> fileProfiles = Startup.Configuration.GetSection("AppSettings:FileProfiles").GetChildren().ToList().Select(x => new
27+
{
28+
Name = x.GetValue<String>("Name"),
29+
FileProfileId = x.GetValue<Guid>("Id"),
30+
RequestType = x.GetValue<String>("RequestType"),
31+
ListeningDirectory = x.GetValue<String>("ListeningDirectory"),
32+
OperatorName = x.GetValue<String>("OperatorName"),
33+
LineTerminator = x.GetValue<String>("LineTerminator"),
34+
FileFormatHandler = x.GetValue<String>("FileFormatHandler")
35+
}).Select(f =>
36+
{
37+
return new FileProfile(f.FileProfileId,
38+
f.Name,
39+
f.ListeningDirectory,
40+
f.RequestType,
41+
f.OperatorName,
42+
f.LineTerminator,
43+
f.FileFormatHandler);
44+
});
45+
this.AddSingleton(fileProfiles.ToList());
46+
this.AddSingleton<IFileSystem, FileSystem>();
47+
this.AddSingleton<Func<String, IFileFormatHandler>>(container => fileFormatHandlerName =>
48+
{
49+
if (fileFormatHandlerName == "SafaricomFileFormatHandler")
50+
return new SafaricomFileFormatHandler();
51+
if (fileFormatHandlerName == "VoucherFileFormatHandler")
52+
return new VoucherFileFormatHandler();
53+
54+
return null;
55+
});
56+
}
57+
58+
#endregion
59+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
namespace FileProcessor.Bootstrapper;
2+
3+
using System;
4+
using BusinessLogic.RequestHandlers;
5+
using BusinessLogic.Requests;
6+
using Lamar;
7+
using MediatR;
8+
using Microsoft.Extensions.DependencyInjection;
9+
10+
/// <summary>
11+
///
12+
/// </summary>
13+
/// <seealso cref="Lamar.ServiceRegistry" />
14+
public class MediatorRegistry : ServiceRegistry
15+
{
16+
#region Constructors
17+
18+
/// <summary>
19+
/// Initializes a new instance of the <see cref="MediatorRegistry"/> class.
20+
/// </summary>
21+
public MediatorRegistry()
22+
{
23+
this.AddSingleton<IMediator, Mediator>();
24+
// request & notification handlers
25+
this.AddTransient<ServiceFactory>(context => { return t => context.GetService(t); });
26+
27+
this.AddSingleton<IRequestHandler<UploadFileRequest, Guid>, FileRequestHandler>();
28+
this.AddSingleton<IRequestHandler<ProcessUploadedFileRequest, Unit>, FileRequestHandler>();
29+
this.AddSingleton<IRequestHandler<SafaricomTopupRequest, Unit>, FileRequestHandler>();
30+
this.AddSingleton<IRequestHandler<VoucherRequest, Unit>, FileRequestHandler>();
31+
this.AddSingleton<IRequestHandler<ProcessTransactionForFileLineRequest, Unit>, FileRequestHandler>();
32+
}
33+
34+
#endregion
35+
}

0 commit comments

Comments
 (0)