From a3b10caa07530d4016bd3606a7fe892703e3fdb3 Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Fri, 16 May 2008 14:48:09 +0000
Subject: starting to put appearance into grid comms.  now I know why everyone
 hates OGS1

---
 .../Region/Communications/OGS1/OGS1UserServices.cs | 35 +++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
index 63fad4a..d77f190 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
@@ -87,6 +87,19 @@ namespace OpenSim.Region.Communications.OGS1
             return userData;
         }
 
+        public AvatarAppearance ConvertXMLRPCDataToAvatarAppearance(Hashtable data)
+        {
+            if (data.Contains("error_type"))
+            {
+                m_log.Warn("[GRID]: " +
+                           "Error sent by user server when trying to get user appearance: (" +
+                           data["error_type"] +
+                           "): " + data["error_desc"]);
+                return null;
+            }
+            return null;
+        }
+
         public List<AvatarPickerAvatar> ConvertXMLRPCDataToAvatarPickerList(LLUUID queryID, Hashtable data)
         {
             List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
@@ -552,7 +565,27 @@ namespace OpenSim.Region.Communications.OGS1
         /// TODO: stubs for now to get us to a compiling state gently
         public AvatarAppearance GetUserAppearance(LLUUID user)
         {
-            return new AvatarAppearance();
+            AvatarAppearance appearance = null;
+            try
+            {
+                Hashtable param = new Hashtable();
+                param["ownerID"] = user.ToString();
+
+                IList parameters = new ArrayList();
+                parameters.Add(param);
+                XmlRpcRequest req = new XmlRpcRequest("get_user_appearance", parameters);
+                XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 8000);
+                Hashtable respData = (Hashtable) resp.Value;
+
+                return ConvertXMLRPCDataToAvatarAppearance(respData);
+            }
+            catch (WebException e)
+            {
+                m_log.Warn("[OGS1 USER SERVICES]: Error when trying to fetch Avatar's appearance: " +
+                           e.Message);
+                // Return Empty list (no friends)
+            }
+            return appearance;
         }
 
         public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
-- 
cgit v1.1