41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
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<TranslateTextCommand>
|
|
{
|
|
private readonly ILogger<TranslateTextCommandConsumer> _logger;
|
|
private readonly TranslationEngineService _translationEngineService;
|
|
|
|
public TranslateTextCommandConsumer(
|
|
ILogger<TranslateTextCommandConsumer> logger,
|
|
TranslationEngineService translationEngineService)
|
|
{
|
|
_logger = logger;
|
|
_translationEngineService = translationEngineService;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<TranslateTextCommand> 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,
|
|
});
|
|
}
|
|
}
|
|
}
|