diff options
Diffstat (limited to '')
3 files changed, 59 insertions, 1 deletions
diff --git a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnector.cs b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnector.cs index 04328c9..9a3e125 100644 --- a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnector.cs +++ b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnector.cs | |||
@@ -133,6 +133,36 @@ namespace OpenSim.Groups | |||
133 | return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]); | 133 | return GroupsDataUtils.GroupRecord((Dictionary<string, object>)ret["RESULT"]); |
134 | } | 134 | } |
135 | 135 | ||
136 | public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string query) | ||
137 | { | ||
138 | List<DirGroupsReplyData> hits = new List<DirGroupsReplyData>(); | ||
139 | if (string.IsNullOrEmpty(query)) | ||
140 | return hits; | ||
141 | |||
142 | Dictionary<string, object> sendData = new Dictionary<string, object>(); | ||
143 | sendData["Query"] = query; | ||
144 | sendData["RequestingAgentID"] = RequestingAgentID; | ||
145 | |||
146 | Dictionary<string, object> ret = MakeRequest("FINDGROUPS", sendData); | ||
147 | |||
148 | if (ret == null) | ||
149 | return hits; | ||
150 | |||
151 | if (!ret.ContainsKey("RESULT")) | ||
152 | return hits; | ||
153 | |||
154 | if (ret["RESULT"].ToString() == "NULL") | ||
155 | return hits; | ||
156 | |||
157 | foreach (object v in ((Dictionary<string, object>)ret["RESULT"]).Values) | ||
158 | { | ||
159 | DirGroupsReplyData m = GroupsDataUtils.DirGroupsReplyData((Dictionary<string, object>)v); | ||
160 | hits.Add(m); | ||
161 | } | ||
162 | |||
163 | return hits; | ||
164 | } | ||
165 | |||
136 | public GroupMembershipData AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason) | 166 | public GroupMembershipData AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason) |
137 | { | 167 | { |
138 | reason = string.Empty; | 168 | reason = string.Empty; |
diff --git a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs index 9b6bfbd..d3de0e8 100644 --- a/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs +++ b/OpenSim/Addons/Groups/Remote/GroupsServiceRemoteConnectorModule.cs | |||
@@ -199,7 +199,7 @@ namespace OpenSim.Groups | |||
199 | public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search) | 199 | public List<DirGroupsReplyData> FindGroups(string RequestingAgentID, string search) |
200 | { | 200 | { |
201 | // TODO! | 201 | // TODO! |
202 | return new List<DirGroupsReplyData>(); | 202 | return m_GroupsService.FindGroups(RequestingAgentID, search); |
203 | } | 203 | } |
204 | 204 | ||
205 | public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason) | 205 | public bool AddAgentToGroup(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID, string token, out string reason) |
diff --git a/OpenSim/Addons/Groups/Remote/GroupsServiceRobustConnector.cs b/OpenSim/Addons/Groups/Remote/GroupsServiceRobustConnector.cs index 106c6c4..249d974 100644 --- a/OpenSim/Addons/Groups/Remote/GroupsServiceRobustConnector.cs +++ b/OpenSim/Addons/Groups/Remote/GroupsServiceRobustConnector.cs | |||
@@ -133,6 +133,8 @@ namespace OpenSim.Groups | |||
133 | return HandleAddNotice(request); | 133 | return HandleAddNotice(request); |
134 | case "GETNOTICES": | 134 | case "GETNOTICES": |
135 | return HandleGetNotices(request); | 135 | return HandleGetNotices(request); |
136 | case "FINDGROUPS": | ||
137 | return HandleFindGroups(request); | ||
136 | } | 138 | } |
137 | m_log.DebugFormat("[GROUPS HANDLER]: unknown method request: {0}", method); | 139 | m_log.DebugFormat("[GROUPS HANDLER]: unknown method request: {0}", method); |
138 | } | 140 | } |
@@ -740,6 +742,32 @@ namespace OpenSim.Groups | |||
740 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | 742 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); |
741 | } | 743 | } |
742 | 744 | ||
745 | byte[] HandleFindGroups(Dictionary<string, object> request) | ||
746 | { | ||
747 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
748 | |||
749 | if (!request.ContainsKey("RequestingAgentID") || !request.ContainsKey("Query")) | ||
750 | NullResult(result, "Bad network data"); | ||
751 | |||
752 | List<DirGroupsReplyData> hits = m_GroupsService.FindGroups(request["RequestingAgentID"].ToString(), request["Query"].ToString()); | ||
753 | |||
754 | if (hits == null || (hits != null && hits.Count == 0)) | ||
755 | NullResult(result, "No hits"); | ||
756 | else | ||
757 | { | ||
758 | Dictionary<string, object> dict = new Dictionary<string, object>(); | ||
759 | int i = 0; | ||
760 | foreach (DirGroupsReplyData n in hits) | ||
761 | dict["n-" + i++] = GroupsDataUtils.DirGroupsReplyData(n); | ||
762 | |||
763 | result["RESULT"] = dict; | ||
764 | } | ||
765 | |||
766 | |||
767 | string xmlString = ServerUtils.BuildXmlResponse(result); | ||
768 | return Util.UTF8NoBomEncoding.GetBytes(xmlString); | ||
769 | } | ||
770 | |||
743 | 771 | ||
744 | #region Helpers | 772 | #region Helpers |
745 | 773 | ||