Medusa.net/Medusa.Core/Handlers/Boot/GetServicesHandler.cs

83 lines
3.0 KiB
C#
Raw Normal View History

using Medusa.Core.Attributes;
using System.Xml.Linq;
namespace Medusa.Core.Handlers.Boot
{
[Handler("services", "get")]
public class GetServicesHandler(ILogger<GetServicesHandler> logger, XDocument body) : IHandler
{
private readonly ILogger<GetServicesHandler> _logger = logger;
private readonly XDocument _body = body;
private const string CommonUrl = "http://localhost:5293/service/services/";
public Task<XDocument> HandleAsync(string model)
{
var services = CreateCoreServicesElement();
switch(model.Split(":")[0])
{
case "KFC":
AddKfcServices(services);
break;
case "MDX":
AddMdxServices(services);
break;
}
var document = new XDocument(new XElement("response", services));
return Task.FromResult(document);
}
private static XElement CreateCoreServicesElement()
{
var services = new XElement("services",
new XAttribute("expire", "3600"),
new XAttribute("method", "get"),
new XAttribute("mode", "operation"),
new XAttribute("status", "0"));
var coreServices = new string[]{
"cardmng", "facility", "message", "numbering", "package", "pcbevent", "pcbtracker", "pkglist",
"posevent", "userdata", "userid", "eacoin", "dlstatus", "netlog", "info", "reference", "sidmgr"
};
foreach(var service in coreServices)
{
services.Add(new XElement("item",
new XAttribute("name", service),
new XAttribute("url", $"{CommonUrl}{service}")));
}
services.Add(new XElement("item", new XAttribute("name", "ntp"),
new XAttribute("url", "ntp://pool.ntp.org/")));
services.Add(new XElement("item", new XAttribute("name", "keepalive"),
new XAttribute("url",
"http://127.0.0.1/keepalive?pa=127.0.0.1&ia=127.0.0.1&ga=127.0.0.1&ma=127.0.0.1&t1=2&t2=10")));
return services;
}
private static void AddKfcServices(XElement services)
{
const string sdvxurl = "http://127.0.0.1/service/services/sdvx";
string[] kfcServices = [
"local", "local2", "lobby", "slocal", "slocal2", "sglocal", "sglocal2", "lab", "globby",
"slobby", "sglobby"
];
foreach(string service in kfcServices)
services.Add(new XElement("item", new XAttribute("name", service), new XAttribute("url", sdvxurl)));
}
private static void AddMdxServices(XElement services)
{
const string mdxurl = "http://127.0.0.1/service/services/ddr";
string[] mdxServices = ["local"];
foreach(string service in mdxServices)
services.Add(new XElement("item", new XAttribute("name", service), new XAttribute("url", mdxurl)));
}
}
}