From 217d511077cba75e48957bcbb0a0da8344fa8f4c Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 15 Aug 2007 15:24:37 +0000
Subject: Temporary fix for the region crossing crash, Although we need to
start to change and improve how we handle caps.
---
OpenSim/Grid/UserServer/UserManager.cs | 119 ++++++++++++++++++++++++++++++++-
1 file changed, 118 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Grid/UserServer')
diff --git a/OpenSim/Grid/UserServer/UserManager.cs b/OpenSim/Grid/UserServer/UserManager.cs
index 4203ba6..c68b260 100644
--- a/OpenSim/Grid/UserServer/UserManager.cs
+++ b/OpenSim/Grid/UserServer/UserManager.cs
@@ -32,6 +32,7 @@ using Nwc.XmlRpc;
using OpenSim.Framework.Data;
using OpenSim.Framework.UserManagement;
using OpenSim.Framework.Utilities;
+using libsecondlife;
namespace OpenSim.Grid.UserServer
{
@@ -41,6 +42,122 @@ namespace OpenSim.Grid.UserServer
{
}
-
+
+ ///
+ /// Deletes an active agent session
+ ///
+ /// The request
+ /// The path (eg /bork/narf/test)
+ /// Parameters sent
+ /// Success "OK" else error
+ public string RestDeleteUserSessionMethod(string request, string path, string param)
+ {
+ // TODO! Important!
+
+ return "OK";
+ }
+
+ ///
+ /// Returns an error message that the user could not be found in the database
+ ///
+ /// XML string consisting of a error element containing individual error(s)
+ public XmlRpcResponse CreateUnknownUserErrorResponse()
+ {
+ XmlRpcResponse response = new XmlRpcResponse();
+ Hashtable responseData = new Hashtable();
+ responseData["error_type"] = "unknown_user";
+ responseData["error_desc"] = "The user requested is not in the database";
+
+ response.Value = responseData;
+ return response;
+ }
+
+ ///
+ /// Converts a user profile to an XML element which can be returned
+ ///
+ /// The user profile
+ /// A string containing an XML Document of the user profile
+ public XmlRpcResponse ProfileToXmlRPCResponse(UserProfileData profile)
+ {
+ XmlRpcResponse response = new XmlRpcResponse();
+ Hashtable responseData = new Hashtable();
+
+ // Account information
+ responseData["firstname"] = profile.username;
+ responseData["lastname"] = profile.surname;
+ responseData["uuid"] = profile.UUID.ToStringHyphenated();
+ // Server Information
+ responseData["server_inventory"] = profile.userInventoryURI;
+ responseData["server_asset"] = profile.userAssetURI;
+ // Profile Information
+ responseData["profile_about"] = profile.profileAboutText;
+ responseData["profile_firstlife_about"] = profile.profileFirstText;
+ responseData["profile_firstlife_image"] = profile.profileFirstImage.ToStringHyphenated();
+ responseData["profile_can_do"] = profile.profileCanDoMask.ToString();
+ responseData["profile_want_do"] = profile.profileWantDoMask.ToString();
+ responseData["profile_image"] = profile.profileImage.ToStringHyphenated();
+ responseData["profile_created"] = profile.created.ToString();
+ responseData["profile_lastlogin"] = profile.lastLogin.ToString();
+ // Home region information
+ responseData["home_coordinates_x"] = profile.homeLocation.X.ToString();
+ responseData["home_coordinates_y"] = profile.homeLocation.Y.ToString();
+ responseData["home_coordinates_z"] = profile.homeLocation.Z.ToString();
+
+ responseData["home_region"] = profile.homeRegion.ToString();
+
+ responseData["home_look_x"] = profile.homeLookAt.X.ToString();
+ responseData["home_look_y"] = profile.homeLookAt.Y.ToString();
+ responseData["home_look_z"] = profile.homeLookAt.Z.ToString();
+ response.Value = responseData;
+
+ return response;
+ }
+
+ #region XMLRPC User Methods
+ //should most likely move out of here and into the grid's userserver sub class
+ public XmlRpcResponse XmlRPCGetUserMethodName(XmlRpcRequest request)
+ {
+ XmlRpcResponse response = new XmlRpcResponse();
+ Hashtable requestData = (Hashtable)request.Params[0];
+ UserProfileData userProfile;
+ if (requestData.Contains("avatar_name"))
+ {
+ userProfile = getUserProfile((string)requestData["avatar_name"]);
+ if (userProfile == null)
+ {
+ return CreateUnknownUserErrorResponse();
+ }
+ }
+ else
+ {
+ return CreateUnknownUserErrorResponse();
+ }
+
+ return ProfileToXmlRPCResponse(userProfile);
+ }
+
+ public XmlRpcResponse XmlRPCGetUserMethodUUID(XmlRpcRequest request)
+ {
+ XmlRpcResponse response = new XmlRpcResponse();
+ Hashtable requestData = (Hashtable)request.Params[0];
+ UserProfileData userProfile;
+ System.Console.WriteLine("METHOD BY UUID CALLED");
+ if (requestData.Contains("avatar_uuid"))
+ {
+ userProfile = getUserProfile((LLUUID)(string)requestData["avatar_uuid"]);
+ if (userProfile == null)
+ {
+ return CreateUnknownUserErrorResponse();
+ }
+ }
+ else
+ {
+ return CreateUnknownUserErrorResponse();
+ }
+
+
+ return ProfileToXmlRPCResponse(userProfile);
+ }
+ #endregion
}
}
--
cgit v1.1