new commands and http api improvements
This commit is contained in:
parent
97c6c52abc
commit
de9364a2d8
9 changed files with 307 additions and 19 deletions
|
|
@ -404,12 +404,12 @@ namespace BetterSecondBotShared.Json
|
||||||
{
|
{
|
||||||
LogFormater.Warn("Http disabled: Http_Host must be vaild or \"docker\" - Given: (" + jsonConfig.Http_Host + ")");
|
LogFormater.Warn("Http disabled: Http_Host must be vaild or \"docker\" - Given: (" + jsonConfig.Http_Host + ")");
|
||||||
}
|
}
|
||||||
else if (jsonConfig.Http_Host == "docker")
|
|
||||||
{
|
|
||||||
jsonConfig.Http_Host = "http://*:8080";
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (jsonConfig.Http_Host == "docker")
|
||||||
|
{
|
||||||
|
jsonConfig.Http_Host = "http://*:80";
|
||||||
|
}
|
||||||
jsonConfig.Http_Enable = true;
|
jsonConfig.Http_Enable = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,18 @@ namespace BetterSecondBot.HttpService
|
||||||
public SecondbotInventory(SecondBot mainbot, TokenStorage setuptokens) : base(mainbot, setuptokens) { }
|
public SecondbotInventory(SecondBot mainbot, TokenStorage setuptokens) : base(mainbot, setuptokens) { }
|
||||||
|
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/rezobject/{item}/{token}")]
|
||||||
|
public object rezobject(string item, string token, [FormField] string newname)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
bool status = bot.GetCommandsInterface.Call("RezObject", item);
|
||||||
|
return BasicReply(status.ToString());
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Route(HttpVerbs.Post, "/rename/{item}/{token}")]
|
[Route(HttpVerbs.Post, "/rename/{item}/{token}")]
|
||||||
public object rename(string item, string token, [FormField] string newname)
|
public object rename(string item, string token, [FormField] string newname)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -46,29 +46,129 @@ namespace BetterSecondBot.HttpService
|
||||||
}
|
}
|
||||||
|
|
||||||
[Route(HttpVerbs.Get, "/friends/{token}")]
|
[Route(HttpVerbs.Get, "/friends/{token}")]
|
||||||
public object friends(string token)
|
public object Friends(string token)
|
||||||
{
|
{
|
||||||
return BasicReply(bot.getJsonFriendlist());
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
return BasicReply(bot.getJsonFriendlist());
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/walkto/{x}/{y}/{z}/{token}")]
|
||||||
|
public object WalkTo(string x, string y, string z, string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
bool status = bot.GetCommandsInterface.Call("AutoPilot", "<"+x+","+y+","+z+">");
|
||||||
|
if (status == true)
|
||||||
|
{
|
||||||
|
return BasicReply("Accepted");
|
||||||
|
}
|
||||||
|
return BasicReply("Error Unable to AutoPilot to location");
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
[Route(HttpVerbs.Get, "/nearme/{token}")]
|
|
||||||
public object nearme(string token)
|
[Route(HttpVerbs.Get, "/gesture/{gesture}/{token}")]
|
||||||
|
public object Gesture(string gesture, string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
bool status = bot.GetCommandsInterface.Call("PlayGesture", gesture);
|
||||||
|
if (status == true)
|
||||||
|
{
|
||||||
|
return BasicReply("Accepted");
|
||||||
|
}
|
||||||
|
return BasicReply("Error with gesture");
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/teleport/{region}/{x}/{y}/{z}/{token}")]
|
||||||
|
public object Teleport(string region,string x, string y, string z, string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
bool status = bot.GetCommandsInterface.Call("Teleport", ""+region+"/" + x + "/" + y + "/" + z + "");
|
||||||
|
if (status == true)
|
||||||
|
{
|
||||||
|
return BasicReply("Accepted");
|
||||||
|
}
|
||||||
|
return BasicReply("Error Unable to Teleport to location");
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/regiontile/{regionname}/{token}")]
|
||||||
|
public object Regiontile(string regionname, string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
if (bot.GetClient.Grid.GetGridRegion(regionname, GridLayerType.Objects, out GridRegion region))
|
||||||
|
{
|
||||||
|
return BasicReply(region.MapImageID.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return BasicReply("Unable to find region");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/nearmewithdetails/{token}")]
|
||||||
|
public object NearmeWithDetails(string token)
|
||||||
{
|
{
|
||||||
if (bot.GetClient.Network.CurrentSim != null)
|
if (bot.GetClient.Network.CurrentSim != null)
|
||||||
{
|
{
|
||||||
Dictionary<UUID, string> NearMe = new Dictionary<UUID, string>();
|
List<NearMeDetails> BetterNearMe = new List<NearMeDetails>();
|
||||||
|
|
||||||
Dictionary<uint, Avatar> avcopy = bot.GetClient.Network.CurrentSim.ObjectsAvatars.Copy();
|
Dictionary<uint, Avatar> avcopy = bot.GetClient.Network.CurrentSim.ObjectsAvatars.Copy();
|
||||||
foreach (Avatar av in avcopy.Values)
|
foreach (Avatar av in avcopy.Values)
|
||||||
{
|
{
|
||||||
if (av.ID != bot.GetClient.Self.AgentID)
|
if (av.ID != bot.GetClient.Self.AgentID)
|
||||||
{
|
{
|
||||||
NearMe.Add(av.ID, av.Name);
|
NearMeDetails details = new NearMeDetails();
|
||||||
|
details.id = av.ID.ToString();
|
||||||
|
details.name = av.Name;
|
||||||
|
details.x = (int)Math.Round(av.Position.X);
|
||||||
|
details.y = (int)Math.Round(av.Position.Y);
|
||||||
|
details.z = (int)Math.Round(av.Position.Z);
|
||||||
|
details.range = (int)Math.Round(Vector3.Distance(av.Position,bot.GetClient.Self.SimPosition));
|
||||||
|
BetterNearMe.Add(details);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return BasicReply(JsonConvert.SerializeObject(NearMe));
|
return BasicReply(JsonConvert.SerializeObject(BetterNearMe));
|
||||||
}
|
}
|
||||||
return BasicReply("Error");
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/nearme/{token}")]
|
||||||
|
public object Nearme(string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
if (bot.GetClient.Network.CurrentSim != null)
|
||||||
|
{
|
||||||
|
Dictionary<UUID, string> NearMe = new Dictionary<UUID, string>();
|
||||||
|
Dictionary<uint, Avatar> avcopy = bot.GetClient.Network.CurrentSim.ObjectsAvatars.Copy();
|
||||||
|
foreach (Avatar av in avcopy.Values)
|
||||||
|
{
|
||||||
|
if (av.ID != bot.GetClient.Self.AgentID)
|
||||||
|
{
|
||||||
|
NearMe.Add(av.ID, av.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BasicReply(JsonConvert.SerializeObject(NearMe));
|
||||||
|
}
|
||||||
|
return BasicReply("Error not in a sim");
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Route(HttpVerbs.Get, "/hello")]
|
[Route(HttpVerbs.Get, "/hello")]
|
||||||
|
|
@ -107,6 +207,32 @@ namespace BetterSecondBot.HttpService
|
||||||
return BasicReply("Token not accepted");
|
return BasicReply("Token not accepted");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/regionname/{token}")]
|
||||||
|
public object Regionname(string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
return BasicReply(bot.GetClient.Network.CurrentSim.Name);
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Route(HttpVerbs.Get, "/location/{token}")]
|
||||||
|
public object Location(string token)
|
||||||
|
{
|
||||||
|
if (tokens.Allow(token, getClientIP()) == true)
|
||||||
|
{
|
||||||
|
Dictionary<string, int> pos = new Dictionary<string, int>();
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
return BasicReply("Token not accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
[Route(HttpVerbs.Post, "/command/{token}")]
|
[Route(HttpVerbs.Post, "/command/{token}")]
|
||||||
public async Task<object> command(string token)
|
public async Task<object> command(string token)
|
||||||
{
|
{
|
||||||
|
|
@ -136,5 +262,16 @@ namespace BetterSecondBot.HttpService
|
||||||
public string AuthCode { get; set; }
|
public string AuthCode { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class NearMeDetails
|
||||||
|
{
|
||||||
|
public string id { get; set; }
|
||||||
|
public string name { get; set; }
|
||||||
|
public int x { get; set; }
|
||||||
|
public int y { get; set; }
|
||||||
|
public int z { get; set; }
|
||||||
|
public int range { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -499,6 +499,12 @@ namespace BetterSecondBot.WikiMake
|
||||||
core.callable.Add(new friends());
|
core.callable.Add(new friends());
|
||||||
core.callable.Add(new nearme());
|
core.callable.Add(new nearme());
|
||||||
core.callable.Add(new hello());
|
core.callable.Add(new hello());
|
||||||
|
core.callable.Add(new regiontile());
|
||||||
|
core.callable.Add(new location());
|
||||||
|
core.callable.Add(new regionname());
|
||||||
|
core.callable.Add(new nearmewithdetails());
|
||||||
|
core.callable.Add(new walkto());
|
||||||
|
core.callable.Add(new teleport());
|
||||||
endpoints.Add(core);
|
endpoints.Add(core);
|
||||||
Endpoint inventory = new Endpoint();
|
Endpoint inventory = new Endpoint();
|
||||||
inventory.name = "inventory";
|
inventory.name = "inventory";
|
||||||
|
|
@ -508,6 +514,7 @@ namespace BetterSecondBot.WikiMake
|
||||||
inventory.callable.Add(new realuuid());
|
inventory.callable.Add(new realuuid());
|
||||||
inventory.callable.Add(new send());
|
inventory.callable.Add(new send());
|
||||||
inventory.callable.Add(new delete());
|
inventory.callable.Add(new delete());
|
||||||
|
inventory.callable.Add(new rezobject());
|
||||||
endpoints.Add(inventory);
|
endpoints.Add(inventory);
|
||||||
Endpoint im = new Endpoint();
|
Endpoint im = new Endpoint();
|
||||||
im.name = "im";
|
im.name = "im";
|
||||||
|
|
@ -795,6 +802,18 @@ namespace BetterSecondBot.WikiMake
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class gesture : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "Attempts to play a gesture";
|
||||||
|
values.Add("gesture", new KeyValuePair<string, string>("URLARG", "UUID of the gesture"));
|
||||||
|
returns.Add("Accepted");
|
||||||
|
returns.Add("Invaild gesture UUID for arg 1");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class command : postAPIcall
|
public class command : postAPIcall
|
||||||
{
|
{
|
||||||
public override void Setup()
|
public override void Setup()
|
||||||
|
|
@ -976,7 +995,7 @@ namespace BetterSecondBot.WikiMake
|
||||||
public override void Setup()
|
public override void Setup()
|
||||||
{
|
{
|
||||||
about = "fetchs the groupchat history";
|
about = "fetchs the groupchat history";
|
||||||
values.Add("group ", new KeyValuePair<string, string>("URLARG", "UUID of the group"));
|
values.Add("group", new KeyValuePair<string, string>("URLARG", "UUID of the group"));
|
||||||
returns.Add("Group UUID invaild");
|
returns.Add("Group UUID invaild");
|
||||||
returns.Add("Group Chat");
|
returns.Add("Group Chat");
|
||||||
base.Setup();
|
base.Setup();
|
||||||
|
|
@ -988,7 +1007,7 @@ namespace BetterSecondBot.WikiMake
|
||||||
public override void Setup()
|
public override void Setup()
|
||||||
{
|
{
|
||||||
about = "sends a message to the groupchat";
|
about = "sends a message to the groupchat";
|
||||||
values.Add("group ", new KeyValuePair<string, string>("URLARG", "UUID of the group"));
|
values.Add("group", new KeyValuePair<string, string>("URLARG", "UUID of the group"));
|
||||||
values.Add("message ", new KeyValuePair<string, string>("string", "the message to send"));
|
values.Add("message ", new KeyValuePair<string, string>("string", "the message to send"));
|
||||||
returns.Add("Group UUID invaild");
|
returns.Add("Group UUID invaild");
|
||||||
returns.Add("Processing");
|
returns.Add("Processing");
|
||||||
|
|
@ -1006,6 +1025,92 @@ namespace BetterSecondBot.WikiMake
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class location : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "Fetchs the current location of the bot";
|
||||||
|
returns.Add("array of X,Y,Z values");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class walkto : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "uses the AutoPilot to move to a location";
|
||||||
|
values.Add("x", new KeyValuePair<string, string>("URLARG", "X location to AutoPilot to"));
|
||||||
|
values.Add("y", new KeyValuePair<string, string>("URLARG", "Y location to AutoPilot to"));
|
||||||
|
values.Add("z", new KeyValuePair<string, string>("URLARG", "Z location to AutoPilot to"));
|
||||||
|
returns.Add("Error Unable to AutoPilot to location");
|
||||||
|
returns.Add("Accepted");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class teleport : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "uses the AutoPilot to move to a location";
|
||||||
|
values.Add("region", new KeyValuePair<string, string>("URLARG", "the name of the region we are going to"));
|
||||||
|
values.Add("x", new KeyValuePair<string, string>("URLARG", "X location"));
|
||||||
|
values.Add("y", new KeyValuePair<string, string>("URLARG", "Y location"));
|
||||||
|
values.Add("z", new KeyValuePair<string, string>("URLARG", "Z location"));
|
||||||
|
returns.Add("Error Unable to Teleport to location");
|
||||||
|
returns.Add("Accepted");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class regionname : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "Fetchs the current region name";
|
||||||
|
returns.Add("string regionname");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class nearmewithdetails : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "an improved version of near me with extra details<br/>NearMeDetails is a object formated as follows<br/><ul><li>id</li><li>name</li><li>x</li><li>y</li><li>z</li><li>range</li></ul>";
|
||||||
|
returns.Add("array NearMeDetails");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class regiontile : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "Fetchs the regions map tile";
|
||||||
|
values.Add("region", new KeyValuePair<string, string>("URLARG", "string name of region"));
|
||||||
|
returns.Add("Unable to find region");
|
||||||
|
returns.Add("Texture UUID");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class rezobject : APIcall
|
||||||
|
{
|
||||||
|
public override void Setup()
|
||||||
|
{
|
||||||
|
about = "rezs the item at the bots current location";
|
||||||
|
values.Add("item", new KeyValuePair<string, string>("URLARG", "UUID of item to rez"));
|
||||||
|
returns.Add("true|false");
|
||||||
|
base.Setup();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class localchatsay : postAPIcall
|
public class localchatsay : postAPIcall
|
||||||
{
|
{
|
||||||
public override void Setup()
|
public override void Setup()
|
||||||
|
|
@ -1017,4 +1122,6 @@ namespace BetterSecondBot.WikiMake
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
25
Core/Commands/Animation/PlayGesture.cs
Normal file
25
Core/Commands/Animation/PlayGesture.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace BSB.Commands.Animation
|
||||||
|
{
|
||||||
|
public class PlayGesture : CoreCommand_1arg
|
||||||
|
{
|
||||||
|
public override string[] ArgTypes { get { return new[] { "UUID" }; } }
|
||||||
|
public override string[] ArgHints { get { return new[] { "The UUID of the gesture to play" }; } }
|
||||||
|
public override string Helpfile { get { return "Triggers a gesture [once]"; } }
|
||||||
|
public override bool CallFunction(string[] args)
|
||||||
|
{
|
||||||
|
if (base.CallFunction(args) == true)
|
||||||
|
{
|
||||||
|
if (UUID.TryParse(args[0], out UUID gesture) == true)
|
||||||
|
{
|
||||||
|
InventoryItem itm = bot.GetClient.Inventory.FetchItem(gesture, bot.GetClient.Self.AgentID, (3 * 1000));
|
||||||
|
bot.GetClient.Self.PlayGesture(itm.AssetUUID);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return Failed("Invaild gesture UUID for arg 1");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,7 @@ namespace BSB.Commands.Movement
|
||||||
{
|
{
|
||||||
if (helpers.inrange(pos.Z, 0, 5000) == true)
|
if (helpers.inrange(pos.Z, 0, 5000) == true)
|
||||||
{
|
{
|
||||||
|
bot.GetClient.Self.AutoPilotCancel();
|
||||||
bot.GetClient.Self.Movement.TurnToward(pos, true);
|
bot.GetClient.Self.Movement.TurnToward(pos, true);
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
uint Globalx, Globaly;
|
uint Globalx, Globaly;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ namespace BSB.Commands.Movement
|
||||||
{
|
{
|
||||||
if(base.CallFunction(args) == true)
|
if(base.CallFunction(args) == true)
|
||||||
{
|
{
|
||||||
|
bot.GetClient.Self.AutoPilotCancel();
|
||||||
if (args[0].Contains("http://maps.secondlife.com/secondlife/") == true)
|
if (args[0].Contains("http://maps.secondlife.com/secondlife/") == true)
|
||||||
{
|
{
|
||||||
bot.TeleportWithSLurl(args[0]);
|
bot.TeleportWithSLurl(args[0]);
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ namespace BSB.bottypes
|
||||||
im_chat_unread.Add(avatar, false);
|
im_chat_unread.Add(avatar, false);
|
||||||
}
|
}
|
||||||
var date = DateTime.Now;
|
var date = DateTime.Now;
|
||||||
im_chat_history[avatar].Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + sendername + ":" + message + "");
|
im_chat_history[avatar].Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + sendername + ": " + message + "");
|
||||||
if (im_chat_history[avatar].Count > imchatlimit)
|
if (im_chat_history[avatar].Count > imchatlimit)
|
||||||
{
|
{
|
||||||
im_chat_history[avatar].RemoveAt(0);
|
im_chat_history[avatar].RemoveAt(0);
|
||||||
|
|
@ -78,7 +78,7 @@ namespace BSB.bottypes
|
||||||
public override void AddToLocalChat(string name, string message)
|
public override void AddToLocalChat(string name, string message)
|
||||||
{
|
{
|
||||||
var date = DateTime.Now;
|
var date = DateTime.Now;
|
||||||
LocalChat_history.Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ":" + message + "");
|
LocalChat_history.Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ": " + message + "");
|
||||||
if (LocalChat_history.Count > localchatlimit)
|
if (LocalChat_history.Count > localchatlimit)
|
||||||
{
|
{
|
||||||
LocalChat_history.RemoveAt(0);
|
LocalChat_history.RemoveAt(0);
|
||||||
|
|
@ -163,7 +163,7 @@ namespace BSB.bottypes
|
||||||
group_chat_unread.Add(group, false);
|
group_chat_unread.Add(group, false);
|
||||||
}
|
}
|
||||||
var date = DateTime.Now;
|
var date = DateTime.Now;
|
||||||
group_chat_history[group].Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ":" + message + "");
|
group_chat_history[group].Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ": " + message + "");
|
||||||
if (group_chat_history[group].Count > groupchatlimit)
|
if (group_chat_history[group].Count > groupchatlimit)
|
||||||
{
|
{
|
||||||
group_chat_history[group].RemoveAt(0);
|
group_chat_history[group].RemoveAt(0);
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,16 @@ namespace LibreMetaverse
|
||||||
[NonSerialized]
|
[NonSerialized]
|
||||||
private readonly GridClient Client;
|
private readonly GridClient Client;
|
||||||
|
|
||||||
private static readonly HttpClient httpClient = new HttpClient();
|
private static HttpClient httpClient;
|
||||||
|
|
||||||
public InventoryAISClient(GridClient client)
|
public InventoryAISClient(GridClient client)
|
||||||
{
|
{
|
||||||
Client = client;
|
Client = client;
|
||||||
|
|
||||||
|
HttpClientHandler clientHandler = new HttpClientHandler();
|
||||||
|
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
|
||||||
|
httpClient = new HttpClient(clientHandler);
|
||||||
|
|
||||||
httpClient.DefaultRequestHeaders.Accept.Clear();
|
httpClient.DefaultRequestHeaders.Accept.Clear();
|
||||||
httpClient.DefaultRequestHeaders.Add("User-Agent", "LibreMetaverse AIS Client");
|
httpClient.DefaultRequestHeaders.Add("User-Agent", "LibreMetaverse AIS Client");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue