byte[] GetAgentPrefs(Dictionary <string, object> request)
        {
            if (!request.ContainsKey("UserID"))
            {
                return(FailureResult());
            }

            UUID userID;

            if (!UUID.TryParse(request["UserID"].ToString(), out userID))
            {
                return(FailureResult());
            }
            AgentPrefs prefs = m_AgentPreferencesService.GetAgentPreferences(userID);
            Dictionary <string, object> result = new Dictionary <string, object>();

            if (prefs != null)
            {
                result = prefs.ToKeyValuePairs();
            }

            string xmlString = ServerUtils.BuildXmlResponse(result);

            return(Util.UTF8NoBomEncoding.GetBytes(xmlString));
        }
 public AgentPrefs GetAgentPreferences(UUID principalID)
 {
     return(m_AgentPreferencesService.GetAgentPreferences(principalID));
 }
        public void UpdateAgentPreferences(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID agent)
        {
            if (httpRequest.HttpMethod != "POST")
            {
                httpResponse.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            //m_log.DebugFormat("[AgentPrefs]: UpdateAgentPreferences for {0}", agent.ToString());
            OSDMap req;

            try
            {
                req = (OSDMap)OSDParser.DeserializeLLSDXml(httpRequest.InputStream);
            }
            catch
            {
                httpResponse.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            IAgentPreferencesService aps = m_scenes[0].AgentPreferencesService;
            AgentPrefs data = null;

            if (aps != null)
            {
                data = aps.GetAgentPreferences(agent);
            }

            if (data == null)
            {
                data = new AgentPrefs(agent);
            }

            bool changed = false;
            OSD  tmp;

            if (req.TryGetValue("access_prefs", out tmp) && tmp is OSDMap)
            {
                OSDMap accessPrefs = (OSDMap)tmp;  // We could check with ContainsKey...
                data.AccessPrefs = accessPrefs["max"].AsString();
                changed          = true;
            }
            if (req.TryGetValue("default_object_perm_masks", out tmp) && tmp is OSDMap)
            {
                OSDMap permsMap = (OSDMap)tmp;
                data.PermEveryone  = permsMap["Everyone"].AsInteger();
                data.PermGroup     = permsMap["Group"].AsInteger();
                data.PermNextOwner = permsMap["NextOwner"].AsInteger();
                changed            = true;
            }
            if (req.TryGetValue("hover_height", out tmp))
            {
                data.HoverHeight = (float)tmp.AsReal();
                changed          = true;
            }
            if (req.TryGetValue("language", out tmp))
            {
                data.Language = tmp.AsString();
                changed       = true;
            }
            if (req.TryGetValue("language_is_public", out tmp))
            {
                data.LanguageIsPublic = tmp.AsBoolean();
                changed = true;
            }

            if (changed)
            {
                aps?.StoreAgentPreferences(data);
            }

            IAvatarFactoryModule afm = m_scenes[0].RequestModuleInterface <IAvatarFactoryModule>();

            afm?.SetPreferencesHoverZ(agent, (float)data.HoverHeight);

            OSDMap resp            = new OSDMap();
            OSDMap respAccessPrefs = new OSDMap();

            respAccessPrefs["max"] = data.AccessPrefs;
            resp["access_prefs"]   = respAccessPrefs;

            OSDMap respDefaultPerms = new OSDMap();

            respDefaultPerms["Everyone"]  = data.PermEveryone;
            respDefaultPerms["Group"]     = data.PermGroup;
            respDefaultPerms["NextOwner"] = data.PermNextOwner;

            resp["default_object_perm_masks"] = respDefaultPerms;
            resp["god_level"]          = 0; // *TODO: Add this
            resp["hover_height"]       = data.HoverHeight;
            resp["language"]           = data.Language;
            resp["language_is_public"] = data.LanguageIsPublic;

            httpResponse.RawBuffer  = OSDParser.SerializeLLSDXmlBytes(resp);
            httpResponse.StatusCode = (int)HttpStatusCode.OK;
        }