using Medusa.Core.Attributes; using System.Xml.Linq; namespace Medusa.Core.Handlers.Boot { [Handler("services", "get")] public class GetServicesHandler(ILogger logger, XDocument body) : IHandler { private readonly ILogger _logger = logger; private readonly XDocument _body = body; private const string CommonUrl = "http://localhost:5293/service/services/"; public Task 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))); } } }