From 8542e0655a1954c56c8312c47b8f93f81ddfd88f Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Mon, 5 Dec 2022 12:04:25 +0900 Subject: feat: Create hosted service to regularly index radio series --- src/Services/Hosted/RadioIndexerService.cs | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/Services/Hosted/RadioIndexerService.cs (limited to 'src/Services/Hosted') diff --git a/src/Services/Hosted/RadioIndexerService.cs b/src/Services/Hosted/RadioIndexerService.cs new file mode 100644 index 0000000..44025ab --- /dev/null +++ b/src/Services/Hosted/RadioIndexerService.cs @@ -0,0 +1,34 @@ +namespace I2R.LightNews.Services.Hosted; + +public class RadioIndexerService : IHostedService, IDisposable +{ + private readonly NrkRadioService _radio; + private readonly ILogger _logger; + private Timer _timer; + + public RadioIndexerService(NrkRadioService radio, ILogger logger) { + _radio = radio; + _logger = logger; + } + + public Task StartAsync(CancellationToken cancellationToken) { + _logger.LogInformation("Radio Indexer Service running."); + + async void Callback(object state) { + await _radio.CreateIndexAsync(cancellationToken); + } + + _timer = new Timer(Callback, null, TimeSpan.Zero, TimeSpan.FromMinutes(20)); + return Task.CompletedTask; + } + + public Task StopAsync(CancellationToken cancellationToken) { + _logger.LogInformation("Radio Indexer Service is stopping."); + _timer?.Change(Timeout.Infinite, 0); + return Task.CompletedTask; + } + + public void Dispose() { + _timer?.Dispose(); + } +} -- cgit v1.3