Skip to content

Commit 427be95

Browse files
committed
Add integration points and sample job
1 parent 2b935eb commit 427be95

35 files changed

+323
-200
lines changed

IntegrationEngine.ConsoleHost/IntegrationEngine.ConsoleHost.csproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,14 @@
9292
<Compile Include="IntegrationJobs\CarReport\CarReport.cs" />
9393
<Compile Include="IntegrationJobs\CarReport\CarReportJob.cs" />
9494
<Compile Include="IntegrationJobs\CarReport\CarMailMessageJob.cs" />
95+
<Compile Include="IntegrationJobs\SampleSqlReport\SampleSqlReportJobWithIntegrationPoints.cs" />
96+
<Compile Include="IntegrationPoints\FooMailClient.cs" />
97+
<Compile Include="IntegrationPoints\BarSqlServer.cs" />
9598
</ItemGroup>
9699
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
97100
<ItemGroup>
98101
<ProjectReference Include="..\IntegrationEngine.Client\IntegrationEngine.Client.csproj">
99-
<Project>{f3fcb706-f0dd-46c1-b121-785757fae9b9}</Project>
102+
<Project>{F3FCB706-F0DD-46C1-B121-785757FAE9B9}</Project>
100103
<Name>IntegrationEngine.Client</Name>
101104
</ProjectReference>
102105
<ProjectReference Include="..\IntegrationEngine.Core\IntegrationEngine.Core.csproj">
@@ -132,4 +135,7 @@
132135
</Content>
133136
</ItemGroup>
134137
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
138+
<ItemGroup>
139+
<Folder Include="IntegrationPoints\" />
140+
</ItemGroup>
135141
</Project>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using IntegrationEngine.Core.Jobs;
2+
using IntegrationEngine.ConsoleHost.IntegrationPoints;
3+
using RazorEngine;
4+
using RazorEngine.Templating;
5+
using System;
6+
using System.Net.Mail;
7+
8+
namespace IntegrationEngine.ConsoleHost.IntegrationJobs.SampleSqlReport
9+
{
10+
public class SampleSqlReportJobWithIntegrationPoints : IIntegrationJob
11+
{
12+
public FooMailClient FooMailClient { get; set; }
13+
public BarSqlServer BarSqlServer { get; set; }
14+
15+
public void Run()
16+
{
17+
try
18+
{
19+
var report = new SampleReport() {
20+
Created = DateTime.Now,
21+
Data = new System.Collections.Generic.List<SampleDatum>(),
22+
//Data = RunQuery<SampleDatum>(),
23+
};
24+
25+
// Pass into Razor engine
26+
string template = "Created on <strong>@Model.Created</strong> with <strong>@Model.Data.Count</strong> records.";
27+
var html = Engine.Razor.RunCompile(template, "template-01", typeof(SampleReport), report);
28+
29+
// Send Mail
30+
var mailMessage = new MailMessage();
31+
mailMessage.To.Add("ethanhann@gmail.com");
32+
mailMessage.Subject = "Sample SQL Report";
33+
mailMessage.From = new MailAddress("root@localhost");
34+
mailMessage.Body = html;
35+
mailMessage.IsBodyHtml = true;
36+
FooMailClient.Send(mailMessage);
37+
}
38+
catch (Exception exception)
39+
{
40+
throw new IntegrationJobRunFailureException("SampleSqlReportJob failed.", exception);
41+
}
42+
}
43+
}
44+
}
45+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System;
2+
using IntegrationEngine.Core.Points;
3+
4+
namespace IntegrationEngine.ConsoleHost.IntegrationPoints
5+
{
6+
public class BarSqlServer
7+
{}
8+
}
9+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
using IntegrationEngine.Core.Points;
3+
using IntegrationEngine.Core.Mail;
4+
5+
namespace IntegrationEngine.ConsoleHost.IntegrationPoints
6+
{
7+
public class FooMailClient : MailClient
8+
{}
9+
}
10+

IntegrationEngine.Core.Tests/Mail/MailClientTest.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ public void Setup()
2121
{
2222
MockLog = new Mock<ILog>();
2323
Subject.Log = MockLog.Object;
24-
Subject.MailConfiguration = new MailConfiguration() {
25-
HostName = "hostName",
26-
Port = 0,
27-
};
2824
}
2925

3026
[Test]
@@ -52,9 +48,7 @@ public void ShouldLogExceptionAndReturnFalseIfMailServerIsNotAvailable()
5248
// stream.Write(responseInBytes, 0, responseInBytes.Length);
5349
// MockTcpClient.Setup(x => x.GetStream()).Returns(stream);
5450
// MockTcpClient.Setup(x => x.Close());
55-
5651
// var actual = Subject.IsServerAvailable();
57-
5852
// Assert.That(actual, Is.True);
5953
// MockTcpClient.Verify(x => x.Close(), Times.Once);
6054
//}

IntegrationEngine.Core/Configuration/MailConfiguration.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
1+
using IntegrationEngine.Core.Points;
62

73
namespace IntegrationEngine.Core.Configuration
84
{
9-
public class MailConfiguration
5+
public class MailConfiguration : IMailPoint
106
{
117
public string HostName { get; set; }
128
public int Port { get; set; }

IntegrationEngine.Core/IntegrationEngine.Core.csproj

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
<Compile Include="..\configuration\SharedAssemblyInfo.cs">
8282
<Link>Properties\SharedAssemblyInfo.cs</Link>
8383
</Compile>
84-
<Compile Include="Configuration\DatabaseConfiguration.cs" />
8584
<Compile Include="Configuration\MailConfiguration.cs" />
8685
<Compile Include="Jobs\IIntegrationJob.cs" />
8786
<Compile Include="Jobs\ILogJob.cs" />
@@ -108,6 +107,16 @@
108107
<Compile Include="Mail\ITcpClient.cs" />
109108
<Compile Include="Mail\SmtpClientAdapter.cs" />
110109
<Compile Include="Mail\ISmtpClient.cs" />
110+
<Compile Include="Points\IIntegrationPoint.cs" />
111+
<Compile Include="Points\IRabbitMQPoint.cs" />
112+
<Compile Include="Points\IMySqlPoint.cs" />
113+
<Compile Include="Points\IElasticsearchPoint.cs" />
114+
<Compile Include="Points\ISqlServerPoint.cs" />
115+
<Compile Include="Points\ElasticsearchPoint.cs" />
116+
<Compile Include="Points\MySqlPoint.cs" />
117+
<Compile Include="Points\RabbitMQPoint.cs" />
118+
<Compile Include="Points\SqlServerPoint.cs" />
119+
<Compile Include="Points\IMailPoint.cs" />
111120
</ItemGroup>
112121
<ItemGroup>
113122
<None Include="App.config" />
@@ -133,4 +142,7 @@
133142
<Target Name="AfterBuild">
134143
</Target>
135144
-->
145+
<ItemGroup>
146+
<Folder Include="Points\" />
147+
</ItemGroup>
136148
</Project>

IntegrationEngine.Core/Mail/IMailClient.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ namespace IntegrationEngine.Core.Mail
55
{
66
public interface IMailClient
77
{
8-
MailConfiguration MailConfiguration { get; set; }
98
ISmtpClient SmtpClient { get; set; }
109
void Send(MailMessage mailMessage);
1110
bool IsServerAvailable();

IntegrationEngine.Core/Mail/ISmtpClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace IntegrationEngine.Core
55
{
66
public interface ISmtpClient
77
{
8-
string Host { get; set; }
8+
string HostName { get; set; }
99
int Port { get; set; }
1010
void Send(MailMessage message);
1111
}

IntegrationEngine.Core/Mail/MailClient.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Common.Logging;
2-
using IntegrationEngine.Core.Configuration;
2+
using IntegrationEngine.Core.Points;
33
using System;
44
using System.IO;
55
using System.Net.Mail;
@@ -8,11 +8,12 @@
88

99
namespace IntegrationEngine.Core.Mail
1010
{
11-
public class MailClient : IMailClient
11+
public class MailClient : IMailClient, IMailPoint
1212
{
1313
public ISmtpClient SmtpClient { get; set; }
14-
public MailConfiguration MailConfiguration { get; set; }
1514
public ILog Log { get; set; }
15+
public string HostName { get { return SmtpClient.HostName; } set { SmtpClient.HostName = value; } }
16+
public int Port { get { return SmtpClient.Port; } set { SmtpClient.Port = value; } }
1617

1718
public MailClient()
1819
{
@@ -29,8 +30,6 @@ public void Send(MailMessage mailMessage)
2930
{
3031
try
3132
{
32-
SmtpClient.Host = MailConfiguration.HostName;
33-
SmtpClient.Port = MailConfiguration.Port;
3433
SmtpClient.Send(mailMessage);
3534
}
3635
catch (Exception exception)
@@ -46,13 +45,13 @@ public bool IsServerAvailable()
4645
{
4746
using (var client = new TcpClient())
4847
{
49-
client.Connect(MailConfiguration.HostName, MailConfiguration.Port);
48+
client.Connect(HostName, Port);
5049
using (var stream = client.GetStream())
5150
{
5251
using (var writer = new StreamWriter(stream))
5352
using (var reader = new StreamReader(stream))
5453
{
55-
writer.WriteLine("EHLO " + MailConfiguration.HostName);
54+
writer.WriteLine("EHLO " + HostName);
5655
writer.Flush();
5756
var response = reader.ReadLine();
5857
if (response != null)

0 commit comments

Comments
 (0)