aboutsummaryrefslogtreecommitdiffstats
path: root/src/Services/Hosted
diff options
context:
space:
mode:
Diffstat (limited to 'src/Services/Hosted')
-rw-r--r--src/Services/Hosted/RadioIndexerService.cs34
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();
+ }
+}