public byte [] HandleFetchLib(Stream request, UUID agentID) { try { //MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchLib request for {0}", agentID); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(HttpServerHandlerHelpers.ReadFully(request)); OSDArray foldersrequested = (OSDArray)requestmap ["items"]; OSDMap map = new OSDMap { { "agent_id", OSD.FromUUID(agentID) } }; OSDArray items = new OSDArray(); foreach ( OSDArray item in foldersrequested.Cast <OSDMap> () .Select(requestedFolders => requestedFolders ["item_id"].AsUUID()) .Select(item_id => m_inventoryService.GetOSDItem(UUID.Zero, item_id)) .Where(item => item != null && item.Count > 0)) { items.Add(item [0]); } map.Add("items", items); byte [] response = OSDParser.SerializeLLSDXmlBytes(map); map.Clear(); return(response); } catch (Exception ex) { MainConsole.Instance.Warn("[InventoryCAPS]: SERIOUS ISSUE! " + ex); } OSDMap rmap = new OSDMap(); rmap ["items"] = new OSDArray(); return(OSDParser.SerializeLLSDXmlBytes(rmap)); }
public byte[] HandleFetchInventory(Stream request, UUID AgentID) { try { //MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchInventory request for {0}", AgentID); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(request); if (requestmap["items"].Type == OSDType.Unknown) { return(MainServer.BadRequest); } OSDArray foldersrequested = (OSDArray)requestmap["items"]; OSDMap map = new OSDMap { { "agent_id", OSD.FromUUID(AgentID) } }; //We have to send the agent_id in the main map as well as all the items OSDArray items = new OSDArray(); #if (!ISWIN) foreach (OSDMap requestedFolders in foldersrequested) { UUID itemId = requestedFolders["item_id"].AsUUID(); OSDArray item = m_inventoryService.GetItem(itemId); if (item != null && item.Count > 0) { items.Add(item[0]); } } #else foreach (OSDArray item in foldersrequested.Cast <OSDMap>().Select(requestedFolders => requestedFolders["item_id"].AsUUID()).Select(item_id => m_inventoryService.GetItem(item_id)).Where(item => item != null && item.Count > 0)) { items.Add(item[0]); } #endif map.Add("items", items); byte[] response = OSDParser.SerializeLLSDXmlBytes(map); map.Clear(); return(response); } catch (Exception ex) { MainConsole.Instance.Warn("[InventoryCaps]: SERIOUS ISSUE! " + ex); } OSDMap rmap = new OSDMap(); rmap["items"] = new OSDArray(); return(OSDParser.SerializeLLSDXmlBytes(rmap)); }
public static OSD LandStatReply(LandStatReplyMessage statReplyMessage) { OSDMap message = new OSDMap { { "message", OSD.FromString("LandStatReply") } }; OSD message_body = statReplyMessage.Serialize(); OSDArray m = (OSDArray)((OSDMap)message_body) ["DataExtended"]; int num = 0; foreach (OSDMap innerMap in m.Cast <OSDMap>()) { innerMap ["TimeStamp"] = OSD.FromUInteger((uint)Util.ToUnixTime(statReplyMessage.ReportDataBlocks [num].TimeStamp)); num++; } message.Add("body", message_body); return(message); }
public byte [] HandleFetchInventory(Stream request, UUID agentID) { try { // MainConsole.Instance.DebugFormat("[InventoryCAPS]: Received FetchInventory request for {0}", agentID); OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(HttpServerHandlerHelpers.ReadFully(request)); if (requestmap ["items"].Type == OSDType.Unknown) { MainConsole.Instance.Error("[InventoryCAPS]: Call to 'FetchInventory' with missing 'items' parameter"); return(MainServer.BadRequest); } OSDArray foldersrequested = (OSDArray)requestmap ["items"]; OSDMap map = new OSDMap { { "agent_id", OSD.FromUUID(agentID) } }; // We have to send the agent_id in the main map as well as all the items OSDArray items = new OSDArray(); foreach ( OSDArray item in foldersrequested.Cast <OSDMap> () .Select(requestedFolders => requestedFolders ["item_id"].AsUUID()) .Select(item_id => m_inventoryService.GetOSDItem(m_agentID, item_id)) .Where(item => item != null && item.Count > 0)) { items.Add(item [0]); } map.Add("items", items); byte [] response = OSDParser.SerializeLLSDXmlBytes(map); map.Clear(); return(response); } catch (Exception ex) { MainConsole.Instance.Warn("[InventoryCAPS]: SERIOUS ISSUE! " + ex); } OSDMap rmap = new OSDMap(); rmap ["items"] = new OSDArray(); return(OSDParser.SerializeLLSDXmlBytes(rmap)); }
public static OSD ParcelObjectOwnersReply(ParcelObjectOwnersReplyMessage parcelPropertiesMessage) { OSDMap message = new OSDMap { { "message", OSD.FromString("ParcelObjectOwnersReply") } }; OSD message_body = parcelPropertiesMessage.Serialize(); if (((OSDMap)message_body).ContainsKey("DataExtended")) { OSDArray m = (OSDArray)((OSDMap)message_body) ["DataExtended"]; int num = 0; foreach (OSDMap innerMap in m.Cast <OSDMap>()) { innerMap ["TimeStamp"] = OSD.FromUInteger((uint)Util.ToUnixTime(parcelPropertiesMessage.PrimOwnersBlock [num].TimeStamp)); num++; } } message.Add("body", message_body); return(message); }
public static bool GetGenericEntries(UUID ownerID, string type, string m_ServerURI, out Dictionary <string, OSDMap> maps) { NameValueCollection requestArgs = new NameValueCollection { { "RequestMethod", "GetGenerics" }, { "OwnerID", ownerID.ToString() }, { "Type", type } }; OSDMap response = CachedPostRequest(requestArgs, m_ServerURI); if (response["Success"].AsBoolean() && response["Entries"] is OSDArray) { OSDArray entryArray = (OSDArray)response["Entries"]; #if (!ISWIN) maps = new Dictionary <string, OSDMap>(); foreach (OSDMap map in entryArray) { maps.Add(map["Key"].AsString(), (OSDMap)OSDParser.DeserializeJson(map["Value"].AsString())); } #else maps = entryArray.Cast <OSDMap>().ToDictionary(entryMap => entryMap["Key"].AsString(), entryMap => (OSDMap)OSDParser.DeserializeJson(entryMap["Value"].AsString())); #endif if (maps.Count == 0) { //MainConsole.Instance.InfoFormat("[SIMIAN-MUTELIST-CONNECTOR] No Generics Results"); } return(true); } else { maps = null; //MainConsole.Instance.WarnFormat("[SIMIAN MUTELIST CONNECTOR]: Error retrieving group info ({0})", response["Message"]); } return(false); }