diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/FriendsRequestHandler.cs | 155 |
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 | } |