Mantis#1739. Thank you kindly, Grumly57 for a patch that:

Implements X-SecondLife-* HTTP Headers for llHTTPRequest
0.6.0-stable
Charles Krinke 2008-07-14 13:51:54 +00:00
parent 4476d484c3
commit 00791594ad
4 changed files with 42 additions and 4 deletions

View File

@ -34,7 +34,7 @@ namespace OpenSim.Region.Environment.Interfaces
public interface IHttpRequests public interface IHttpRequests
{ {
LLUUID MakeHttpRequest(string url, string parameters, string body); LLUUID MakeHttpRequest(string url, string parameters, string body);
LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body); LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, Dictionary<string, string> headers, string body);
void StopHttpRequest(uint m_localID, LLUUID m_itemID); void StopHttpRequest(uint m_localID, LLUUID m_itemID);
HttpRequestClass GetNextCompletedRequest(); HttpRequestClass GetNextCompletedRequest();
void RemoveCompletedRequest(LLUUID id); void RemoveCompletedRequest(LLUUID id);

View File

@ -37,6 +37,7 @@ using OpenSim.Framework;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Interfaces;
using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Environment.Scenes;
using System.Collections;
/***************************************************** /*****************************************************
* *
@ -105,7 +106,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
return LLUUID.Zero; return LLUUID.Zero;
} }
public LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body) public LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, Dictionary<string, string> headers, string body)
{ {
LLUUID reqID = LLUUID.Random(); LLUUID reqID = LLUUID.Random();
HttpRequestClass htc = new HttpRequestClass(); HttpRequestClass htc = new HttpRequestClass();
@ -150,6 +151,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
htc.reqID = reqID; htc.reqID = reqID;
htc.httpTimeout = httpTimeout; htc.httpTimeout = httpTimeout;
htc.outbound_body = body; htc.outbound_body = body;
htc.response_headers = headers;
lock (HttpListLock) lock (HttpListLock)
{ {
@ -280,6 +282,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
public HttpWebRequest request; public HttpWebRequest request;
public string response_body; public string response_body;
public List<string> response_metadata; public List<string> response_metadata;
public Dictionary<string, string> response_headers;
public int status; public int status;
public string url; public string url;
@ -314,6 +317,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
request.Method = httpMethod; request.Method = httpMethod;
request.ContentType = httpMIMEType; request.ContentType = httpMIMEType;
foreach (KeyValuePair<string, string> entry in response_headers)
request.Headers[entry.Key] = entry.Value;
// Encode outbound data // Encode outbound data
if (outbound_body.Length > 0) { if (outbound_body.Length > 0) {
byte[] data = Encoding.UTF8.GetBytes(outbound_body); byte[] data = Encoding.UTF8.GetBytes(outbound_body);

View File

@ -6868,8 +6868,24 @@ namespace OpenSim.Region.ScriptEngine.Common
{ {
param.Add(o.ToString()); param.Add(o.ToString());
} }
Dictionary<string, string> httpHeaders = new Dictionary<string, string>();
httpHeaders["X-SecondLife-Shard"] = "OpenSim";
httpHeaders["X-SecondLife-Object-Name"] = m_host.Name;
httpHeaders["X-SecondLife-Object-Key"] = m_itemID.ToString();
httpHeaders["X-SecondLife-Region"] = World.RegionInfo.RegionName;
httpHeaders["X-SecondLife-Local-Position"] = m_host.AbsolutePosition.ToString();
httpHeaders["X-SecondLife-Local-Velocity"] = m_host.Velocity.ToString();
httpHeaders["X-SecondLife-Local-Rotation"] = m_host.RotationOffset.ToString();
ScenePresence scenePresence = World.GetScenePresence(m_host.ObjectOwner);
httpHeaders["X-SecondLife-Owner-Name"] = scenePresence == null ? string.Empty : scenePresence.Name;
httpHeaders["X-SecondLife-Owner-Key"] = m_host.ObjectOwner.ToString();
LLUUID reqID = httpScriptMod. LLUUID reqID = httpScriptMod.
StartHttpRequest(m_localID, m_itemID, url, param, body); StartHttpRequest(m_localID, m_itemID, url, param, httpHeaders, body);
if (reqID != LLUUID.Zero) if (reqID != LLUUID.Zero)
return reqID.ToString(); return reqID.ToString();

View File

@ -6648,8 +6648,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{ {
param.Add(o.ToString()); param.Add(o.ToString());
} }
Dictionary<string, string> httpHeaders = new Dictionary<string, string>();
httpHeaders["X-SecondLife-Shard"] = "OpenSim";
httpHeaders["X-SecondLife-Object-Name"] = m_host.Name;
httpHeaders["X-SecondLife-Object-Key"] = m_itemID.ToString();
httpHeaders["X-SecondLife-Region"] = World.RegionInfo.RegionName;
httpHeaders["X-SecondLife-Local-Position"] = m_host.AbsolutePosition.ToString();
httpHeaders["X-SecondLife-Local-Velocity"] = m_host.Velocity.ToString();
httpHeaders["X-SecondLife-Local-Rotation"] = m_host.RotationOffset.ToString();
ScenePresence scenePresence = World.GetScenePresence(m_host.ObjectOwner);
httpHeaders["X-SecondLife-Owner-Name"] = scenePresence == null ? string.Empty : scenePresence.Name;
httpHeaders["X-SecondLife-Owner-Key"] = m_host.ObjectOwner.ToString();
LLUUID reqID = httpScriptMod. LLUUID reqID = httpScriptMod.
StartHttpRequest(m_localID, m_itemID, url, param, body); StartHttpRequest(m_localID, m_itemID, url, param, httpHeaders, body);
if (reqID != LLUUID.Zero) if (reqID != LLUUID.Zero)
return reqID.ToString(); return reqID.ToString();