From c44cc4030571388dc9d8ff5df883194c45a66a95 Mon Sep 17 00:00:00 2001 From: Dave Thaler Date: Tue, 8 Oct 2024 18:10:44 -0700 Subject: [PATCH] Store orcasound site (dev vs prod) in cosmos db Signed-off-by: Dave Thaler --- OrcanodeMonitor/Core/Fetcher.cs | 24 +++++++++++++++--------- OrcanodeMonitor/Models/Orcanode.cs | 8 ++++++-- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/OrcanodeMonitor/Core/Fetcher.cs b/OrcanodeMonitor/Core/Fetcher.cs index 0680183..8f4261e 100644 --- a/OrcanodeMonitor/Core/Fetcher.cs +++ b/OrcanodeMonitor/Core/Fetcher.cs @@ -28,8 +28,9 @@ public class Fetcher { private static TimeZoneInfo _pacificTimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Los_Angeles"); private static HttpClient _httpClient = new HttpClient(); - private static string _orcasoundProdFeedsUrl = "https://live.orcasound.net/api/json/feeds"; - private static string _orcasoundDevFeedsUrl = "https://dev.orcasound.net/api/json/feeds"; + private static string _orcasoundProdSite = "live.orcasound.net"; + private static string _orcasoundDevSite = "dev.orcasound.net"; + private static string _orcasoundFeedsUrlPath = "/api/json/feeds"; private static string _dataplicityDevicesUrl = "https://apps.dataplicity.com/devices/"; private static string _orcaHelloHydrophonesUrl = "https://aifororcasdetections2.azurewebsites.net/api/hydrophones"; private static DateTime _unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); @@ -448,10 +449,11 @@ public async static Task UpdateDataplicityDataAsync(OrcanodeMonitorContext conte } } - private async static Task GetOrcasoundDataAsync(OrcanodeMonitorContext context, string url) + private async static Task GetOrcasoundDataAsync(OrcanodeMonitorContext context, string site) { try { + string url = "https://" + site + _orcasoundFeedsUrlPath; string json = await _httpClient.GetStringAsync(url); if (json.IsNullOrEmpty()) { @@ -476,7 +478,7 @@ public async static Task UpdateDataplicityDataAsync(OrcanodeMonitorContext conte } } - private static void UpdateOrcasoundNode(JsonElement feed, List foundList, List unfoundList, OrcanodeMonitorContext context) + private static void UpdateOrcasoundNode(JsonElement feed, List foundList, List unfoundList, OrcanodeMonitorContext context, string site) { if (!feed.TryGetProperty("id", out var feedId)) { @@ -574,6 +576,10 @@ private static void UpdateOrcasoundNode(JsonElement feed, List foundLi { node.OrcasoundFeedId = feedId.ToString(); } + if (!site.IsNullOrEmpty()) + { + node.OrcasoundHost = site; + } if (orcasoundName != node.OrcasoundName) { // We just detected a name change. @@ -597,14 +603,14 @@ private static void UpdateOrcasoundNode(JsonElement feed, List foundLi } } - private async static Task UpdateOrcasoundSiteDataAsync(OrcanodeMonitorContext context, string url, List foundList, List unfoundList) + private async static Task UpdateOrcasoundSiteDataAsync(OrcanodeMonitorContext context, string site, List foundList, List unfoundList) { - JsonElement? dataArray = await GetOrcasoundDataAsync(context, url); + JsonElement? dataArray = await GetOrcasoundDataAsync(context, site); if (dataArray.HasValue) { foreach (JsonElement feed in dataArray.Value.EnumerateArray()) { - UpdateOrcasoundNode(feed, foundList, unfoundList, context); + UpdateOrcasoundNode(feed, foundList, unfoundList, context, site); } } } @@ -623,8 +629,8 @@ public async static Task UpdateOrcasoundDataAsync(OrcanodeMonitorContext context try { - await UpdateOrcasoundSiteDataAsync(context, _orcasoundProdFeedsUrl, foundList, unfoundList); - await UpdateOrcasoundSiteDataAsync(context, _orcasoundDevFeedsUrl, foundList, unfoundList); + await UpdateOrcasoundSiteDataAsync(context, _orcasoundProdSite, foundList, unfoundList); + await UpdateOrcasoundSiteDataAsync(context, _orcasoundDevSite, foundList, unfoundList); // Mark any remaining unfound nodes as absent. foreach (var unfoundNode in unfoundList) diff --git a/OrcanodeMonitor/Models/Orcanode.cs b/OrcanodeMonitor/Models/Orcanode.cs index 014ddd3..2bd2c48 100644 --- a/OrcanodeMonitor/Models/Orcanode.cs +++ b/OrcanodeMonitor/Models/Orcanode.cs @@ -51,6 +51,7 @@ public Orcanode() OrcasoundName = string.Empty; OrcasoundSlug = string.Empty; OrcasoundFeedId = string.Empty; + OrcasoundHost = string.Empty; S3Bucket = string.Empty; S3NodeName = string.Empty; AgentVersion = string.Empty; @@ -187,6 +188,11 @@ public Orcanode() /// Audio stream status of most recent sample (defaults to absent). /// public OrcanodeOnlineStatus? AudioStreamStatus { get; set; } + + /// + /// Orcasound site host (defaults to empty). + /// + public string OrcasoundHost { get; set; } #endregion persisted @@ -316,8 +322,6 @@ private bool IsDev } } - public string OrcasoundHost => IsDev ? "dev.orcasound.net" : "live.orcasound.net"; - public string Type => IsDev ? "Dev" : "Prod"; public string OrcasoundOnlineStatusString {