54 lines
2.1 KiB
C#
54 lines
2.1 KiB
C#
using FictionArchive.Service.Shared.Contracts.Events;
|
|
using FictionArchive.Service.TranslationService.Contracts;
|
|
using FictionArchive.Service.TranslationService.Models.Enums;
|
|
using FictionArchive.Service.TranslationService.Services;
|
|
using MassTransit;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace FictionArchive.Service.TranslationService.Consumers;
|
|
|
|
public class TranslationRequestCreatedConsumer : IConsumer<ITranslationRequestCreated>
|
|
{
|
|
private readonly ILogger<TranslationRequestCreatedConsumer> _logger;
|
|
private readonly TranslationEngineService _translationEngineService;
|
|
private readonly IPublishEndpoint _publishEndpoint;
|
|
|
|
public TranslationRequestCreatedConsumer(
|
|
ILogger<TranslationRequestCreatedConsumer> logger,
|
|
TranslationEngineService translationEngineService,
|
|
IPublishEndpoint publishEndpoint)
|
|
{
|
|
_logger = logger;
|
|
_translationEngineService = translationEngineService;
|
|
_publishEndpoint = publishEndpoint;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<ITranslationRequestCreated> context)
|
|
{
|
|
var message = context.Message;
|
|
|
|
_logger.LogInformation("Processing translation request {TranslationRequestId}", message.TranslationRequestId);
|
|
|
|
var result = await _translationEngineService.Translate(
|
|
message.From,
|
|
message.To,
|
|
message.Body,
|
|
message.TranslationEngineKey);
|
|
|
|
if (result.Status == TranslationRequestStatus.Success)
|
|
{
|
|
await _publishEndpoint.Publish<ITranslationRequestCompleted>(
|
|
new TranslationRequestCompleted(
|
|
TranslationRequestId: message.TranslationRequestId,
|
|
TranslatedText: result.TranslatedText));
|
|
|
|
_logger.LogInformation("Translation completed for request {TranslationRequestId}", message.TranslationRequestId);
|
|
}
|
|
else
|
|
{
|
|
_logger.LogError("Translation failed for request {TranslationRequestId}", message.TranslationRequestId);
|
|
throw new InvalidOperationException($"Translation failed for request {message.TranslationRequestId}");
|
|
}
|
|
}
|
|
}
|