aboutsummaryrefslogtreecommitdiffstats
path: root/src/Services/Hosted
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-12-05 04:04:25 +0100
committerivarlovlie <git@ivarlovlie.no>2022-12-05 04:04:25 +0100
commit8542e0655a1954c56c8312c47b8f93f81ddfd88f (patch)
treea76ac41102b747c12549746f017ff368a3b46f8d /src/Services/Hosted
parent9ab1cb97e92b4e6139ce14cb0a2eeafde8168758 (diff)
downloadlettnytt-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.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();
+ }
+}