using BetterSecondBot.bottypes; using BetterSecondBot.Static; using EmbedIO; using EmbedIO.Routing; using EmbedIO.WebApi; using System; using System.Collections.Generic; using System.Text; using OpenMetaverse; using Newtonsoft.Json; using BetterSecondBotShared.Static; namespace BetterSecondBot.HttpService { public class HTTP_Info : WebApiControllerWithTokens { public HTTP_Info(SecondBot mainbot, TokenStorage setuptokens) : base(mainbot, setuptokens) { } [About("Fetchs the current bot")] [ReturnHints("The build ID of the bot")] [Route(HttpVerbs.Get, "/Version/{token}")] public object Version(string token) { if (tokens.Allow(token, "info", "Version", handleGetClientIP()) == false) { return Failure("Token not accepted", "Version"); } return BasicReply(bot.MyVersion, "Version"); } [About("Fetchs the name of the bot")] [ReturnHints("Firstname Lastname")] [Route(HttpVerbs.Get, "/Name/{token}")] public object Name(string token) { if (tokens.Allow(token, "info", "Name", handleGetClientIP()) == false) { return Failure("Token not accepted", "Name"); } return BasicReply(bot.GetClient.Self.FirstName + " " + bot.GetClient.Self.LastName, "Name"); } [About("Fetchs the current parcels name")] [ReturnHints("Parcelname")] [ReturnHints("Error parcel not found")] [ReturnHints("Error not in a sim")] [Route(HttpVerbs.Get, "/ParcelName/{token}")] public object ParcelName(string token) { if (tokens.Allow(token, "info", "ParcelName", handleGetClientIP()) == false) { return Failure("Token not accepted", "ParcelName"); } if (bot.GetClient.Network.CurrentSim == null) { return Failure("Error not in a sim", "ParcelName"); } int localid = bot.GetClient.Parcels.GetParcelLocalID(bot.GetClient.Network.CurrentSim, bot.GetClient.Self.SimPosition); if (bot.GetClient.Network.CurrentSim.Parcels.ContainsKey(localid) == false) { return Failure("Error parcel not found", "ParcelName"); } return BasicReply(bot.GetClient.Network.CurrentSim.Parcels[localid].Name, "ParcelName"); } [About("Requests the current unixtime at the bot")] [ReturnHints("Unixtime")] [Route(HttpVerbs.Get, "/UnixTimeNow/{token}")] public object UnixTimeNow(string token) { if (tokens.Allow(token, "info", "UnixTimeNow", handleGetClientIP()) == false) { return Failure("Token not accepted", "UnixTimeNow"); } return BasicReply(helpers.UnixTimeNow().ToString(), "UnixTimeNow"); } [About("Fetchs the current region name")] [ReturnHints("Regionname")] [ReturnHints("Error not in a sim")] [Route(HttpVerbs.Get, "/SimName/{token}")] public object SimName(string token) { if (tokens.Allow(token, "info", "SimName", handleGetClientIP()) == false) { return Failure("Token not accepted", "SimName"); } if (bot.GetClient.Network.CurrentSim == null) { return Failure("Error not in a sim", "SimName"); } return BasicReply(bot.GetClient.Network.CurrentSim.Name, "SimName"); } [About("Fetchs the current location of the bot")] [ReturnHints("array of X,Y,Z values")] [ReturnHints("Error not in a sim")] [Route(HttpVerbs.Get, "/GetPosition/{token}")] public object GetPosition(string token) { if (tokens.Allow(token, "info", "GetPosition", handleGetClientIP()) == false) { return Failure("Token not accepted", "GetPosition"); } if (bot.GetClient.Network.CurrentSim == null) { return Failure("Error not in a sim", "GetPosition"); } Dictionary pos = new Dictionary(); pos.Add("x", (int)Math.Round(bot.GetClient.Self.SimPosition.X)); pos.Add("y", (int)Math.Round(bot.GetClient.Self.SimPosition.Y)); pos.Add("z", (int)Math.Round(bot.GetClient.Self.SimPosition.Z)); return BasicReply(JsonConvert.SerializeObject(pos), "GetPosition"); } } }