aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs
diff options
context:
space:
mode:
authorDiva Canto2010-02-28 08:36:13 -0800
committerDiva Canto2010-02-28 08:36:13 -0800
commitdb24e57cab88217e49c3c564a2c025a44199520e (patch)
treeaba907fab21486840d5dcc970c7c77189dd96549 /OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs
parentStatus notification (online/offline) working for same sim. (diff)
downloadopensim-SC-db24e57cab88217e49c3c564a2c025a44199520e.zip
opensim-SC-db24e57cab88217e49c3c564a2c025a44199520e.tar.gz
opensim-SC-db24e57cab88217e49c3c564a2c025a44199520e.tar.bz2
opensim-SC-db24e57cab88217e49c3c564a2c025a44199520e.tar.xz
Friends connectors finished. Status notification working across the board. One last bug: friends online upon login are not being sent to the user.
Diffstat (limited to 'OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs')
-rw-r--r--OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs112
1 files changed, 103 insertions, 9 deletions
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 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection;
30 31
31using OpenSim.Services.Interfaces; 32using OpenSim.Services.Interfaces;
32using GridRegion = OpenSim.Services.Interfaces.GridRegion; 33using GridRegion = OpenSim.Services.Interfaces.GridRegion;
34using OpenSim.Server.Base;
35using OpenSim.Framework.Servers.HttpServer;
33 36
34using OpenMetaverse; 37using OpenMetaverse;
38using log4net;
35 39
36namespace OpenSim.Services.Connectors.Friends 40namespace OpenSim.Services.Connectors.Friends
37{ 41{
38 public class FriendsSimConnector 42 public class FriendsSimConnector
39 { 43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
40 45
41 public bool FriendshipOffered(GridRegion region, UUID userID, UUID friendID, string message) 46 public bool FriendshipOffered(GridRegion region, UUID userID, UUID friendID, string message)
42 { 47 {
43 return true; 48 Dictionary<string, object> sendData = new Dictionary<string, object>();
49 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
50 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
51 sendData["METHOD"] = "friendship_offered";
52
53 sendData["FromID"] = userID.ToString();
54 sendData["ToID"] = friendID.ToString();
55 sendData["Message"] = message;
56
57 return Call(region, sendData);
58
44 } 59 }
45 60
46 public bool FriendshipApproved(GridRegion region, UUID userID, UUID friendID) 61 public bool FriendshipApproved(GridRegion region, UUID userID, string userName, UUID friendID)
47 { 62 {
48 return true; 63 Dictionary<string, object> sendData = new Dictionary<string, object>();
64 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
65 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
66 sendData["METHOD"] = "friendship_approved";
67
68 sendData["FromID"] = userID.ToString();
69 sendData["FromName"] = userName;
70 sendData["ToID"] = friendID.ToString();
71
72 return Call(region, sendData);
49 } 73 }
50 74
51 public bool FriendshipDenied(GridRegion region, UUID userID, UUID friendID) 75 public bool FriendshipDenied(GridRegion region, UUID userID, string userName, UUID friendID)
52 { 76 {
53 return true; 77 Dictionary<string, object> sendData = new Dictionary<string, object>();
78 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
79 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
80 sendData["METHOD"] = "friendship_denied";
81
82 sendData["FromID"] = userID.ToString();
83 sendData["FromName"] = userName;
84 sendData["ToID"] = friendID.ToString();
85
86 return Call(region, sendData);
54 } 87 }
55 88
56 public bool FriendshipTerminated(GridRegion region, UUID userID, UUID friendID) 89 public bool FriendshipTerminated(GridRegion region, UUID userID, UUID friendID)
57 { 90 {
58 return true; 91 Dictionary<string, object> sendData = new Dictionary<string, object>();
92 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
93 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
94 sendData["METHOD"] = "friendship_terminated";
95
96 sendData["FromID"] = userID.ToString();
97 sendData["ToID"] = friendID.ToString();
98
99 return Call(region, sendData);
59 } 100 }
60 101
61 public bool GrantRights(GridRegion region, UUID requester, UUID target) 102 public bool GrantRights(GridRegion region, UUID userID, UUID friendID)
62 { 103 {
63 return true; 104 Dictionary<string, object> sendData = new Dictionary<string, object>();
105 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
106 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
107 sendData["METHOD"] = "grant_rights";
108
109 sendData["FromID"] = userID.ToString();
110 sendData["ToID"] = friendID.ToString();
111
112 return Call(region, sendData);
64 } 113 }
65 114
66 public bool StatusNotify(GridRegion region, UUID userID, UUID friendID, bool online) 115 public bool StatusNotify(GridRegion region, UUID userID, UUID friendID, bool online)
67 { 116 {
68 return true; 117 Dictionary<string, object> sendData = new Dictionary<string, object>();
118 //sendData["VERSIONMIN"] = ProtocolVersions.ClientProtocolVersionMin.ToString();
119 //sendData["VERSIONMAX"] = ProtocolVersions.ClientProtocolVersionMax.ToString();
120 sendData["METHOD"] = "status";
121
122 sendData["FromID"] = userID.ToString();
123 sendData["ToID"] = friendID.ToString();
124 sendData["Online"] = online.ToString();
125
126 return Call(region, sendData);
127 }
128
129 private bool Call(GridRegion region, Dictionary<string, object> sendData)
130 {
131 string reqString = ServerUtils.BuildQueryString(sendData);
132 // m_log.DebugFormat("[FRIENDS CONNECTOR]: queryString = {0}", reqString);
133 try
134 {
135 string url = "http://" + region.ExternalHostName + ":" + region.HttpPort;
136 string reply = SynchronousRestFormsRequester.MakeRequest("POST",
137 url + "/friends",
138 reqString);
139 if (reply != string.Empty)
140 {
141 Dictionary<string, object> replyData = ServerUtils.ParseXmlResponse(reply);
142
143 if (replyData.ContainsKey("RESULT"))
144 {
145 if (replyData["RESULT"].ToString().ToLower() == "true")
146 return true;
147 else
148 return false;
149 }
150 else
151 m_log.DebugFormat("[FRIENDS CONNECTOR]: reply data does not contain result field");
152
153 }
154 else
155 m_log.DebugFormat("[FRIENDS CONNECTOR]: received empty reply");
156 }
157 catch (Exception e)
158 {
159 m_log.DebugFormat("[FRIENDS CONNECTOR]: Exception when contacting remote sim: {0}", e.Message);
160 }
161
162 return false;
69 } 163 }
70 } 164 }
71} 165}