diff --git a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs index 3354b84311..c74c431df3 100644 --- a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs +++ b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs @@ -84,6 +84,14 @@ namespace OpenSim.Server.Handlers.Inventory new RestDeserialiseSecureHandler( "POST", "/GetInventory/", GetUserInventory, CheckAuthSession)); + m_httpServer.AddStreamHandler( + new RestDeserialiseSecureHandler>( + "GET", "/SystemFolders/", GetSystemFolders, CheckAuthSession)); + + m_httpServer.AddStreamHandler( + new RestDeserialiseSecureHandler( + "POST", "/GetFolderContent/", GetFolderContent, CheckAuthSession)); + m_httpServer.AddStreamHandler( new RestDeserialiseSecureHandler( "POST", "/UpdateFolder/", m_InventoryService.UpdateFolder, CheckAuthSession)); @@ -155,6 +163,40 @@ namespace OpenSim.Server.Handlers.Inventory return m_InventoryService.GetUserInventory(userID); } + public Dictionary GetSystemFolders(Guid guid) + { + UUID userID = new UUID(guid); + return GetSystemFolders(userID); + } + + // This shouldn't be here, it should be in the inventory service. + // But I don't want to deal with types and dependencies for now. + private Dictionary GetSystemFolders(UUID userID) + { + InventoryFolderBase root = m_InventoryService.GetRootFolder(userID); + if (root != null) + { + InventoryCollection content = m_InventoryService.GetFolderContent(userID, root.ID); + if (content != null) + { + Dictionary folders = new Dictionary(); + foreach (InventoryFolderBase folder in content.Folders) + { + if ((folder.Type != (short)AssetType.Folder) && (folder.Type != (short)AssetType.Unknown)) + folders[(AssetType)folder.Type] = folder; + } + return folders; + } + } + m_log.WarnFormat("[INVENTORY SERVICE]: System folders for {0} not found", userID); + return new Dictionary(); + } + + public InventoryCollection GetFolderContent(Guid guid) + { + return m_InventoryService.GetFolderContent(UUID.Zero, new UUID(guid)); + } + public List GetFolderItems(Guid folderID) { List allItems = new List(); diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index 3b1583170c..4837c0d63c 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs @@ -165,8 +165,8 @@ namespace OpenSim.Services.Connectors { try { - return SynchronousRestSessionObjectPoster>.BeginPostObject( - "GET", m_ServerURI + "/SystemFolders/", userID, sessionID.ToString(), userID.ToString()); + return SynchronousRestSessionObjectPoster>.BeginPostObject( + "GET", m_ServerURI + "/SystemFolders/", new Guid(userID), sessionID.ToString(), userID.ToString()); } catch (Exception e) { @@ -187,8 +187,8 @@ namespace OpenSim.Services.Connectors { try { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "GET", m_ServerURI + "/GetFolderContents/", folderID, sessionID.ToString(), userID.ToString()); + return SynchronousRestSessionObjectPoster.BeginPostObject( + "POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString()); } catch (Exception e) {