do a whole load of crappy hacking to get cubes to display google.com
currently, for smoe reason the page only appears when you click a face. also, actually navigating anywhere always snaps you back to the google search box, for some unknown reason you can still change the url and normal navigation will work againprebuild-update
parent
2be7d0cdd4
commit
701f39c8c2
|
@ -362,7 +362,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
string path = request.RawUrl;
|
string path = request.RawUrl;
|
||||||
string handlerKey = GetHandlerKey(request.HttpMethod, path);
|
string handlerKey = GetHandlerKey(request.HttpMethod, path);
|
||||||
|
|
||||||
//m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
|
m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path);
|
||||||
|
|
||||||
if (TryGetStreamHandler(handlerKey, out requestHandler))
|
if (TryGetStreamHandler(handlerKey, out requestHandler))
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,8 +35,10 @@ using log4net;
|
||||||
using Mono.Addins;
|
using Mono.Addins;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
|
using OpenMetaverse.Messages.Linden;
|
||||||
using OpenMetaverse.StructuredData;
|
using OpenMetaverse.StructuredData;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Capabilities;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Servers.HttpServer;
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
|
@ -77,28 +79,109 @@ namespace OpenSim.Region.CoreModules.Media.Moap
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[MOAP]: Registering ObjectMedia and ObjectMediaNavigate capabilities for agent {0}", agentID);
|
"[MOAP]: Registering ObjectMedia and ObjectMediaNavigate capabilities for agent {0}", agentID);
|
||||||
|
|
||||||
|
// We do receive a post to ObjectMedia when a new avatar enters the region - though admittedly this is the
|
||||||
|
// avatar that set the texture in the first place.
|
||||||
|
// Even though we're registering for POST we're going to get GETS and UPDATES too
|
||||||
caps.RegisterHandler(
|
caps.RegisterHandler(
|
||||||
"ObjectMedia", new RestStreamHandler("GET", "/CAPS/" + UUID.Random(), OnObjectMediaRequest));
|
"ObjectMedia", new RestStreamHandler("POST", "/CAPS/" + UUID.Random(), HandleObjectMediaRequest));
|
||||||
|
|
||||||
|
// We do get these posts when the url has been changed.
|
||||||
|
// Even though we're registering for POST we're going to get GETS and UPDATES too
|
||||||
caps.RegisterHandler(
|
caps.RegisterHandler(
|
||||||
"ObjectMediaNavigate", new RestStreamHandler("GET", "/CAPS/" + UUID.Random(), OnObjectMediaNavigateRequest));
|
"ObjectMediaNavigate", new RestStreamHandler("POST", "/CAPS/" + UUID.Random(), HandleObjectMediaNavigateRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string OnObjectMediaRequest(
|
/// <summary>
|
||||||
|
/// Sets or gets per face media textures.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
/// <param name="param"></param>
|
||||||
|
/// <param name="httpRequest"></param>
|
||||||
|
/// <param name="httpResponse"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected string HandleObjectMediaRequest(
|
||||||
string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[MOAP]: Got ObjectMedia request for {0}", path);
|
m_log.DebugFormat("[MOAP]: Got ObjectMedia raw request [{0}]", request);
|
||||||
|
|
||||||
|
Hashtable osdParams = new Hashtable();
|
||||||
|
osdParams = (Hashtable)LLSD.LLSDDeserialize(Utils.StringToBytes(request));
|
||||||
|
|
||||||
|
foreach (Object key in osdParams.Keys)
|
||||||
|
m_log.DebugFormat("[MOAP]: Param {0}={1}", key, osdParams[key]);
|
||||||
|
|
||||||
|
string verb = (string)osdParams["verb"];
|
||||||
|
|
||||||
|
if ("GET" == verb)
|
||||||
|
return HandleObjectMediaRequestGet(path, osdParams, httpRequest, httpResponse);
|
||||||
|
|
||||||
//NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
//NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
||||||
|
|
||||||
|
// TODO: Persist in memory
|
||||||
|
// TODO: Tell other agents in the region about the change via the ObjectMediaResponse (?) message
|
||||||
|
// TODO: Persist in database
|
||||||
|
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string OnObjectMediaNavigateRequest(
|
protected string HandleObjectMediaRequestGet(
|
||||||
|
string path, Hashtable osdParams, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||||
|
{
|
||||||
|
// Yeah, only for cubes right now. I know it's dumb.
|
||||||
|
int faces = 6;
|
||||||
|
|
||||||
|
MediaEntry[] media = new MediaEntry[faces];
|
||||||
|
for (int i = 0; i < faces; i++)
|
||||||
|
{
|
||||||
|
MediaEntry me = new MediaEntry();
|
||||||
|
me.HomeURL = "google.com";
|
||||||
|
me.CurrentURL = "google.com";
|
||||||
|
me.AutoScale = true;
|
||||||
|
//me.Height = 300;
|
||||||
|
//me.Width = 240;
|
||||||
|
media[i] = me;
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectMediaResponse resp = new ObjectMediaResponse();
|
||||||
|
|
||||||
|
resp.PrimID = (UUID)osdParams["object_id"];
|
||||||
|
resp.FaceMedia = media;
|
||||||
|
|
||||||
|
// I know this has to end with the last avatar to edit and the version code shouldn't always be 16. Just trying
|
||||||
|
// to minimally satisfy for now to get something working
|
||||||
|
resp.Version = "x-mv:0000000016/" + UUID.Random();
|
||||||
|
|
||||||
|
//string rawResp = resp.Serialize().ToString();
|
||||||
|
string rawResp = OSDParser.SerializeLLSDXmlString(resp.Serialize());
|
||||||
|
|
||||||
|
m_log.DebugFormat("[MOAP]: Got HandleObjectMediaRequestGet raw response is [{0}]", rawResp);
|
||||||
|
|
||||||
|
return rawResp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Received from the viewer if a user has changed the url of a media texture.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="path"></param>
|
||||||
|
/// <param name="param"></param>
|
||||||
|
/// <param name="httpRequest">/param>
|
||||||
|
/// <param name="httpResponse">/param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected string HandleObjectMediaNavigateRequest(
|
||||||
string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
string request, string path, string param, OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request for {0}", path);
|
m_log.DebugFormat("[MOAP]: Got ObjectMediaNavigate request for {0}", path);
|
||||||
//NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
//NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
|
||||||
|
|
||||||
|
// TODO: Persist in memory
|
||||||
|
// TODO: Tell other agents in the region about the change via the ObjectMediaResponse (?) message
|
||||||
|
// TODO: Persist in database
|
||||||
|
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue