UserProfiles

UserProfiles for Robust and Standalone. Includes service and connectors for Robust and standalone opensim plus matching region module.
This commit is contained in:
BlueWall
2013-05-13 22:11:28 -04:00
parent 6b88a665d3
commit 328883700a
20 changed files with 3727 additions and 178 deletions

View 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);
}
}
}

View 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
}
}