adding master api project
This commit is contained in:
60
Application/API/Master/Heartbeat.cs
Normal file
60
Application/API/Master/Heartbeat.cs
Normal file
@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using RestEase;
|
||||
using SharedLibraryCore;
|
||||
|
||||
namespace IW4MAdmin.Application.API.Master
|
||||
{
|
||||
public class Heartbeat
|
||||
{
|
||||
static IMasterApi api;
|
||||
|
||||
public static async Task Send(ApplicationManager mgr, bool firstHeartbeat = false)
|
||||
{
|
||||
|
||||
if (firstHeartbeat)
|
||||
{
|
||||
api = RestClient.For<IMasterApi>("http://127.0.0.1");
|
||||
|
||||
var token = await api.Authenticate(new AuthenticationId()
|
||||
{
|
||||
Id = mgr.GetApplicationSettings().Configuration().Id
|
||||
});
|
||||
|
||||
api.AuthorizationToken = $"Bearer {token.AccessToken}";
|
||||
}
|
||||
|
||||
var instance = new ApiInstance()
|
||||
{
|
||||
Id = mgr.GetApplicationSettings().Configuration().Id,
|
||||
Uptime = (int)(DateTime.UtcNow - mgr.StartTime).TotalSeconds,
|
||||
Version = (float)Program.Version,
|
||||
Servers = mgr.Servers.Select(s =>
|
||||
new ApiServer()
|
||||
{
|
||||
ClientNum = s.ClientNum,
|
||||
Game = s.GameName.ToString(),
|
||||
Gametype = s.Gametype,
|
||||
Hostname = s.Hostname,
|
||||
Map = s.CurrentMap.Name,
|
||||
MaxClientNum = s.MaxClients,
|
||||
Id = s.GetHashCode(),
|
||||
Port = (short)s.GetPort()
|
||||
}).ToList()
|
||||
};
|
||||
|
||||
if (firstHeartbeat)
|
||||
{
|
||||
instance = await api.AddInstance(instance);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
instance = await api.UpdateInstance(instance.Id, instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user