Get allocated key on install
parent
654943f4fd
commit
5f0b69c2c9
|
@ -62,6 +62,10 @@ namespace LANCommander.PlaynitePlugin
|
||||||
{
|
{
|
||||||
PowerShellRuntime.RunScript(PlayniteGame, ScriptType.Install);
|
PowerShellRuntime.RunScript(PlayniteGame, ScriptType.Install);
|
||||||
PowerShellRuntime.RunScript(PlayniteGame, ScriptType.NameChange, Plugin.Settings.PlayerName);
|
PowerShellRuntime.RunScript(PlayniteGame, ScriptType.NameChange, Plugin.Settings.PlayerName);
|
||||||
|
|
||||||
|
var key = Plugin.LANCommander.GetAllocatedKey(game.Id);
|
||||||
|
|
||||||
|
PowerShellRuntime.RunScript(PlayniteGame, ScriptType.KeyChange, $"\"{key}\"");
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,26 @@ namespace LANCommander.PlaynitePlugin
|
||||||
return response.Value;
|
return response.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetAllocatedKey(Guid id)
|
||||||
|
{
|
||||||
|
var macAddress = GetMacAddress();
|
||||||
|
|
||||||
|
var request = new KeyRequest()
|
||||||
|
{
|
||||||
|
GameId = id,
|
||||||
|
MacAddress = macAddress,
|
||||||
|
ComputerName = Environment.MachineName,
|
||||||
|
IpAddress = GetIpAddress(),
|
||||||
|
};
|
||||||
|
|
||||||
|
var response = PostRequest<Key>($"/api/Keys/GetAllocated/{id}", request);
|
||||||
|
|
||||||
|
if (response == null)
|
||||||
|
return String.Empty;
|
||||||
|
|
||||||
|
return response.Value;
|
||||||
|
}
|
||||||
|
|
||||||
public string GetNewKey(Guid id)
|
public string GetNewKey(Guid id)
|
||||||
{
|
{
|
||||||
var macAddress = GetMacAddress();
|
var macAddress = GetMacAddress();
|
||||||
|
|
|
@ -26,14 +26,42 @@ namespace LANCommander.Controllers.Api
|
||||||
return KeyService.Get(k => k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && k.ClaimedByMacAddress == keyRequest.MacAddress).First();
|
return KeyService.Get(k => k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && k.ClaimedByMacAddress == keyRequest.MacAddress).First();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Data.Models.Key> GetAllocated(Guid id, KeyRequest keyRequest)
|
||||||
|
{
|
||||||
|
var existing = KeyService.Get(k => k.Game.Id == id && k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && k.ClaimedByMacAddress == keyRequest.MacAddress).FirstOrDefault();
|
||||||
|
|
||||||
|
if (existing != null)
|
||||||
|
return existing;
|
||||||
|
else
|
||||||
|
return await AllocateNewKey(id, keyRequest);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("Allocate/{id}")]
|
[HttpPost("Allocate/{id}")]
|
||||||
public async Task<Data.Models.Key> Allocate(Guid id, KeyRequest keyRequest)
|
public async Task<Data.Models.Key> Allocate(Guid id, KeyRequest keyRequest)
|
||||||
{
|
{
|
||||||
var existing = KeyService.Get(k => k.Game.Id == id && k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && keyRequest.MacAddress == keyRequest.MacAddress).FirstOrDefault();
|
var existing = KeyService.Get(k => k.Game.Id == id && k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && keyRequest.MacAddress == keyRequest.MacAddress).FirstOrDefault();
|
||||||
|
|
||||||
if (existing != null)
|
var availableKey = KeyService.Get(k => k.Game.Id == id)
|
||||||
|
.Where(k =>
|
||||||
|
(k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && String.IsNullOrWhiteSpace(k.ClaimedByMacAddress))
|
||||||
|
||
|
||||||
|
(k.AllocationMethod == Data.Models.KeyAllocationMethod.UserAccount && k.ClaimedByUser == null))
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (availableKey == null && existing != null)
|
||||||
|
return existing;
|
||||||
|
else if (availableKey == null)
|
||||||
|
return null;
|
||||||
|
else
|
||||||
|
{
|
||||||
await KeyService.Release(existing.Id);
|
await KeyService.Release(existing.Id);
|
||||||
|
|
||||||
|
return await KeyService.Allocate(availableKey, keyRequest.MacAddress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<Data.Models.Key> AllocateNewKey(Guid id, KeyRequest keyRequest)
|
||||||
|
{
|
||||||
var availableKey = KeyService.Get(k => k.Game.Id == id)
|
var availableKey = KeyService.Get(k => k.Game.Id == id)
|
||||||
.Where(k =>
|
.Where(k =>
|
||||||
(k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && String.IsNullOrWhiteSpace(k.ClaimedByMacAddress))
|
(k.AllocationMethod == Data.Models.KeyAllocationMethod.MacAddress && String.IsNullOrWhiteSpace(k.ClaimedByMacAddress))
|
||||||
|
|
Loading…
Reference in New Issue