435 lines
15 KiB
C#
435 lines
15 KiB
C#
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
|
|
}
|
|
}
|
|
|