private UserAccount SendAndGetReply(UUID avatarID, Dictionary<string, object> sendData) { string reply = string.Empty; string reqString = WebUtils.BuildQueryString(sendData); // MainConsole.Instance.DebugFormat("[ACCOUNTS CONNECTOR]: queryString = {0}", reqString); UserAccount account = null; List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService>().FindValueOf(avatarID.ToString(), "UserAccountServerURI", true); foreach (string m_ServerURI in m_ServerURIs) { try { reply = SynchronousRestFormsRequester.MakeRequest ("POST", m_ServerURI, reqString); if (reply == string.Empty) continue; Dictionary<string, object> replyData = WebUtils.ParseXmlResponse (reply); if ((replyData != null) && replyData.ContainsKey ("result") && (replyData["result"] != null)) { if (replyData["result"] is Dictionary<string, object>) { account = new UserAccount (); account.FromKVP((Dictionary<string, object>)replyData["result"]); account.GenericData["GridURL"] = m_ServerURI.Remove (m_ServerURI.LastIndexOf ('/')); return account; } } } catch (Exception e) { MainConsole.Instance.InfoFormat ("[ACCOUNT CONNECTOR]: Exception when contacting user account server: {0}", e.Message); } } return account; }
public List<UserAccount> GetUserAccounts(List<UUID> scopeIDs, string query) { Dictionary<string, object> sendData = new Dictionary<string, object>(); //sendData["SCOPEID"] = scopeID.ToString(); sendData["VERSIONMIN"] = 0.ToString(); sendData["VERSIONMAX"] = 0.ToString(); sendData["METHOD"] = "getaccounts"; sendData["ScopeID"] = GetScopeID(scopeIDs); sendData["query"] = query; string reply = string.Empty; string reqString = WebUtils.BuildQueryString(sendData); // MainConsole.Instance.DebugFormat("[ACCOUNTS CONNECTOR]: queryString = {0}", reqString); List<UserAccount> accounts = new List<UserAccount>(); try { List<string> m_ServerURIs = m_registry.RequestModuleInterface<IConfigurationService>().FindValueOf("UserAccountServerURI"); foreach (string m_ServerURI in m_ServerURIs) { reply = SynchronousRestFormsRequester.MakeRequest("POST", m_ServerURI, reqString); if (reply == null || (reply != null && reply == string.Empty)) continue; Dictionary<string, object> replyData = WebUtils.ParseXmlResponse(reply); if (replyData != null) { if (replyData.ContainsKey("result") && replyData.ContainsKey("result").ToString() == "null") continue; Dictionary<string, object>.ValueCollection accountList = replyData.Values; //MainConsole.Instance.DebugFormat("[ACCOUNTS CONNECTOR]: GetAgents returned {0} elements", pinfosList.Count); foreach (object acc in accountList) { if (acc is Dictionary<string, object>) { UserAccount pinfo = new UserAccount(); pinfo.FromKVP((Dictionary<string, object>)acc); pinfo.GenericData["GridURL"] = m_ServerURI.Remove(m_ServerURI.LastIndexOf('/')); accounts.Add(pinfo); } else MainConsole.Instance.DebugFormat("[ACCOUNT CONNECTOR]: GetUserAccounts received invalid response type {0}", acc.GetType()); } } else MainConsole.Instance.DebugFormat("[ACCOUNTS CONNECTOR]: GetUserAccounts received null response"); } } catch (Exception e) { MainConsole.Instance.InfoFormat("[ACCOUNT CONNECTOR]: Exception when contacting accounts server: {0}", e.Message); } return accounts; }