change FetchInventory2 region handler
							parent
							
								
									bfcbdc8a93
								
							
						
					
					
						commit
						7e2ed9ee2b
					
				|  | @ -25,12 +25,12 @@ | |||
|  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| using System.Net; | ||||
| using System.Reflection; | ||||
| using System.Text; | ||||
| using OpenMetaverse; | ||||
| using OpenMetaverse.StructuredData; | ||||
| using OpenSim.Framework; | ||||
| using OpenSim.Framework.Capabilities; | ||||
| using OpenSim.Framework.Servers.HttpServer; | ||||
| using OpenSim.Services.Interfaces; | ||||
| using OSDArray = OpenMetaverse.StructuredData.OSDArray; | ||||
|  | @ -107,5 +107,51 @@ namespace OpenSim.Capabilities.Handlers | |||
|             LLSDxmlEncode.AddEndMap(lsl); | ||||
|             return LLSDxmlEncode.End(lsl); | ||||
|         } | ||||
| 
 | ||||
|         public void FetchInventorySimpleRequest(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, OSDMap requestmap) | ||||
|         { | ||||
|             //m_log.DebugFormat("[FETCH INVENTORY HANDLER]: Received FetchInventory capability request {0}", request); | ||||
| 
 | ||||
|             OSDArray itemsRequested = (OSDArray)requestmap["items"]; | ||||
| 
 | ||||
|             UUID[] itemIDs = new UUID[itemsRequested.Count]; | ||||
|             int i = 0; | ||||
|             foreach (OSDMap osdItemId in itemsRequested) | ||||
|             { | ||||
|                 itemIDs[i++] = osdItemId["item_id"].AsUUID(); | ||||
|             } | ||||
| 
 | ||||
|             InventoryItemBase[] items = null; | ||||
|             try | ||||
|             { | ||||
|                 items = m_inventoryService.GetMultipleItems(m_agentID, itemIDs); | ||||
|             } | ||||
|             catch{ } | ||||
| 
 | ||||
|             StringBuilder lsl = LLSDxmlEncode.Start(4096); | ||||
|             LLSDxmlEncode.AddMap(lsl); | ||||
| 
 | ||||
|             LLSDxmlEncode.AddElem("agent_id", m_agentID, lsl); | ||||
| 
 | ||||
|             if (items == null || items.Length == 0) | ||||
|             { | ||||
|                 LLSDxmlEncode.AddEmptyArray("items", lsl); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 LLSDxmlEncode.AddArray("items", lsl); | ||||
|                 foreach (InventoryItemBase item in items) | ||||
|                 { | ||||
|                     if (item != null) | ||||
|                         item.ToLLSDxml(lsl, 0xff); | ||||
|                 } | ||||
|                 LLSDxmlEncode.AddEndArray(lsl); | ||||
|             } | ||||
| 
 | ||||
|             LLSDxmlEncode.AddEndMap(lsl); | ||||
|             httpResponse.RawBuffer = Util.UTF8.GetBytes(LLSDxmlEncode.End(lsl)); | ||||
|             httpResponse.StatusCode = (int)HttpStatusCode.OK; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -110,30 +110,15 @@ namespace OpenSim.Region.ClientStack.Linden | |||
| 
 | ||||
|         private void RegisterCaps(UUID agentID, Caps caps) | ||||
|         { | ||||
|             RegisterFetchCap(agentID, caps, "FetchInventory2", m_fetchInventory2Url); | ||||
|         } | ||||
| 
 | ||||
|         private void RegisterFetchCap(UUID agentID, Caps caps, string capName, string url) | ||||
|         { | ||||
|             string capUrl; | ||||
| 
 | ||||
|             if (url == "localhost") | ||||
|             if (m_fetchInventory2Url == "localhost") | ||||
|             { | ||||
|                 capUrl = "/CAPS/" + UUID.Random(); | ||||
| 
 | ||||
|                 FetchInventory2Handler fetchHandler = new FetchInventory2Handler(m_inventoryService, agentID); | ||||
| 
 | ||||
|                 IRequestHandler reqHandler | ||||
|                     = new RestStreamHandler( | ||||
|                         "POST", capUrl, fetchHandler.FetchInventoryRequest, capName, agentID.ToString()); | ||||
| 
 | ||||
|                 caps.RegisterHandler(capName, reqHandler); | ||||
|                 caps.RegisterSimpleHandler("FetchInventory2", | ||||
|                     new SimpleOSDMapHandler("POST", "/" + UUID.Random(), fetchHandler.FetchInventorySimpleRequest)); | ||||
|             } | ||||
|             else | ||||
|             else if(!string.IsNullOrWhiteSpace(m_fetchInventory2Url)) | ||||
|             { | ||||
|                 capUrl = url; | ||||
| 
 | ||||
|                 caps.RegisterHandler(capName, capUrl); | ||||
|                 caps.RegisterHandler("FetchInventory2", m_fetchInventory2Url); | ||||
|             } | ||||
| 
 | ||||
| //            m_log.DebugFormat( | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 UbitUmarov
						UbitUmarov