Added endpoint handling there
This commit is contained in:
@@ -1,9 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using TOOHUCardAPI.Data;
|
||||||
|
|
||||||
namespace TOOHUCardAPI.Controllers
|
namespace TOOHUCardAPI.Controllers
|
||||||
{
|
{
|
||||||
@@ -11,5 +13,43 @@ namespace TOOHUCardAPI.Controllers
|
|||||||
[ApiController]
|
[ApiController]
|
||||||
public class PlayerDataController : ControllerBase
|
public class PlayerDataController : ControllerBase
|
||||||
{
|
{
|
||||||
|
private delegate Task<object> EndpointHandler(string requestBody);
|
||||||
|
// Mapping of method => handler
|
||||||
|
private Dictionary<string, EndpointHandler> registeredEndpointHandlers;
|
||||||
|
|
||||||
|
private void RegisterEndpointHandlers()
|
||||||
|
{
|
||||||
|
MethodInfo[] methods = typeof(PlayerDataController).GetMethods();
|
||||||
|
registeredEndpointHandlers = methods
|
||||||
|
.Aggregate(new Dictionary<string, EndpointHandler>(), (handlers, m) =>
|
||||||
|
{
|
||||||
|
Attribute attr = m.GetCustomAttribute(typeof(EndpointHandlerAttribute), false);
|
||||||
|
if (attr != null)
|
||||||
|
{
|
||||||
|
EndpointHandlerAttribute e = (EndpointHandlerAttribute) attr;
|
||||||
|
handlers.Add(e.Method, (EndpointHandler)m.CreateDelegate(typeof(EndpointHandler), this));
|
||||||
|
}
|
||||||
|
return handlers;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public PlayerDataController()
|
||||||
|
{
|
||||||
|
RegisterEndpointHandlers();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The game uses a single endpoint for player data.
|
||||||
|
* The object they send has a method field that's used to decide what's being done
|
||||||
|
* So let's use a single entry point and redirect based on that
|
||||||
|
*/
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<object> EntryPoint()
|
||||||
|
{
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
15
TOOHUCardAPI/Data/EndpointHandlerAttribute.cs
Normal file
15
TOOHUCardAPI/Data/EndpointHandlerAttribute.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace TOOHUCardAPI.Data
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Method)]
|
||||||
|
public class EndpointHandlerAttribute : System.Attribute
|
||||||
|
{
|
||||||
|
public string Method;
|
||||||
|
|
||||||
|
public EndpointHandlerAttribute(string method)
|
||||||
|
{
|
||||||
|
Method = method;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
8
TOOHUCardAPI/Models/PlayerDataRequestObjects.cs
Normal file
8
TOOHUCardAPI/Models/PlayerDataRequestObjects.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace TOOHUCardAPI.Models
|
||||||
|
{
|
||||||
|
public class PlayerDataRequestObject
|
||||||
|
{
|
||||||
|
public string Method { get; set; }
|
||||||
|
public string[] Ids { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ namespace TOOHUCardAPI.Models
|
|||||||
* Fields pulled from the game code
|
* Fields pulled from the game code
|
||||||
* Looking up Gamerules.Playerdata
|
* Looking up Gamerules.Playerdata
|
||||||
*/
|
*/
|
||||||
public class PlayerDataResponsePlayerObject
|
public class PlayerDataGetResponseObject
|
||||||
{
|
{
|
||||||
|
|
||||||
public string Code { get; set; }
|
public string Code { get; set; }
|
||||||
Reference in New Issue
Block a user