Reorganized the solution structure to align with a layered architecture: - Replaced `src` folder with `core`, `infrastructure`, and `presentation`. - Moved projects to their respective folders. - Added `DigitalData.MessagingService.Publisher.Abstraction` project. - Removed `DigitalData.MessagingService.Client` project. Updated project configurations and nesting in the solution file. Added `appsettings.Secrets.json` with RabbitMQ and email account settings: - RabbitMQ configuration includes hostname, port, credentials, and queue/exchange details. - Email configuration includes SMTP server details and credentials.
27 lines
1.1 KiB
C#
27 lines
1.1 KiB
C#
namespace DigitalData.MessagingService.Application.Common.Interfaces;
|
|
|
|
/// <summary>
|
|
/// PDF processing service interface.
|
|
/// Operates on streams instead of file paths for flexibility.
|
|
/// </summary>
|
|
public interface IPdfProcessingService
|
|
{
|
|
/// <summary>
|
|
/// Validates if the provided stream contains a valid PDF document.
|
|
/// Throws InvalidPdfException if the stream is not a valid PDF.
|
|
/// </summary>
|
|
Task<bool> ValidatePdfAsync(Stream pdfStream, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Extracts embedded files from PDF stream to the specified output directory.
|
|
/// Returns a list of paths to extracted files.
|
|
/// </summary>
|
|
Task<IEnumerable<string>> ExtractEmbeddedFilesAsync(Stream pdfStream, string outputDirectory, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Gets the page count of the PDF document.
|
|
/// Throws InvalidPdfException if the stream is not a valid PDF.
|
|
/// </summary>
|
|
Task<int> GetPageCountAsync(Stream pdfStream, CancellationToken cancellationToken = default);
|
|
}
|