Added NightAlert project for travel kit

This commit is contained in:
2021-06-10 14:39:06 -04:00
commit d38d9e3b7e
308 changed files with 35922 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NightscoutLibrary.Configuration
{
public interface INightscoutAlertConfiguration
{
String NightscoutBaseURL { get; set; }
String APISecretKey { get; set; }
}
}

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
namespace NightscoutLibrary.Configuration
{
public class MonoCompatibleNightscoutAlertConfiguration : INightscoutAlertConfiguration
{
private String _nightscoutBaseURL;
public string APISecretKey { get; set; }
public MonoCompatibleNightscoutAlertConfiguration(String NightscoutBaseURL, String APISecretKey)
{
this.NightscoutBaseURL = NightscoutBaseURL;
this.APISecretKey = APISecretKey;
}
public string NightscoutBaseURL
{
get { return _nightscoutBaseURL; }
set
{
_nightscoutBaseURL = value;
ResolveHostnameFromURL();
}
}
private void ResolveHostnameFromURL()
{ //Convert any hostname notation into ip-address form to avoid Websocket4Net mono issue regarding hostnames
Uri nightscoutUri = new Uri(_nightscoutBaseURL);
String nightscoutHost = nightscoutUri.DnsSafeHost;
var hostInfo = Dns.GetHostEntry(nightscoutHost);
if(hostInfo.AddressList == null || !hostInfo.AddressList.Any())
throw new ApplicationException("An error occurred while resolving the Nightscout server address");
IPAddress address = hostInfo.AddressList.First();
_nightscoutBaseURL = _nightscoutBaseURL.Replace(nightscoutHost, address.ToString());
}
}
}