diff options
Diffstat (limited to 'OpenSim/Region/Communications/OGS1')
-rw-r--r-- | OpenSim/Region/Communications/OGS1/OGS1UserServices.cs | 175 |
1 files changed, 174 insertions, 1 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs index c205d08..e645074 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs | |||
@@ -109,6 +109,28 @@ namespace OpenSim.Region.Communications.OGS1 | |||
109 | return pickerlist; | 109 | return pickerlist; |
110 | } | 110 | } |
111 | 111 | ||
112 | public List<FriendListItem> ConvertXMLRPCDataToFriendListItemList(Hashtable data) | ||
113 | { | ||
114 | List<FriendListItem> buddylist = new List<FriendListItem>(); | ||
115 | int buddycount = Convert.ToInt32((string)data["avcount"]); | ||
116 | |||
117 | |||
118 | for (int i = 0; i < buddycount; i++) | ||
119 | { | ||
120 | FriendListItem buddylistitem = new FriendListItem(); | ||
121 | |||
122 | buddylistitem.FriendListOwner = new LLUUID((string)data["ownerID" + i.ToString()]); | ||
123 | buddylistitem.Friend = new LLUUID((string)data["friendID" + i.ToString()]); | ||
124 | buddylistitem.FriendListOwnerPerms = (uint)Convert.ToInt32((string)data["ownerPerms" + i.ToString()]); | ||
125 | buddylistitem.FriendPerms = (uint)Convert.ToInt32((string)data["friendPerms" + i.ToString()]); | ||
126 | |||
127 | buddylist.Add(buddylistitem); | ||
128 | } | ||
129 | |||
130 | |||
131 | return buddylist; | ||
132 | } | ||
133 | |||
112 | public UserProfileData GetUserProfile(string firstName, string lastName) | 134 | public UserProfileData GetUserProfile(string firstName, string lastName) |
113 | { | 135 | { |
114 | return GetUserProfile(firstName + " " + lastName); | 136 | return GetUserProfile(firstName + " " + lastName); |
@@ -223,7 +245,49 @@ namespace OpenSim.Region.Communications.OGS1 | |||
223 | /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param> | 245 | /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param> |
224 | public void AddNewUserFriend(LLUUID friendlistowner, LLUUID friend, uint perms) | 246 | public void AddNewUserFriend(LLUUID friendlistowner, LLUUID friend, uint perms) |
225 | { | 247 | { |
248 | try | ||
249 | { | ||
250 | Hashtable param = new Hashtable(); | ||
251 | param["ownerID"] = friendlistowner.UUID.ToString(); | ||
252 | param["friendID"] = friend.UUID.ToString(); | ||
253 | param["friendPerms"] = perms.ToString(); | ||
254 | IList parameters = new ArrayList(); | ||
255 | parameters.Add(param); | ||
226 | 256 | ||
257 | XmlRpcRequest req = new XmlRpcRequest("add_new_user_friend", parameters); | ||
258 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | ||
259 | Hashtable respData = (Hashtable)resp.Value; | ||
260 | if (respData != null) | ||
261 | { | ||
262 | if (respData.Contains("returnString")) | ||
263 | { | ||
264 | if ((string)respData["returnString"] == "TRUE") | ||
265 | { | ||
266 | |||
267 | } | ||
268 | else | ||
269 | { | ||
270 | MainLog.Instance.Warn("GRID", "Unable to add new friend, User Server Reported an issue"); | ||
271 | } | ||
272 | } | ||
273 | else | ||
274 | { | ||
275 | MainLog.Instance.Warn("GRID", "Unable to add new friend, UserServer didn't understand me!"); | ||
276 | } | ||
277 | } | ||
278 | else | ||
279 | { | ||
280 | MainLog.Instance.Warn("GRID", "Unable to add new friend, UserServer didn't understand me!"); | ||
281 | |||
282 | } | ||
283 | } | ||
284 | catch (WebException e) | ||
285 | { | ||
286 | MainLog.Instance.Warn("GRID","Error when trying to AddNewUserFriend: " + | ||
287 | e.Message); | ||
288 | |||
289 | } | ||
290 | |||
227 | } | 291 | } |
228 | 292 | ||
229 | /// <summary> | 293 | /// <summary> |
@@ -233,7 +297,49 @@ namespace OpenSim.Region.Communications.OGS1 | |||
233 | /// <param name="friend">The Ex-friend agent</param> | 297 | /// <param name="friend">The Ex-friend agent</param> |
234 | public void RemoveUserFriend(LLUUID friendlistowner, LLUUID friend) | 298 | public void RemoveUserFriend(LLUUID friendlistowner, LLUUID friend) |
235 | { | 299 | { |
300 | try | ||
301 | { | ||
302 | Hashtable param = new Hashtable(); | ||
303 | param["ownerID"] = friendlistowner.UUID.ToString(); | ||
304 | param["friendID"] = friend.UUID.ToString(); | ||
305 | |||
306 | |||
307 | IList parameters = new ArrayList(); | ||
308 | parameters.Add(param); | ||
236 | 309 | ||
310 | XmlRpcRequest req = new XmlRpcRequest("remove_user_friend", parameters); | ||
311 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | ||
312 | Hashtable respData = (Hashtable)resp.Value; | ||
313 | if (respData != null) | ||
314 | { | ||
315 | if (respData.Contains("returnString")) | ||
316 | { | ||
317 | if ((string)respData["returnString"] == "TRUE") | ||
318 | { | ||
319 | |||
320 | } | ||
321 | else | ||
322 | { | ||
323 | MainLog.Instance.Warn("GRID", "Unable to remove friend, User Server Reported an issue"); | ||
324 | } | ||
325 | } | ||
326 | else | ||
327 | { | ||
328 | MainLog.Instance.Warn("GRID", "Unable to remove friend, UserServer didn't understand me!"); | ||
329 | } | ||
330 | } | ||
331 | else | ||
332 | { | ||
333 | MainLog.Instance.Warn("GRID", "Unable to remove friend, UserServer didn't understand me!"); | ||
334 | |||
335 | } | ||
336 | } | ||
337 | catch (WebException e) | ||
338 | { | ||
339 | MainLog.Instance.Warn("GRID", "Error when trying to RemoveUserFriend: " + | ||
340 | e.Message); | ||
341 | |||
342 | } | ||
237 | } | 343 | } |
238 | 344 | ||
239 | /// <summary> | 345 | /// <summary> |
@@ -244,7 +350,48 @@ namespace OpenSim.Region.Communications.OGS1 | |||
244 | /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param> | 350 | /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param> |
245 | public void UpdateUserFriendPerms(LLUUID friendlistowner, LLUUID friend, uint perms) | 351 | public void UpdateUserFriendPerms(LLUUID friendlistowner, LLUUID friend, uint perms) |
246 | { | 352 | { |
353 | try | ||
354 | { | ||
355 | Hashtable param = new Hashtable(); | ||
356 | param["ownerID"] = friendlistowner.UUID.ToString(); | ||
357 | param["friendID"] = friend.UUID.ToString(); | ||
358 | param["friendPerms"] = perms.ToString(); | ||
359 | IList parameters = new ArrayList(); | ||
360 | parameters.Add(param); | ||
247 | 361 | ||
362 | XmlRpcRequest req = new XmlRpcRequest("update_user_friend_perms", parameters); | ||
363 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | ||
364 | Hashtable respData = (Hashtable)resp.Value; | ||
365 | if (respData != null) | ||
366 | { | ||
367 | if (respData.Contains("returnString")) | ||
368 | { | ||
369 | if ((string)respData["returnString"] == "TRUE") | ||
370 | { | ||
371 | |||
372 | } | ||
373 | else | ||
374 | { | ||
375 | MainLog.Instance.Warn("GRID", "Unable to update_user_friend_perms, User Server Reported an issue"); | ||
376 | } | ||
377 | } | ||
378 | else | ||
379 | { | ||
380 | MainLog.Instance.Warn("GRID", "Unable to update_user_friend_perms, UserServer didn't understand me!"); | ||
381 | } | ||
382 | } | ||
383 | else | ||
384 | { | ||
385 | MainLog.Instance.Warn("GRID", "Unable to update_user_friend_perms, UserServer didn't understand me!"); | ||
386 | |||
387 | } | ||
388 | } | ||
389 | catch (WebException e) | ||
390 | { | ||
391 | MainLog.Instance.Warn("GRID", "Error when trying to update_user_friend_perms: " + | ||
392 | e.Message); | ||
393 | |||
394 | } | ||
248 | } | 395 | } |
249 | /// <summary> | 396 | /// <summary> |
250 | /// Returns a list of FriendsListItems that describe the friends and permissions in the friend relationship for LLUUID friendslistowner | 397 | /// Returns a list of FriendsListItems that describe the friends and permissions in the friend relationship for LLUUID friendslistowner |
@@ -252,7 +399,33 @@ namespace OpenSim.Region.Communications.OGS1 | |||
252 | /// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param> | 399 | /// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param> |
253 | public List<FriendListItem> GetUserFriendList(LLUUID friendlistowner) | 400 | public List<FriendListItem> GetUserFriendList(LLUUID friendlistowner) |
254 | { | 401 | { |
255 | return new List<FriendListItem>(); | 402 | List<FriendListItem> buddylist = new List<FriendListItem>(); |
403 | |||
404 | try | ||
405 | { | ||
406 | Hashtable param = new Hashtable(); | ||
407 | param["ownerID"] = friendlistowner.UUID.ToString(); | ||
408 | |||
409 | IList parameters = new ArrayList(); | ||
410 | parameters.Add(param); | ||
411 | XmlRpcRequest req = new XmlRpcRequest("get_user_friend_list", parameters); | ||
412 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | ||
413 | Hashtable respData = (Hashtable) resp.Value; | ||
414 | |||
415 | if (respData.Contains("avcount")) | ||
416 | { | ||
417 | buddylist = ConvertXMLRPCDataToFriendListItemList(respData); | ||
418 | } | ||
419 | |||
420 | } | ||
421 | catch (WebException e) | ||
422 | { | ||
423 | MainLog.Instance.Warn("Error when trying to fetch Avatar's friends list: " + | ||
424 | e.Message); | ||
425 | // Return Empty list (no friends) | ||
426 | } | ||
427 | return buddylist; | ||
428 | |||
256 | } | 429 | } |
257 | 430 | ||
258 | #endregion | 431 | #endregion |