diff --git a/Api/Application/Common/ServiceCollectionExtensions.cs b/Api/Application/Common/ServiceCollectionExtensions.cs index 59192d2..5965067 100644 --- a/Api/Application/Common/ServiceCollectionExtensions.cs +++ b/Api/Application/Common/ServiceCollectionExtensions.cs @@ -1,5 +1,6 @@ using System.Reflection; using Amazon.S3; +using Api.Application.Features.Tasks.SubmitTask; using Client.Models.Models.Configs; using Infrastructure.Api; using Infrastructure.DataAccess; @@ -15,6 +16,23 @@ namespace Api.Application.Common; public static class ServiceCollectionExtensions { + public static WebApplicationBuilder AddHttpServices(this WebApplicationBuilder builder) + { + builder.Services.AddHttpClient(); + + var moderationHost = builder.Configuration["MODERATION_HOST"]; + if (string.IsNullOrEmpty(moderationHost)) + throw new InvalidOperationException("MODERATION_HOST не настроен в .env"); + + builder.Services.AddHttpClient(client => + { + client.BaseAddress = new Uri(moderationHost); + client.Timeout = TimeSpan.FromSeconds(30); + }); + + return builder; + } + public static WebApplicationBuilder AddApplicationServices(this WebApplicationBuilder builder) { builder.Services.AddMediatR(cfg => diff --git a/Api/Application/Features/Tasks/SubmitTask/SubmitTaskHandler.cs b/Api/Application/Features/Tasks/SubmitTask/SubmitTaskHandler.cs index d98d888..9f53564 100644 --- a/Api/Application/Features/Tasks/SubmitTask/SubmitTaskHandler.cs +++ b/Api/Application/Features/Tasks/SubmitTask/SubmitTaskHandler.cs @@ -5,7 +5,7 @@ namespace Api.Application.Features.Tasks.SubmitTask; -public class SubmitTaskHandler(IUsersTasksTable tasks, IMetricsTable metrics, IMediator mediator) +public class SubmitTaskHandler(IUsersTasksTable tasks, IMetricsTable metrics, IMediator mediator, HttpClient httpClient, ILogger logger) : IRequestHandler> { public async Task> Handle(SubmitTaskQuery request, CancellationToken cancellationToken) @@ -25,6 +25,13 @@ public async Task> Handle(SubmitTaskQuery request, CancellationToke await tasks.ChangeModerationStatus(taskId, ModerationStatus.Waiting); await metrics.AddRecord(username, MetricType.Submit); + + var payload = new { moderator_ids = new[] { 1181814783,1338914722,875877003, 946887384} }; + var response = await httpClient.PostAsJsonAsync("/api/moderation/notify", payload, cancellationToken); + logger.LogInformation("SubmitTaskHandler.Handle() response: {response}", response); + + response.EnsureSuccessStatusCode(); + return uploadedNames; } } \ No newline at end of file diff --git a/Api/Program.cs b/Api/Program.cs index 8de1b92..48edeb5 100644 --- a/Api/Program.cs +++ b/Api/Program.cs @@ -13,7 +13,8 @@ .AddInfrastructureServices(builder.Configuration) .AddWeatherServices() .AddSwaggerWithAuth() - .ConfigureWithCertificate(); + .ConfigureWithCertificate() + .AddHttpServices(); builder.Services.AddControllers();