Skip to content

Commit 05bb3ef

Browse files
committed
Add a user analytics client
1 parent 07c31e6 commit 05bb3ef

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

src/Core/Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="ErrorOr" Version="1.3.0" />
1111
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
12-
<PackageReference Include="trumpee.masstransit.messages" Version="1.0.0.15" />
12+
<PackageReference Include="trumpee.masstransit.messages" Version="1.0.0.16" />
1313
</ItemGroup>
1414

1515
<ItemGroup>

src/Infrastructure/Infrastructure.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
<PackageReference Include="MongoAsyncEnumerableAdapter" Version="0.2.0" />
1616
<PackageReference Include="MongoDB.Driver" Version="2.22.0" />
1717
<PackageReference Include="MongoDB.Driver.Core" Version="2.22.0" />
18-
<PackageReference Include="Trumpee.MassTransit" Version="1.0.0.13" />
19-
<PackageReference Include="trumpee.masstransit.messages" Version="1.0.0.15" />
18+
<PackageReference Include="Trumpee.MassTransit" Version="1.0.0.16" />
19+
<PackageReference Include="trumpee.masstransit.messages" Version="1.0.0.16" />
2020
</ItemGroup>
2121

2222
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Infrastructure.Persistence.MassTransit.Analytics;
2+
3+
public interface IUserAnalyticsClient
4+
{
5+
Task SendUserSignIn(string email, CancellationToken ct);
6+
Task SendUserSignUp(string userId, string email, string name, string roles, CancellationToken ct);
7+
Task SendUserAction(string email, string userAction, string usedRole, string affectedData, CancellationToken ct);
8+
}
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,41 @@
11
using MassTransit;
22
using Trumpee.MassTransit;
33
using Trumpee.MassTransit.Messages.Analytics.Users;
4+
using Trumpee.MassTransit.Messages.Analytics.Users.Payloads;
45

56
namespace Infrastructure.Persistence.MassTransit.Analytics;
67

78
public class UserAnalyticsClient(ISendEndpointProvider sendEndpointProvider) : IUserAnalyticsClient
89
{
910
private readonly ISendEndpointProvider _endpointProvider = sendEndpointProvider;
10-
11+
12+
private static readonly string SignUpQueue = QueueNames.Analytics.Users(typeof(UserSignUpPayload));
13+
private static readonly string SignIpQueue = QueueNames.Analytics.Users(typeof(UserSignInPayload));
14+
private static readonly string UserActionQueue = QueueNames.Analytics.Users(typeof(UserActionPayload));
15+
1116
public async Task SendUserSignIn(string email, CancellationToken ct)
1217
{
1318
var analyticsEvent = User.SignIn("Trumpee Gateway", email);
14-
await SendEvent(analyticsEvent, ct);
19+
await SendEvent(analyticsEvent, SignIpQueue, ct);
1520
}
16-
21+
1722
public async Task SendUserSignUp(string userId,
1823
string email, string name, string roles, CancellationToken ct)
1924
{
2025
var analyticsEvent = User.SignUp("Trumpee Gateway", userId, email, name, roles);
21-
await SendEvent(analyticsEvent, ct);
26+
await SendEvent(analyticsEvent, SignUpQueue, ct);
2227
}
23-
28+
2429
public async Task SendUserAction(string email,
2530
string userAction, string usedRole, string affectedData, CancellationToken ct)
2631
{
2732
var analyticsEvent = User.Action("Trumpee Gateway", email, userAction, usedRole, affectedData);
28-
await SendEvent(analyticsEvent, ct);
33+
await SendEvent(analyticsEvent, UserActionQueue, ct);
2934
}
30-
31-
private async Task SendEvent<T>(T analyticsEvent, CancellationToken ct) where T : class
35+
36+
private async Task SendEvent<T>(T analyticsEvent, string queueName, CancellationToken ct) where T : class
3237
{
33-
var endpoint = await _endpointProvider.GetSendEndpoint(new Uri(QueueNames.Analytics.Users));
38+
var endpoint = await _endpointProvider.GetSendEndpoint(new Uri(queueName));
3439
await endpoint.Send(analyticsEvent, ct);
3540
}
3641
}

0 commit comments

Comments
 (0)