mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
UserProfiles
UserProfiles for Robust and Standalone. Includes service and connectors for Robust and standalone opensim plus matching region module.
This commit is contained in:
92
OpenSim/Server/Handlers/Profiles/UserProfilesConnector.cs
Normal file
92
OpenSim/Server/Handlers/Profiles/UserProfilesConnector.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using Nini.Config;
|
||||
using OpenSim.Server.Base;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Server.Handlers.Base;
|
||||
using log4net;
|
||||
|
||||
namespace OpenSim.Server.Handlers.Profiles
|
||||
{
|
||||
public class UserProfilesConnector: ServiceConnector
|
||||
{
|
||||
static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
|
||||
// Our Local Module
|
||||
public IUserProfilesService ServiceModule
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
// The HTTP server.
|
||||
public IHttpServer Server
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public string ConfigName
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public bool Enabled
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public UserProfilesConnector(IConfigSource config, IHttpServer server, string configName) :
|
||||
base(config, server, configName)
|
||||
{
|
||||
ConfigName = "UserProfilesService";
|
||||
if(!string.IsNullOrEmpty(configName))
|
||||
ConfigName = configName;
|
||||
|
||||
IConfig serverConfig = config.Configs[ConfigName];
|
||||
if (serverConfig == null)
|
||||
throw new Exception(String.Format("No section {0} in config file", ConfigName));
|
||||
|
||||
if(!serverConfig.GetBoolean("Enabled",false))
|
||||
{
|
||||
Enabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
Enabled = true;
|
||||
|
||||
Server = server;
|
||||
|
||||
string service = serverConfig.GetString("LocalServiceModule", String.Empty);
|
||||
|
||||
Object[] args = new Object[] { config, ConfigName };
|
||||
ServiceModule = ServerUtils.LoadPlugin<IUserProfilesService>(service, args);
|
||||
|
||||
JsonRpcProfileHandlers handler = new JsonRpcProfileHandlers(ServiceModule);
|
||||
|
||||
Server.AddJsonRPCHandler("avatarclassifiedsrequest", handler.AvatarClassifiedsRequest);
|
||||
Server.AddJsonRPCHandler("classified_update", handler.ClassifiedUpdate);
|
||||
Server.AddJsonRPCHandler("classifieds_info_query", handler.ClassifiedInfoRequest);
|
||||
Server.AddJsonRPCHandler("classified_delete", handler.ClassifiedDelete);
|
||||
Server.AddJsonRPCHandler("avatarpicksrequest", handler.AvatarPicksRequest);
|
||||
Server.AddJsonRPCHandler("pickinforequest", handler.PickInfoRequest);
|
||||
Server.AddJsonRPCHandler("picks_update", handler.PicksUpdate);
|
||||
Server.AddJsonRPCHandler("picks_delete", handler.PicksDelete);
|
||||
Server.AddJsonRPCHandler("avatarnotesrequest", handler.AvatarNotesRequest);
|
||||
Server.AddJsonRPCHandler("avatar_notes_update", handler.NotesUpdate);
|
||||
Server.AddJsonRPCHandler("avatar_properties_request", handler.AvatarPropertiesRequest);
|
||||
Server.AddJsonRPCHandler("avatar_properties_update", handler.AvatarPropertiesUpdate);
|
||||
Server.AddJsonRPCHandler("avatar_interests_update", handler.AvatarInterestsUpdate);
|
||||
Server.AddJsonRPCHandler("image_assets_request", handler.AvatarImageAssetsRequest);
|
||||
// Server.AddJsonRPCHandler("user_preferences_request", handler.UserPreferencesRequest);
|
||||
// Server.AddJsonRPCHandler("user_preferences_update", handler.UserPreferencesUpdate);
|
||||
// Server.AddJsonRPCHandler("user_account_create", handler.UserAccountCreate);
|
||||
// Server.AddJsonRPCHandler("user_account_auth", handler.UserAccountAuth);
|
||||
// Server.AddJsonRPCHandler("user_account_test", handler.UserAccountTest);
|
||||
Server.AddJsonRPCHandler("user_data_request", handler.RequestUserAppData);
|
||||
Server.AddJsonRPCHandler("user_data_update", handler.UpdateUserAppData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
434
OpenSim/Server/Handlers/Profiles/UserProfilesHandlers.cs
Normal file
434
OpenSim/Server/Handlers/Profiles/UserProfilesHandlers.cs
Normal file
@@ -0,0 +1,434 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using log4net;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Framework;
|
||||
|
||||
namespace OpenSim.Server.Handlers
|
||||
{
|
||||
public class UserProfilesHandlers
|
||||
{
|
||||
public UserProfilesHandlers ()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class JsonRpcProfileHandlers
|
||||
{
|
||||
static readonly ILog m_log =
|
||||
LogManager.GetLogger(
|
||||
MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public IUserProfilesService Service
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public JsonRpcProfileHandlers(IUserProfilesService service)
|
||||
{
|
||||
Service = service;
|
||||
}
|
||||
|
||||
#region Classifieds
|
||||
/// <summary>
|
||||
/// Request avatar's classified ads.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An array containing all the calassified uuid and it's name created by the creator id
|
||||
/// </returns>
|
||||
/// <param name='json'>
|
||||
/// Our parameters are in the OSDMap json["params"]
|
||||
/// </param>
|
||||
/// <param name='response'>
|
||||
/// If set to <c>true</c> response.
|
||||
/// </param>
|
||||
public bool AvatarClassifiedsRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
m_log.DebugFormat ("Classified Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSDMap request = (OSDMap)json["params"];
|
||||
UUID creatorId = new UUID(request["creatorId"].AsString());
|
||||
|
||||
|
||||
OSDArray data = (OSDArray) Service.AvatarClassifiedsRequest(creatorId);
|
||||
response.Result = data;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool ClassifiedUpdate(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "Error parsing classified update request";
|
||||
m_log.DebugFormat ("Classified Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserClassifiedAdd ad = new UserClassifiedAdd();
|
||||
object Ad = (object)ad;
|
||||
OSD.DeserializeMembers(ref Ad, (OSDMap)json["params"]);
|
||||
if(Service.ClassifiedUpdate(ad, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(ad);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool ClassifiedDelete(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
m_log.DebugFormat ("Classified Delete Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSDMap request = (OSDMap)json["params"];
|
||||
UUID classifiedId = new UUID(request["classifiedID"].AsString());
|
||||
|
||||
OSDMap res = new OSDMap();
|
||||
res["result"] = OSD.FromString("success");
|
||||
response.Result = res;
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public bool ClassifiedInfoRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Classified Info Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserClassifiedAdd ad = new UserClassifiedAdd();
|
||||
object Ad = (object)ad;
|
||||
OSD.DeserializeMembers(ref Ad, (OSDMap)json["params"]);
|
||||
if(Service.ClassifiedInfoRequest(ref ad, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(ad);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
#endregion Classifieds
|
||||
|
||||
#region Picks
|
||||
public bool AvatarPicksRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
m_log.DebugFormat ("Avatar Picks Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSDMap request = (OSDMap)json["params"];
|
||||
UUID creatorId = new UUID(request["creatorId"].AsString());
|
||||
|
||||
|
||||
OSDArray data = (OSDArray) Service.AvatarPicksRequest(creatorId);
|
||||
response.Result = data;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool PickInfoRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Avatar Picks Info Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfilePick pick = new UserProfilePick();
|
||||
object Pick = (object)pick;
|
||||
OSD.DeserializeMembers(ref Pick, (OSDMap)json["params"]);
|
||||
if(Service.PickInfoRequest(ref pick, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(pick);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool PicksUpdate(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Avatar Picks Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfilePick pick = new UserProfilePick();
|
||||
object Pick = (object)pick;
|
||||
OSD.DeserializeMembers(ref Pick, (OSDMap)json["params"]);
|
||||
if(Service.PicksUpdate(ref pick, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(pick);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = "unable to update pick";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool PicksDelete(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
m_log.DebugFormat ("Avatar Picks Delete Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSDMap request = (OSDMap)json["params"];
|
||||
UUID pickId = new UUID(request["pickId"].AsString());
|
||||
if(Service.PicksDelete(pickId))
|
||||
return true;
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = "data error removing record";
|
||||
return false;
|
||||
}
|
||||
#endregion Picks
|
||||
|
||||
#region Notes
|
||||
public bool AvatarNotesRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "Params missing";
|
||||
m_log.DebugFormat ("Avatar Notes Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfileNotes note = new UserProfileNotes();
|
||||
object Note = (object)note;
|
||||
OSD.DeserializeMembers(ref Note, (OSDMap)json["params"]);
|
||||
if(Service.AvatarNotesRequest(ref note))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(note);
|
||||
return true;
|
||||
}
|
||||
|
||||
object Notes = (object) note;
|
||||
OSD.DeserializeMembers(ref Notes, (OSDMap)json["params"]);
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool NotesUpdate(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "No parameters";
|
||||
m_log.DebugFormat ("Avatar Notes Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfileNotes note = new UserProfileNotes();
|
||||
object Notes = (object) note;
|
||||
OSD.DeserializeMembers(ref Notes, (OSDMap)json["params"]);
|
||||
if(Service.NotesUpdate(ref note, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(note);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endregion Notes
|
||||
|
||||
#region Profile Properties
|
||||
public bool AvatarPropertiesRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Avatar Properties Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfileProperties props = new UserProfileProperties();
|
||||
object Props = (object)props;
|
||||
OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
|
||||
if(Service.AvatarPropertiesRequest(ref props, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(props);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool AvatarPropertiesUpdate(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Avatar Properties Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfileProperties props = new UserProfileProperties();
|
||||
object Props = (object)props;
|
||||
OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
|
||||
if(Service.AvatarPropertiesUpdate(ref props, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(props);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
#endregion Profile Properties
|
||||
|
||||
#region Interests
|
||||
public bool AvatarInterestsUpdate(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("Avatar Interests Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserProfileProperties props = new UserProfileProperties();
|
||||
object Props = (object)props;
|
||||
OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
|
||||
if(Service.AvatarInterestsUpdate(props, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(props);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
#endregion Interests
|
||||
|
||||
#region Utility
|
||||
public bool AvatarImageAssetsRequest(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
m_log.DebugFormat ("Avatar Image Assets Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
OSDMap request = (OSDMap)json["params"];
|
||||
UUID avatarId = new UUID(request["avatarId"].AsString());
|
||||
|
||||
OSDArray data = (OSDArray) Service.AvatarImageAssetsRequest(avatarId);
|
||||
response.Result = data;
|
||||
|
||||
return true;
|
||||
}
|
||||
#endregion Utiltiy
|
||||
|
||||
#region UserData
|
||||
public bool RequestUserAppData(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("User Application Service URL Request: No Parameters!");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserAppData props = new UserAppData();
|
||||
object Props = (object)props;
|
||||
OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
|
||||
if(Service.RequestUserAppData(ref props, ref result))
|
||||
{
|
||||
OSDMap res = new OSDMap();
|
||||
res["result"] = OSD.FromString("success");
|
||||
res["token"] = OSD.FromString (result);
|
||||
response.Result = res;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool UpdateUserAppData(OSDMap json, ref JsonRpcResponse response)
|
||||
{
|
||||
if(!json.ContainsKey("params"))
|
||||
{
|
||||
response.Error.Code = ErrorCode.ParseError;
|
||||
response.Error.Message = "no parameters supplied";
|
||||
m_log.DebugFormat ("User App Data Update Request");
|
||||
return false;
|
||||
}
|
||||
|
||||
string result = string.Empty;
|
||||
UserAppData props = new UserAppData();
|
||||
object Props = (object)props;
|
||||
OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
|
||||
if(Service.SetUserAppData(props, ref result))
|
||||
{
|
||||
response.Result = OSD.SerializeMembers(props);
|
||||
return true;
|
||||
}
|
||||
|
||||
response.Error.Code = ErrorCode.InternalError;
|
||||
response.Error.Message = string.Format("{0}", result);
|
||||
return false;
|
||||
}
|
||||
#endregion UserData
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user