Exemplo n.º 1
0
        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;

        }
Exemplo n.º 2
0
        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;
        }