Inventory commands

corrects UUID check for rez object, adds new inventoryfolders limited command.
This commit is contained in:
Madpeter 2021-08-21 02:33:47 +01:00
parent 5cf427c500
commit 13fc38e81f
2 changed files with 41 additions and 7 deletions

View file

@ -28,14 +28,14 @@ namespace BetterSecondBot.HttpService
{
return Failure("Token not accepted", "RezObject", new [] { item });
}
if (UUID.TryParse(item, out UUID targetitem) == true)
if (UUID.TryParse(item, out UUID targetitem) == false)
{
return Failure("Invaild item UUID", "RezObject", new [] { item });
return Failure("Invaild item UUID: "+ item, "RezObject", new [] { item });
}
InventoryItem itm = bot.GetClient.Inventory.FetchItem(targetitem, bot.GetClient.Self.AgentID, (5 * 1000));
if (itm == null)
{
return Failure("Unable to find item", "RezObject", new [] { item });
return Failure("Unable to find item: " + item, "RezObject", new [] { item });
}
UUID rezedobject = bot.GetClient.Inventory.RequestRezFromInventory(bot.GetClient.Network.CurrentSim, bot.GetClient.Self.SimRotation, bot.GetClient.Self.RelativePosition, itm);
return BasicReply(rezedobject.ToString(), "RezObject", new [] { item });
@ -432,6 +432,22 @@ namespace BetterSecondBot.HttpService
return Failure("Error", "InventoryFolders");
}
[About("Requests folders limited to selected folder")]
[ArgHints("targetfolder", "URLARG", "the UUID of the folder or root")]
[ReturnHints("single InventoryMapFolder")]
[ReturnHints("Error")]
[Route(HttpVerbs.Get, "/InventoryFoldersLimited/{targetfolder}/{token}")]
public object InventoryFoldersLimited(string targetfolder,string token)
{
if (tokens.Allow(token, "inventory", "InventoryFoldersLimited", handleGetClientIP()) == false)
{
return Failure("Token not accepted", "InventoryFoldersLimited");
}
string reply = HelperInventory.MapFolderJson(bot, targetfolder,false);
if (reply != null) return BasicReply(reply, "InventoryFoldersLimited");
return Failure("Error", "InventoryFoldersLimited");
}
[About("Requests the contents of a folder as an array of InventoryMapItem<br/>Formated as follows<br/>InventoryMapItem<br/><ul><li>id: UUID</li><li>name: String</li><li>typename: String</li></ul>")]
[ReturnHints("array of InventoryMapItem")]
[ReturnHints("Invaild folder UUID")]

View file

@ -113,19 +113,34 @@ namespace BetterSecondBot.Static
return new KeyValuePair<string,string>(foldername,output.ToString());
}
public static string MapFolderJson(CommandsBot bot)
public static string MapFolderJson(CommandsBot bot,string targetFolder="root", bool subfolders = true)
{
if (bot.GetClient.Inventory.Store != null)
{
if (bot.GetClient.Inventory.Store.RootFolder != null)
{
return JsonConvert.SerializeObject(DoMapFolderJson(bot, bot.GetClient.Inventory.Store.RootFolder));
InventoryFolder topLevel = null;
if (targetFolder == "root")
{
topLevel = bot.GetClient.Inventory.Store.RootFolder;
}
else
{
if(UUID.TryParse(targetFolder, out UUID folderUUID) == true)
{
topLevel = new InventoryFolder(folderUUID);
}
}
if (topLevel != null)
{
return JsonConvert.SerializeObject(DoMapFolderJson(bot, topLevel, subfolders));
}
}
}
return null;
}
public static InventoryMapFolder DoMapFolderJson(CommandsBot bot, InventoryFolder folder)
public static InventoryMapFolder DoMapFolderJson(CommandsBot bot, InventoryFolder folder, bool subfolders=true)
{
InventoryMapFolder ReplyFolder = new InventoryMapFolder();
ReplyFolder.id = folder.UUID.ToString();
@ -136,7 +151,10 @@ namespace BetterSecondBot.Static
{
if (R.GetType() == typeof(InventoryFolder))
{
ReplyFolder.subfolders.Add(DoMapFolderJson(bot, (InventoryFolder)R));
if (subfolders == true)
{
ReplyFolder.subfolders.Add(DoMapFolderJson(bot, (InventoryFolder)R, subfolders));
}
}
}
return ReplyFolder;