Add Swiss QR Code extraction feature
Introduced DTOs for request and response to handle Swiss QR Code extraction from PDF documents. Implemented `ExtractSwissQrCodeHandler` to process the extraction using `ISwissQrCodeProcessor`. Added validation for the query with `ExtractSwissQrCodeValidator`. Developed unit tests to ensure correct behavior for successful and failure scenarios.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
using DocumentOperator.Application.Common.Interfaces;
|
||||
using MediatR;
|
||||
|
||||
namespace DocumentOperator.Application.Features.Documents.ExtractSwissQrCode;
|
||||
|
||||
/// <summary>
|
||||
/// Handles extraction of Swiss QR Code from PDF documents.
|
||||
/// Uses ISwissQrCodeProcessor to extract QR code from the last page and parse it.
|
||||
/// </summary>
|
||||
public sealed class ExtractSwissQrCodeHandler : IRequestHandler<ExtractSwissQrCodeQuery, ExtractSwissQrCodeResult>
|
||||
{
|
||||
private readonly ISwissQrCodeProcessor _qrCodeProcessor;
|
||||
|
||||
public ExtractSwissQrCodeHandler(ISwissQrCodeProcessor qrCodeProcessor)
|
||||
{
|
||||
_qrCodeProcessor = qrCodeProcessor;
|
||||
}
|
||||
|
||||
public async Task<ExtractSwissQrCodeResult> Handle(ExtractSwissQrCodeQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
// Convert Base64 string to byte array
|
||||
byte[] pdfBytes = request.PdfContent.ToByteArray();
|
||||
|
||||
// Extract and parse Swiss QR Code from last page
|
||||
var qrCodeData = await _qrCodeProcessor.ExtractSwissQrCodeAsync(pdfBytes, cancellationToken);
|
||||
|
||||
// Return references (passed through) + QR code data
|
||||
return new ExtractSwissQrCodeResult(
|
||||
References: request.References,
|
||||
QrCodeData: qrCodeData
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user