Generic 404 handler for synchronizers.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Synchronizers.Errors;
|
||||
using Wino.Core.Synchronizers.Errors.Gmail;
|
||||
|
||||
namespace Wino.Core.Services;
|
||||
@@ -12,11 +13,13 @@ public class GmailSynchronizerErrorHandlingFactory : SynchronizerErrorHandlingFa
|
||||
public GmailSynchronizerErrorHandlingFactory(
|
||||
GmailQuotaExceededHandler quotaExceededHandler,
|
||||
GmailRateLimitHandler rateLimitHandler,
|
||||
GmailHistoryExpiredHandler historyExpiredHandler)
|
||||
GmailHistoryExpiredHandler historyExpiredHandler,
|
||||
EntityNotFoundHandler entityNotFoundHandler)
|
||||
{
|
||||
// Order matters - more specific handlers should be registered first
|
||||
RegisterHandler(quotaExceededHandler);
|
||||
RegisterHandler(historyExpiredHandler);
|
||||
RegisterHandler(entityNotFoundHandler);
|
||||
RegisterHandler(rateLimitHandler); // Most generic rate limit handler last
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Synchronizers.Errors;
|
||||
using Wino.Core.Synchronizers.Errors.Imap;
|
||||
|
||||
namespace Wino.Core.Services;
|
||||
@@ -12,11 +13,13 @@ public class ImapSynchronizerErrorHandlingFactory : SynchronizerErrorHandlingFac
|
||||
public ImapSynchronizerErrorHandlingFactory(
|
||||
ImapConnectionLostHandler connectionLostHandler,
|
||||
ImapAuthenticationFailedHandler authFailedHandler,
|
||||
EntityNotFoundHandler entityNotFoundHandler,
|
||||
ImapFolderNotFoundHandler folderNotFoundHandler,
|
||||
ImapProtocolErrorHandler protocolErrorHandler)
|
||||
{
|
||||
// Order matters - more specific handlers should be registered first
|
||||
RegisterHandler(authFailedHandler);
|
||||
RegisterHandler(entityNotFoundHandler);
|
||||
RegisterHandler(folderNotFoundHandler);
|
||||
RegisterHandler(connectionLostHandler);
|
||||
RegisterHandler(protocolErrorHandler); // Most generic, registered last
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System.Threading.Tasks;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Domain.Models.Synchronization;
|
||||
using Wino.Core.Domain.Interfaces;
|
||||
using Wino.Core.Synchronizers.Errors;
|
||||
using Wino.Core.Synchronizers.Errors.Outlook;
|
||||
|
||||
namespace Wino.Core.Services;
|
||||
@@ -8,13 +7,11 @@ namespace Wino.Core.Services;
|
||||
public class OutlookSynchronizerErrorHandlingFactory : SynchronizerErrorHandlingFactory, IOutlookSynchronizerErrorHandlerFactory
|
||||
{
|
||||
public OutlookSynchronizerErrorHandlingFactory(ObjectCannotBeDeletedHandler objectCannotBeDeleted,
|
||||
EntityNotFoundHandler entityNotFoundHandler,
|
||||
DeltaTokenExpiredHandler deltaTokenExpiredHandler)
|
||||
{
|
||||
RegisterHandler(objectCannotBeDeleted);
|
||||
RegisterHandler(entityNotFoundHandler);
|
||||
RegisterHandler(deltaTokenExpiredHandler);
|
||||
}
|
||||
|
||||
public bool CanHandle(SynchronizerErrorContext error) => CanHandle(error);
|
||||
|
||||
public Task HandleAsync(SynchronizerErrorContext error) => HandleErrorAsync(error);
|
||||
}
|
||||
|
||||
@@ -405,6 +405,11 @@ public class SynchronizationManager : ISynchronizationManager
|
||||
await synchronizer.DownloadMissingMimeMessageAsync(mailItem, null, cancellationToken);
|
||||
return mailItem.Id.ToString(); // Return some identifier, actual implementation might be different
|
||||
}
|
||||
catch (SynchronizerEntityNotFoundException)
|
||||
{
|
||||
_logger.Warning("MIME message for mail item {MailItemId} no longer exists on server. Removed locally.", mailItem.Id);
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.Error(ex, "Failed to download MIME message for mail item {MailItemId}", mailItem.Id);
|
||||
|
||||
Reference in New Issue
Block a user