aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs155
1 files changed, 153 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs
index cde54ed..e7b74a9 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs
@@ -75,8 +75,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
75 75
76 switch (method) 76 switch (method)
77 { 77 {
78 case "TEST": 78 case "friendship_offered":
79 break; 79 return FriendshipOffered(request);
80 case "friendship_approved":
81 return FriendshipApproved(request);
82 case "friendship_denied":
83 return FriendshipDenied(request);
84 case "friendship_terminated":
85 return FriendshipTerminated(request);
86 case "grant_rights":
87 return GrantRights(request);
88 case "status":
89 return StatusNotification(request);
80 } 90 }
81 } 91 }
82 catch (Exception e) 92 catch (Exception e)
@@ -87,6 +97,146 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
87 return FailureResult(); 97 return FailureResult();
88 } 98 }
89 99
100 byte[] FriendshipOffered(Dictionary<string, object> request)
101 {
102 UUID fromID = UUID.Zero;
103 UUID toID = UUID.Zero;
104 string message = string.Empty;
105
106 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
107 return FailureResult();
108
109 message = request["Message"].ToString();
110
111 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
112 return FailureResult();
113
114 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
115 return FailureResult();
116
117 GridInstantMessage im = new GridInstantMessage(m_FriendsModule.Scene, fromID, "", toID,
118 (byte)InstantMessageDialog.FriendshipOffered, message, false, Vector3.Zero);
119
120 if (m_FriendsModule.LocalFriendshipOffered(toID, im))
121 return SuccessResult();
122
123 return FailureResult();
124 }
125
126 byte[] FriendshipApproved(Dictionary<string, object> request)
127 {
128 UUID fromID = UUID.Zero;
129 UUID toID = UUID.Zero;
130 string fromName = string.Empty;
131
132 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
133 return FailureResult();
134
135 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
136 return FailureResult();
137
138 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
139 return FailureResult();
140
141 if (request.ContainsKey("FromName"))
142 fromName = request["FromName"].ToString();
143
144 if (m_FriendsModule.LocalFriendshipApproved(fromID, fromName, toID))
145 return SuccessResult();
146
147 return FailureResult();
148 }
149
150 byte[] FriendshipDenied(Dictionary<string, object> request)
151 {
152 UUID fromID = UUID.Zero;
153 UUID toID = UUID.Zero;
154 string fromName = string.Empty;
155
156 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
157 return FailureResult();
158
159 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
160 return FailureResult();
161
162 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
163 return FailureResult();
164
165 if (request.ContainsKey("FromName"))
166 fromName = request["FromName"].ToString();
167
168 if (m_FriendsModule.LocalFriendshipDenied(fromID, fromName, toID))
169 return SuccessResult();
170
171 return FailureResult();
172 }
173
174 byte[] FriendshipTerminated(Dictionary<string, object> request)
175 {
176 UUID fromID = UUID.Zero;
177 UUID toID = UUID.Zero;
178
179 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
180 return FailureResult();
181
182 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
183 return FailureResult();
184
185 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
186 return FailureResult();
187
188 if (m_FriendsModule.LocalFriendshipTerminated(toID))
189 return SuccessResult();
190
191 return FailureResult();
192 }
193
194 byte[] GrantRights(Dictionary<string, object> request)
195 {
196 UUID fromID = UUID.Zero;
197 UUID toID = UUID.Zero;
198
199 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
200 return FailureResult();
201
202 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
203 return FailureResult();
204
205 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
206 return FailureResult();
207
208 if (m_FriendsModule.LocalGrantRights(/* ??? */))
209 return SuccessResult();
210
211 return FailureResult();
212 }
213
214 byte[] StatusNotification(Dictionary<string, object> request)
215 {
216 UUID fromID = UUID.Zero;
217 UUID toID = UUID.Zero;
218 bool online = false;
219
220 if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID") || !request.ContainsKey("Online"))
221 return FailureResult();
222
223 if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
224 return FailureResult();
225
226 if (!UUID.TryParse(request["ToID"].ToString(), out toID))
227 return FailureResult();
228
229 if (!Boolean.TryParse(request["Online"].ToString(), out online))
230 return FailureResult();
231
232 if (m_FriendsModule.LocalStatusNotification(fromID, toID, online))
233 return SuccessResult();
234
235 return FailureResult();
236 }
237
238 #region Misc
239
90 private byte[] FailureResult() 240 private byte[] FailureResult()
91 { 241 {
92 return BoolResult(false); 242 return BoolResult(false);
@@ -130,5 +280,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
130 return ms.ToArray(); 280 return ms.ToArray();
131 } 281 }
132 282
283 #endregion
133 } 284 }
134} 285}