From db24e57cab88217e49c3c564a2c025a44199520e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 28 Feb 2010 08:36:13 -0800 Subject: Friends connectors finished. Status notification working across the board. One last bug: friends online upon login are not being sent to the user. --- .../Connectors/Friends/FriendsSimConnector.cs | 112 +++++++++++++++++++-- 1 file changed, 103 insertions(+), 9 deletions(-) (limited to 'OpenSim/Services/Connectors/Friends') diff --git a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs index 081e354..490c8cf 100644 --- a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs +++ b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs @@ -27,45 +27,139 @@ using System; using System.Collections.Generic; +using System.Reflection; using OpenSim.Services.Interfaces; using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using OpenSim.Server.Base; +using OpenSim.Framework.Servers.HttpServer; using OpenMetaverse; +using log4net; namespace OpenSim.Services.Connectors.Friends { public class FriendsSimConnector { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public bool FriendshipOffered(GridRegion region, UUID userID, UUID friendID, string message) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "friendship_offered"; + + sendData["FromID"] = userID.ToString(); + sendData["ToID"] = friendID.ToString(); + sendData["Message"] = message; + + return Call(region, sendData); + } - public bool FriendshipApproved(GridRegion region, UUID userID, UUID friendID) + public bool FriendshipApproved(GridRegion region, UUID userID, string userName, UUID friendID) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "friendship_approved"; + + sendData["FromID"] = userID.ToString(); + sendData["FromName"] = userName; + sendData["ToID"] = friendID.ToString(); + + return Call(region, sendData); } - public bool FriendshipDenied(GridRegion region, UUID userID, UUID friendID) + public bool FriendshipDenied(GridRegion region, UUID userID, string userName, UUID friendID) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "friendship_denied"; + + sendData["FromID"] = userID.ToString(); + sendData["FromName"] = userName; + sendData["ToID"] = friendID.ToString(); + + return Call(region, sendData); } public bool FriendshipTerminated(GridRegion region, UUID userID, UUID friendID) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "friendship_terminated"; + + sendData["FromID"] = userID.ToString(); + sendData["ToID"] = friendID.ToString(); + + return Call(region, sendData); } - public bool GrantRights(GridRegion region, UUID requester, UUID target) + public bool GrantRights(GridRegion region, UUID userID, UUID friendID) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "grant_rights"; + + sendData["FromID"] = userID.ToString(); + sendData["ToID"] = friendID.ToString(); + + return Call(region, sendData); } public bool StatusNotify(GridRegion region, UUID userID, UUID friendID, bool online) { - return true; + Dictionary sendData = new Dictionary(); + //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString(); + //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString(); + sendData["METHOD"] = "status"; + + sendData["FromID"] = userID.ToString(); + sendData["ToID"] = friendID.ToString(); + sendData["Online"] = online.ToString(); + + return Call(region, sendData); + } + + private bool Call(GridRegion region, Dictionary sendData) + { + string reqString = ServerUtils.BuildQueryString(sendData); + // m_log.DebugFormat("[FRIENDS CONNECTOR]: queryString = {0}", reqString); + try + { + string url = "http://" + region.ExternalHostName + ":" + region.HttpPort; + string reply = SynchronousRestFormsRequester.MakeRequest("POST", + url + "/friends", + reqString); + if (reply != string.Empty) + { + Dictionary replyData = ServerUtils.ParseXmlResponse(reply); + + if (replyData.ContainsKey("RESULT")) + { + if (replyData["RESULT"].ToString().ToLower() == "true") + return true; + else + return false; + } + else + m_log.DebugFormat("[FRIENDS CONNECTOR]: reply data does not contain result field"); + + } + else + m_log.DebugFormat("[FRIENDS CONNECTOR]: received empty reply"); + } + catch (Exception e) + { + m_log.DebugFormat("[FRIENDS CONNECTOR]: Exception when contacting remote sim: {0}", e.Message); + } + + return false; } } } -- cgit v1.1