diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-12-05 04:04:25 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-12-05 04:04:25 +0100 |
| commit | 8542e0655a1954c56c8312c47b8f93f81ddfd88f (patch) | |
| tree | a76ac41102b747c12549746f017ff368a3b46f8d /src/Services/Hosted | |
| parent | 9ab1cb97e92b4e6139ce14cb0a2eeafde8168758 (diff) | |
| download | lettnytt-8542e0655a1954c56c8312c47b8f93f81ddfd88f.tar.xz lettnytt-8542e0655a1954c56c8312c47b8f93f81ddfd88f.zip | |
feat: Create hosted service to regularly index radio series
Diffstat (limited to 'src/Services/Hosted')
| -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(); + } +} |
