diff options
Diffstat (limited to 'src/Services/Hosted/RadioIndexerService.cs')
| -rw-r--r-- | src/Services/Hosted/RadioIndexerService.cs | 34 |
1 files changed, 34 insertions, 0 deletions
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<RadioIndexerService> _logger; + private Timer _timer; + + public RadioIndexerService(NrkRadioService radio, ILogger<RadioIndexerService> 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(); + } +} |
