From 3b08f17fc247a14abd7967ffb212533ac00b418b Mon Sep 17 00:00:00 2001 From: diva Date: Thu, 26 Mar 2009 03:45:49 +0000 Subject: [PATCH] Half-way through supporting inventory access from outside the regions -- HG standalones only, for now. --- .../Hypergrid/HGStandaloneInventoryService.cs | 93 +++++++++++++++++-- 1 file changed, 84 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs index 1efac8debb..879e8852de 100644 --- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs +++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryService.cs @@ -340,6 +340,12 @@ namespace OpenSim.Region.CoreModules.Hypergrid return invCollection; } + public bool RemoveFolder(InventoryFolderBase folder) + { + m_log.Debug("[HGStandaloneInvService]: Removefolder: Operation not implemented yet."); + return false; + } + public InventoryItemBase GetInventoryItem(InventoryItemBase item) { m_log.Info("[HGStandaloneInvService]: Processing request for item " + item.ID); @@ -350,6 +356,61 @@ namespace OpenSim.Region.CoreModules.Hypergrid return item; } + public InventoryItemBase AddItem(InventoryItemBase item) + { + if (m_inventoryService.AddItem(item)) + return item; + else + { + item.ID = UUID.Zero; + return item; + } + } + + public InventoryItemBase UpdateItem(InventoryItemBase item) + { + if (m_inventoryService.UpdateItem(item)) + return item; + else + { + item.ID = UUID.Zero; + return item; + } + } + + public InventoryItemBase MoveItem(InventoryItemBase newitem) + { + InventoryItemBase Item = m_inventoryService.GetInventoryItem(newitem.ID); + if (Item != null) + { + if (newitem.Name != String.Empty) + { + Item.Name = newitem.Name; + } + Item.Folder = newitem.Folder; + m_inventoryService.UpdateItem(Item); + return Item; + } + else + { + m_log.Debug("[HGStandaloneInvService]: Failed to find item " + newitem.ID); + newitem.ID = UUID.Zero; + return newitem; + } + + } + public InventoryItemBase DeleteItem(InventoryItemBase item) + { + item = m_inventoryService.GetInventoryItem(item.ID); + if (m_inventoryService.DeleteItem(item)) + return item; + else + { + item.ID = UUID.Zero; + return item; + } + } + /// /// Guid to UUID wrapper for same name IInventoryServices method /// @@ -391,11 +452,18 @@ namespace OpenSim.Region.CoreModules.Hypergrid if (asset == null) { m_log.Debug(" >> Sending assetID " + item.AssetID); - asset = new AssetBase(item.AssetID, "NULL"); + asset = new AssetBase(item.AssetID, "NULL"); // send an asset with no data } return asset; } + public bool PostAsset(AssetBase asset) + { + m_log.Info("[HGStandaloneInvService]: Post asset " + asset.FullID); + m_assetProvider.CreateAsset(asset); + return true; + } + #region Caps Dictionary> invCaps = new Dictionary>(); @@ -561,8 +629,6 @@ namespace OpenSim.Region.CoreModules.Hypergrid httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( "POST", AddAndGetCapUrl(authToken, "/FetchDescendants/", caps), FetchDescendants, CheckAuthSession)); - httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( - "POST", AddAndGetCapUrl(authToken, "/GetItem/", caps), GetInventoryItem, CheckAuthSession)); httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( "POST", AddAndGetCapUrl(authToken, "/NewFolder/", caps), m_inventoryService.AddFolder, CheckAuthSession)); httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( @@ -571,15 +637,24 @@ namespace OpenSim.Region.CoreModules.Hypergrid "POST", AddAndGetCapUrl(authToken, "/MoveFolder/", caps), m_inventoryService.MoveFolder, CheckAuthSession)); httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( "POST", AddAndGetCapUrl(authToken, "/PurgeFolder/", caps), m_inventoryService.PurgeFolder, CheckAuthSession)); - httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( - "POST", AddAndGetCapUrl(authToken, "/NewItem/", caps), m_inventoryService.AddItem, CheckAuthSession)); - httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( - "POST", AddAndGetCapUrl(authToken, "/DeleteItem/", caps), m_inventoryService.DeleteItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/RemoveFolder/", caps), RemoveFolder, CheckAuthSession)); + + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/GetItem/", caps), GetInventoryItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/NewItem/", caps), AddItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/UpdateItem/", caps), UpdateItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/MoveItem/", caps), MoveItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/DeleteItem/", caps), DeleteItem, CheckAuthSession)); httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( "POST", AddAndGetCapUrl(authToken, "/GetAsset/", caps), GetAsset, CheckAuthSession)); - //httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( - // "POST", AddAndGetCapUrl(authToken, "/PostAsset/", caps), m_inventoryService.DeleteItem, CheckAuthSession)); + httpServer.AddStreamHandler(new RestDeserialiseSecureHandler( + "POST", AddAndGetCapUrl(authToken, "/PostAsset/", caps), PostAsset, CheckAuthSession)); lock (invCaps) invCaps.Add(userID, caps);