using FictionArchive.Service.Shared.MassTransit.Contracts.Commands; using FictionArchive.Service.Shared.MassTransit.Contracts.Events; using FictionArchive.Service.TranslationService.Models.Enums; using MassTransit; namespace FictionArchive.Service.TranslationService.Services.EventHandlers; public class TranslateTextCommandConsumer : IConsumer { private readonly ILogger _logger; private readonly TranslationEngineService _translationEngineService; public TranslateTextCommandConsumer( ILogger logger, TranslationEngineService translationEngineService) { _logger = logger; _translationEngineService = translationEngineService; } public async Task Consume(ConsumeContext context) { var command = context.Message; var result = await _translationEngineService.Translate( command.From, command.To, command.Body, command.TranslationEngineKey); if (result.Status == TranslationRequestStatus.Success) { await context.Publish(new TranslationCompletedEvent { TranslatedText = result.TranslatedText!, TranslationRequestId = command.TranslationRequestId, }); } } }