/// <summary> /// Initializes a new instance of the <see cref="LibraryAddedNotifier"/> class. /// </summary> /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param> /// <param name="httpClient">Instance of the <see cref="IHttpClient"/> interface.</param> /// <param name="applicationHost">Instance of the <see cref="IApplicationHost"/> interface.</param> public LibraryAddedNotifier(ILoggerFactory loggerFactory, ILibraryManager libraryManager, IHttpClient httpClient, IApplicationHost applicationHost) { _logger = loggerFactory.CreateLogger <LibraryAddedNotifier>(); _libraryManager = libraryManager ?? throw new ArgumentNullException(nameof(libraryManager)); _applicationHost = applicationHost; _itemProcessQueue = new ConcurrentDictionary <Guid, QueuedItemContainer>(); _libraryManager.ItemAdded += ItemAddedHandler; HandlebarsFunctionHelpers.RegisterHelpers(); _cancellationTokenSource = new CancellationTokenSource(); PeriodicAsyncHelper.PeriodicAsync( async() => { try { await ProcessItemsAsync().ConfigureAwait(false); } catch (Exception ex) { _logger.LogWarning(ex, "Error"); } }, TimeSpan.FromMilliseconds(Constants.RecheckIntervalMs), _cancellationTokenSource.Token) .ConfigureAwait(false); _discordDestination = new DiscordDestination( loggerFactory.CreateLogger <DiscordDestination>(), httpClient); _gotifyDestination = new GotifyDestination( loggerFactory.CreateLogger <GotifyDestination>(), httpClient); }
/// <inheritdoc /> public Task RunAsync() { _libraryManager.ItemAdded += ItemAddedHandler; HandlebarsFunctionHelpers.RegisterHelpers(); return(Task.CompletedTask); }