add some UI stuff

This commit is contained in:
Stanley Dimant
2022-06-16 18:55:19 +02:00
parent 4f72daa0eb
commit f643b413f2
8 changed files with 311 additions and 150 deletions

View File

@@ -5,32 +5,74 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MareSynchronos.WebAPI
{
public class ApiController
public class ApiController : IDisposable
{
private readonly Configuration pluginConfiguration;
private string SecretKey => pluginConfiguration.ClientSecret;
private const string mainService = "https://localhost:6591";
public string UID { get; private set; } = string.Empty;
public string SecretKey => pluginConfiguration.ClientSecret.ContainsKey(ApiUri) ? pluginConfiguration.ClientSecret[ApiUri] : string.Empty;
private string CacheFolder => pluginConfiguration.CacheFolder;
private string ApiUri => pluginConfiguration.ApiUri;
public bool UseCustomService
{
get => pluginConfiguration.UseCustomService;
set
{
pluginConfiguration.UseCustomService = value;
_ = Heartbeat();
pluginConfiguration.Save();
}
}
private string ApiUri => UseCustomService ? pluginConfiguration.ApiUri : mainService;
public bool IsConnected { get; set; }
Task heartbeatTask;
CancellationTokenSource cts;
public ApiController(Configuration pluginConfiguration)
{
this.pluginConfiguration = pluginConfiguration;
cts = new CancellationTokenSource();
heartbeatTask = Task.Run(async () =>
{
PluginLog.Debug("Starting heartbeat to " + ApiUri);
while (true && !cts.IsCancellationRequested)
{
await Heartbeat();
await Task.Delay(TimeSpan.FromSeconds(15), cts.Token);
}
PluginLog.Debug("Stopping heartbeat");
}, cts.Token);
}
public async Task Heartbeat()
{
PluginLog.Debug("Sending heartbeat to " + ApiUri);
try
{
PluginLog.Debug("Sending heartbeat to " + ApiUri);
if (ApiUri != mainService) throw new Exception();
IsConnected = true;
}
catch
{
IsConnected = false;
}
}
public async Task<(string, string)> Register()
public async Task Register()
{
PluginLog.Debug("Registering at service " + ApiUri);
return (string.Empty, string.Empty);
var response = ("RandomSecretKey", "RandomUID");
pluginConfiguration.ClientSecret[ApiUri] = response.Item1;
UID = response.Item2;
PluginLog.Debug(pluginConfiguration.ClientSecret[ApiUri]);
// pluginConfiguration.Save();
}
public async Task UploadFile(string filePath)
@@ -73,5 +115,10 @@ namespace MareSynchronos.WebAPI
List<string> whitelist = new();
return whitelist;
}
public void Dispose()
{
cts?.Cancel();
}
}
}