diff options
author | Melanie | 2010-01-05 04:22:03 +0000 |
---|---|---|
committer | Melanie | 2010-01-05 04:22:03 +0000 |
commit | aca01f541552b0f6e7521e98f5e8350175b89334 (patch) | |
tree | d9db485bd3b2d42fab68d3a30e72d27f2468ccde | |
parent | Allow lists to be embedded in query strings (diff) | |
download | opensim-SC-aca01f541552b0f6e7521e98f5e8350175b89334.zip opensim-SC-aca01f541552b0f6e7521e98f5e8350175b89334.tar.gz opensim-SC-aca01f541552b0f6e7521e98f5e8350175b89334.tar.bz2 opensim-SC-aca01f541552b0f6e7521e98f5e8350175b89334.tar.xz |
Add the XInventoryServicesConnector, a new inventory connector without the cruft
of the old one that makes inventory crash on folder creation. This is just
the connector part, the handler is still ont he todo list.
-rw-r--r-- | OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs | 4 | ||||
-rw-r--r-- | OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs | 198 |
2 files changed, 187 insertions, 15 deletions
diff --git a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs index b1c6bcf..b5ae54a 100644 --- a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs | |||
@@ -108,14 +108,14 @@ namespace OpenSim.Server.Handlers.Presence | |||
108 | out info.RegionID)) | 108 | out info.RegionID)) |
109 | return FailureResult(); | 109 | return FailureResult(); |
110 | 110 | ||
111 | foreach (KeyValuePair<string, string> kvp in request) | 111 | foreach (KeyValuePair<string, object> kvp in request) |
112 | { | 112 | { |
113 | if (kvp.Key == "METHOD" || | 113 | if (kvp.Key == "METHOD" || |
114 | kvp.Key == "PrincipalID" || | 114 | kvp.Key == "PrincipalID" || |
115 | kvp.Key == "RegionID") | 115 | kvp.Key == "RegionID") |
116 | continue; | 116 | continue; |
117 | 117 | ||
118 | info.Data[kvp.Key] = kvp.Value; | 118 | info.Data[kvp.Key] = kvp.Value.ToString(); |
119 | } | 119 | } |
120 | 120 | ||
121 | if (m_PresenceService.Report(info)) | 121 | if (m_PresenceService.Report(info)) |
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs index 6e1d657..aac1a83 100644 --- a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs | |||
@@ -96,19 +96,55 @@ namespace OpenSim.Services.Connectors | |||
96 | return bool.Parse(ret["RESULT"].ToString()); | 96 | return bool.Parse(ret["RESULT"].ToString()); |
97 | } | 97 | } |
98 | 98 | ||
99 | public List<InventoryFolderBase> GetInventorySkeleton(UUID userId) | 99 | public List<InventoryFolderBase> GetInventorySkeleton(UUID principalID) |
100 | { | 100 | { |
101 | return null; | 101 | Dictionary<string,object> ret = MakeRequest("GETINVENTORYSKELETON", |
102 | new Dictionary<string,object> { | ||
103 | { "PRINCIPAL", principalID.ToString() } | ||
104 | }); | ||
105 | |||
106 | if (ret == null) | ||
107 | return null; | ||
108 | |||
109 | List<InventoryFolderBase> folders = new List<InventoryFolderBase>(); | ||
110 | |||
111 | foreach (Object o in ret.Values) | ||
112 | folders.Add(BuildFolder((Dictionary<string,object>)o)); | ||
113 | |||
114 | return folders; | ||
102 | } | 115 | } |
103 | 116 | ||
104 | public InventoryFolderBase GetRootFolder(UUID principalID) | 117 | public InventoryFolderBase GetRootFolder(UUID principalID) |
105 | { | 118 | { |
106 | return null; | 119 | Dictionary<string,object> ret = MakeRequest("GETROOTFOLDER", |
120 | new Dictionary<string,object> { | ||
121 | { "PRINCIPAL", principalID.ToString() } | ||
122 | }); | ||
123 | |||
124 | if (ret == null) | ||
125 | return null; | ||
126 | |||
127 | if (ret.Count == 0) | ||
128 | return null; | ||
129 | |||
130 | return BuildFolder(ret); | ||
107 | } | 131 | } |
108 | 132 | ||
109 | public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type) | 133 | public InventoryFolderBase GetFolderForType(UUID principalID, AssetType type) |
110 | { | 134 | { |
111 | return null; | 135 | Dictionary<string,object> ret = MakeRequest("GETFOLDERFORTYPE", |
136 | new Dictionary<string,object> { | ||
137 | { "PRINCIPAL", principalID.ToString() }, | ||
138 | { "TYPE", ((int)type).ToString() } | ||
139 | }); | ||
140 | |||
141 | if (ret == null) | ||
142 | return null; | ||
143 | |||
144 | if (ret.Count == 0) | ||
145 | return null; | ||
146 | |||
147 | return BuildFolder(ret); | ||
112 | } | 148 | } |
113 | 149 | ||
114 | public InventoryCollection GetFolderContent(UUID principalID, UUID folderID) | 150 | public InventoryCollection GetFolderContent(UUID principalID, UUID folderID) |
@@ -205,8 +241,28 @@ namespace OpenSim.Services.Connectors | |||
205 | 241 | ||
206 | public bool AddItem(InventoryItemBase item) | 242 | public bool AddItem(InventoryItemBase item) |
207 | { | 243 | { |
208 | Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY", | 244 | Dictionary<string,object> ret = MakeRequest("ADDITEM", |
209 | new Dictionary<string,object> { | 245 | new Dictionary<string,object> { |
246 | { "AssetID", item.AssetID.ToString() }, | ||
247 | { "AssetType", item.AssetType.ToString() }, | ||
248 | { "Name", item.Name.ToString() }, | ||
249 | { "Owner", item.Owner.ToString() }, | ||
250 | { "ID", item.ID.ToString() }, | ||
251 | { "InvType", item.InvType.ToString() }, | ||
252 | { "Folder", item.Folder.ToString() }, | ||
253 | { "CreatorId", item.CreatorId.ToString() }, | ||
254 | { "Description", item.Description.ToString() }, | ||
255 | { "NextPermissions", item.NextPermissions.ToString() }, | ||
256 | { "CurrentPermissions", item.CurrentPermissions.ToString() }, | ||
257 | { "BasePermissions", item.BasePermissions.ToString() }, | ||
258 | { "EveryOnePermissions", item.EveryOnePermissions.ToString() }, | ||
259 | { "GroupPermissions", item.GroupPermissions.ToString() }, | ||
260 | { "GroupID", item.GroupID.ToString() }, | ||
261 | { "GroupOwned", item.GroupOwned.ToString() }, | ||
262 | { "SalePrice", item.SalePrice.ToString() }, | ||
263 | { "SaleType", item.SaleType.ToString() }, | ||
264 | { "Flags", item.Flags.ToString() }, | ||
265 | { "CreationDate", item.CreationDate.ToString() } | ||
210 | }); | 266 | }); |
211 | 267 | ||
212 | if (ret == null) | 268 | if (ret == null) |
@@ -217,8 +273,28 @@ namespace OpenSim.Services.Connectors | |||
217 | 273 | ||
218 | public bool UpdateItem(InventoryItemBase item) | 274 | public bool UpdateItem(InventoryItemBase item) |
219 | { | 275 | { |
220 | Dictionary<string,object> ret = MakeRequest("CREATEUSERINVENTORY", | 276 | Dictionary<string,object> ret = MakeRequest("UPDATEITEM", |
221 | new Dictionary<string,object> { | 277 | new Dictionary<string,object> { |
278 | { "AssetID", item.AssetID.ToString() }, | ||
279 | { "AssetType", item.AssetType.ToString() }, | ||
280 | { "Name", item.Name.ToString() }, | ||
281 | { "Owner", item.Owner.ToString() }, | ||
282 | { "ID", item.ID.ToString() }, | ||
283 | { "InvType", item.InvType.ToString() }, | ||
284 | { "Folder", item.Folder.ToString() }, | ||
285 | { "CreatorId", item.CreatorId.ToString() }, | ||
286 | { "Description", item.Description.ToString() }, | ||
287 | { "NextPermissions", item.NextPermissions.ToString() }, | ||
288 | { "CurrentPermissions", item.CurrentPermissions.ToString() }, | ||
289 | { "BasePermissions", item.BasePermissions.ToString() }, | ||
290 | { "EveryOnePermissions", item.EveryOnePermissions.ToString() }, | ||
291 | { "GroupPermissions", item.GroupPermissions.ToString() }, | ||
292 | { "GroupID", item.GroupID.ToString() }, | ||
293 | { "GroupOwned", item.GroupOwned.ToString() }, | ||
294 | { "SalePrice", item.SalePrice.ToString() }, | ||
295 | { "SaleType", item.SaleType.ToString() }, | ||
296 | { "Flags", item.Flags.ToString() }, | ||
297 | { "CreationDate", item.CreationDate.ToString() } | ||
222 | }); | 298 | }); |
223 | 299 | ||
224 | if (ret == null) | 300 | if (ret == null) |
@@ -227,9 +303,28 @@ namespace OpenSim.Services.Connectors | |||
227 | return bool.Parse(ret["RESULT"].ToString()); | 303 | return bool.Parse(ret["RESULT"].ToString()); |
228 | } | 304 | } |
229 | 305 | ||
230 | public bool MoveItems(UUID ownerID, List<InventoryItemBase> items) | 306 | public bool MoveItems(UUID principalID, List<InventoryItemBase> items) |
231 | { | 307 | { |
232 | return false; | 308 | List<string> idlist = new List<string>(); |
309 | List<string> destlist = new List<string>(); | ||
310 | |||
311 | foreach (InventoryItemBase item in items) | ||
312 | { | ||
313 | idlist.Add(item.ID.ToString()); | ||
314 | destlist.Add(item.Folder.ToString()); | ||
315 | } | ||
316 | |||
317 | Dictionary<string,object> ret = MakeRequest("MOVEITEMS", | ||
318 | new Dictionary<string,object> { | ||
319 | { "PrincipalID", principalID.ToString() }, | ||
320 | { "IDLIST", idlist }, | ||
321 | { "DESTLIST", destlist } | ||
322 | }); | ||
323 | |||
324 | if (ret == null) | ||
325 | return false; | ||
326 | |||
327 | return bool.Parse(ret["RESULT"].ToString()); | ||
233 | } | 328 | } |
234 | 329 | ||
235 | public bool DeleteItems(UUID principalID, List<UUID> itemIDs) | 330 | public bool DeleteItems(UUID principalID, List<UUID> itemIDs) |
@@ -253,17 +348,52 @@ namespace OpenSim.Services.Connectors | |||
253 | 348 | ||
254 | public InventoryItemBase GetItem(InventoryItemBase item) | 349 | public InventoryItemBase GetItem(InventoryItemBase item) |
255 | { | 350 | { |
256 | return null; | 351 | Dictionary<string,object> ret = MakeRequest("GETITEM", |
352 | new Dictionary<string,object> { | ||
353 | { "ID", item.ID.ToString() } | ||
354 | }); | ||
355 | |||
356 | if (ret == null) | ||
357 | return null; | ||
358 | |||
359 | if (ret.Count == 0) | ||
360 | return null; | ||
361 | |||
362 | return BuildItem(ret); | ||
257 | } | 363 | } |
258 | 364 | ||
259 | public InventoryFolderBase GetFolder(InventoryFolderBase folder) | 365 | public InventoryFolderBase GetFolder(InventoryFolderBase folder) |
260 | { | 366 | { |
261 | return null; | 367 | Dictionary<string,object> ret = MakeRequest("GETFOLDER", |
368 | new Dictionary<string,object> { | ||
369 | { "ID", folder.ID.ToString() } | ||
370 | }); | ||
371 | |||
372 | if (ret == null) | ||
373 | return null; | ||
374 | |||
375 | if (ret.Count == 0) | ||
376 | return null; | ||
377 | |||
378 | return BuildFolder(ret); | ||
262 | } | 379 | } |
263 | 380 | ||
264 | public List<InventoryItemBase> GetActiveGestures(UUID userId) | 381 | public List<InventoryItemBase> GetActiveGestures(UUID principalID) |
265 | { | 382 | { |
266 | return null; | 383 | Dictionary<string,object> ret = MakeRequest("GETACTIVEGESTURES", |
384 | new Dictionary<string,object> { | ||
385 | { "PRINCIPAL", principalID.ToString() } | ||
386 | }); | ||
387 | |||
388 | if (ret == null) | ||
389 | return null; | ||
390 | |||
391 | List<InventoryItemBase> items = new List<InventoryItemBase>(); | ||
392 | |||
393 | foreach (Object o in ret.Values) | ||
394 | items.Add(BuildItem((Dictionary<string,object>)o)); | ||
395 | |||
396 | return items; | ||
267 | } | 397 | } |
268 | 398 | ||
269 | public int GetAssetPermissions(UUID principalID, UUID assetID) | 399 | public int GetAssetPermissions(UUID principalID, UUID assetID) |
@@ -275,7 +405,7 @@ namespace OpenSim.Services.Connectors | |||
275 | }); | 405 | }); |
276 | 406 | ||
277 | if (ret == null) | 407 | if (ret == null) |
278 | return false; | 408 | return 0; |
279 | 409 | ||
280 | return int.Parse(ret["RESULT"].ToString()); | 410 | return int.Parse(ret["RESULT"].ToString()); |
281 | } | 411 | } |
@@ -313,5 +443,47 @@ namespace OpenSim.Services.Connectors | |||
313 | 443 | ||
314 | return replyData; | 444 | return replyData; |
315 | } | 445 | } |
446 | |||
447 | InventoryFolderBase BuildFolder(Dictionary<string,object> data) | ||
448 | { | ||
449 | InventoryFolderBase folder = new InventoryFolderBase(); | ||
450 | |||
451 | folder.ParentID = new UUID(data["ParentID"].ToString()); | ||
452 | folder.Type = short.Parse(data["Type"].ToString()); | ||
453 | folder.Version = ushort.Parse(data["Version"].ToString()); | ||
454 | folder.Name = data["Name"].ToString(); | ||
455 | folder.Owner = new UUID(data["Owner"].ToString()); | ||
456 | folder.ID = new UUID(data["ID"].ToString()); | ||
457 | |||
458 | return folder; | ||
459 | } | ||
460 | |||
461 | InventoryItemBase BuildItem(Dictionary<string,object> data) | ||
462 | { | ||
463 | InventoryItemBase item = new InventoryItemBase(); | ||
464 | |||
465 | item.AssetID = new UUID(data["AssetID"].ToString()); | ||
466 | item.AssetType = int.Parse(data["AssetType"].ToString()); | ||
467 | item.Name = data["Name"].ToString(); | ||
468 | item.Owner = new UUID(data["Owner"].ToString()); | ||
469 | item.ID = new UUID(data["ID"].ToString()); | ||
470 | item.InvType = int.Parse(data["InvType"].ToString()); | ||
471 | item.Folder = new UUID(data["Folder"].ToString()); | ||
472 | item.CreatorId = data["CreatorId"].ToString(); | ||
473 | item.Description = data["Description"].ToString(); | ||
474 | item.NextPermissions = uint.Parse(data["NextPermissions"].ToString()); | ||
475 | item.CurrentPermissions = uint.Parse(data["CurrentPermissions"].ToString()); | ||
476 | item.BasePermissions = uint.Parse(data["BasePermissions"].ToString()); | ||
477 | item.EveryOnePermissions = uint.Parse(data["EveryOnePermissions"].ToString()); | ||
478 | item.GroupPermissions = uint.Parse(data["GroupPermissions"].ToString()); | ||
479 | item.GroupID = new UUID(data["GroupID"].ToString()); | ||
480 | item.GroupOwned = bool.Parse(data["GroupOwned"].ToString()); | ||
481 | item.SalePrice = int.Parse(data["SalePrice"].ToString()); | ||
482 | item.SaleType = byte.Parse(data["SaleType"].ToString()); | ||
483 | item.Flags = uint.Parse(data["Flags"].ToString()); | ||
484 | item.CreationDate = int.Parse(data["CreationDate"].ToString()); | ||
485 | |||
486 | return item; | ||
487 | } | ||
316 | } | 488 | } |
317 | } | 489 | } |