diff options
author | Charles Krinke | 2008-07-14 13:51:54 +0000 |
---|---|---|
committer | Charles Krinke | 2008-07-14 13:51:54 +0000 |
commit | 00791594ad4ed6d78bd6edbb2e02eaaf5c30c8ce (patch) | |
tree | 17bf6ae0214a3b83835874bdd9723e6e285cfdfa | |
parent | fixing warning in IRCBridgeModule and logging the exception cause now. (diff) | |
download | opensim-SC-00791594ad4ed6d78bd6edbb2e02eaaf5c30c8ce.zip opensim-SC-00791594ad4ed6d78bd6edbb2e02eaaf5c30c8ce.tar.gz opensim-SC-00791594ad4ed6d78bd6edbb2e02eaaf5c30c8ce.tar.bz2 opensim-SC-00791594ad4ed6d78bd6edbb2e02eaaf5c30c8ce.tar.xz |
Mantis#1739. Thank you kindly, Grumly57 for a patch that:
Implements X-SecondLife-* HTTP Headers for llHTTPRequest
4 files changed, 42 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs index 46ba9b2..3a635de 100644 --- a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs +++ b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs | |||
@@ -34,7 +34,7 @@ namespace OpenSim.Region.Environment.Interfaces | |||
34 | public interface IHttpRequests | 34 | public interface IHttpRequests |
35 | { | 35 | { |
36 | LLUUID MakeHttpRequest(string url, string parameters, string body); | 36 | LLUUID MakeHttpRequest(string url, string parameters, string body); |
37 | LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body); | 37 | LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, Dictionary<string, string> headers, string body); |
38 | void StopHttpRequest(uint m_localID, LLUUID m_itemID); | 38 | void StopHttpRequest(uint m_localID, LLUUID m_itemID); |
39 | HttpRequestClass GetNextCompletedRequest(); | 39 | HttpRequestClass GetNextCompletedRequest(); |
40 | void RemoveCompletedRequest(LLUUID id); | 40 | void RemoveCompletedRequest(LLUUID id); |
diff --git a/OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs index 6e32362..c670ad7 100644 --- a/OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs | |||
@@ -37,6 +37,7 @@ using OpenSim.Framework; | |||
37 | using OpenSim.Framework.Servers; | 37 | using OpenSim.Framework.Servers; |
38 | using OpenSim.Region.Environment.Interfaces; | 38 | using OpenSim.Region.Environment.Interfaces; |
39 | using OpenSim.Region.Environment.Scenes; | 39 | using OpenSim.Region.Environment.Scenes; |
40 | using System.Collections; | ||
40 | 41 | ||
41 | /***************************************************** | 42 | /***************************************************** |
42 | * | 43 | * |
@@ -105,7 +106,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest | |||
105 | return LLUUID.Zero; | 106 | return LLUUID.Zero; |
106 | } | 107 | } |
107 | 108 | ||
108 | public LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body) | 109 | public LLUUID StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, Dictionary<string, string> headers, string body) |
109 | { | 110 | { |
110 | LLUUID reqID = LLUUID.Random(); | 111 | LLUUID reqID = LLUUID.Random(); |
111 | HttpRequestClass htc = new HttpRequestClass(); | 112 | HttpRequestClass htc = new HttpRequestClass(); |
@@ -150,6 +151,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest | |||
150 | htc.reqID = reqID; | 151 | htc.reqID = reqID; |
151 | htc.httpTimeout = httpTimeout; | 152 | htc.httpTimeout = httpTimeout; |
152 | htc.outbound_body = body; | 153 | htc.outbound_body = body; |
154 | htc.response_headers = headers; | ||
153 | 155 | ||
154 | lock (HttpListLock) | 156 | lock (HttpListLock) |
155 | { | 157 | { |
@@ -280,6 +282,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest | |||
280 | public HttpWebRequest request; | 282 | public HttpWebRequest request; |
281 | public string response_body; | 283 | public string response_body; |
282 | public List<string> response_metadata; | 284 | public List<string> response_metadata; |
285 | public Dictionary<string, string> response_headers; | ||
283 | public int status; | 286 | public int status; |
284 | public string url; | 287 | public string url; |
285 | 288 | ||
@@ -314,6 +317,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest | |||
314 | request.Method = httpMethod; | 317 | request.Method = httpMethod; |
315 | request.ContentType = httpMIMEType; | 318 | request.ContentType = httpMIMEType; |
316 | 319 | ||
320 | foreach (KeyValuePair<string, string> entry in response_headers) | ||
321 | request.Headers[entry.Key] = entry.Value; | ||
322 | |||
317 | // Encode outbound data | 323 | // Encode outbound data |
318 | if (outbound_body.Length > 0) { | 324 | if (outbound_body.Length > 0) { |
319 | byte[] data = Encoding.UTF8.GetBytes(outbound_body); | 325 | byte[] data = Encoding.UTF8.GetBytes(outbound_body); |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 4106fbb..6eb8749 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -6868,8 +6868,24 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
6868 | { | 6868 | { |
6869 | param.Add(o.ToString()); | 6869 | param.Add(o.ToString()); |
6870 | } | 6870 | } |
6871 | |||
6872 | Dictionary<string, string> httpHeaders = new Dictionary<string, string>(); | ||
6873 | |||
6874 | httpHeaders["X-SecondLife-Shard"] = "OpenSim"; | ||
6875 | httpHeaders["X-SecondLife-Object-Name"] = m_host.Name; | ||
6876 | httpHeaders["X-SecondLife-Object-Key"] = m_itemID.ToString(); | ||
6877 | httpHeaders["X-SecondLife-Region"] = World.RegionInfo.RegionName; | ||
6878 | httpHeaders["X-SecondLife-Local-Position"] = m_host.AbsolutePosition.ToString(); | ||
6879 | httpHeaders["X-SecondLife-Local-Velocity"] = m_host.Velocity.ToString(); | ||
6880 | httpHeaders["X-SecondLife-Local-Rotation"] = m_host.RotationOffset.ToString(); | ||
6881 | |||
6882 | ScenePresence scenePresence = World.GetScenePresence(m_host.ObjectOwner); | ||
6883 | httpHeaders["X-SecondLife-Owner-Name"] = scenePresence == null ? string.Empty : scenePresence.Name; | ||
6884 | |||
6885 | httpHeaders["X-SecondLife-Owner-Key"] = m_host.ObjectOwner.ToString(); | ||
6886 | |||
6871 | LLUUID reqID = httpScriptMod. | 6887 | LLUUID reqID = httpScriptMod. |
6872 | StartHttpRequest(m_localID, m_itemID, url, param, body); | 6888 | StartHttpRequest(m_localID, m_itemID, url, param, httpHeaders, body); |
6873 | 6889 | ||
6874 | if (reqID != LLUUID.Zero) | 6890 | if (reqID != LLUUID.Zero) |
6875 | return reqID.ToString(); | 6891 | return reqID.ToString(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 06a6086..507a132 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -6648,8 +6648,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
6648 | { | 6648 | { |
6649 | param.Add(o.ToString()); | 6649 | param.Add(o.ToString()); |
6650 | } | 6650 | } |
6651 | |||
6652 | Dictionary<string, string> httpHeaders = new Dictionary<string, string>(); | ||
6653 | |||
6654 | httpHeaders["X-SecondLife-Shard"] = "OpenSim"; | ||
6655 | httpHeaders["X-SecondLife-Object-Name"] = m_host.Name; | ||
6656 | httpHeaders["X-SecondLife-Object-Key"] = m_itemID.ToString(); | ||
6657 | httpHeaders["X-SecondLife-Region"] = World.RegionInfo.RegionName; | ||
6658 | httpHeaders["X-SecondLife-Local-Position"] = m_host.AbsolutePosition.ToString(); | ||
6659 | httpHeaders["X-SecondLife-Local-Velocity"] = m_host.Velocity.ToString(); | ||
6660 | httpHeaders["X-SecondLife-Local-Rotation"] = m_host.RotationOffset.ToString(); | ||
6661 | |||
6662 | ScenePresence scenePresence = World.GetScenePresence(m_host.ObjectOwner); | ||
6663 | httpHeaders["X-SecondLife-Owner-Name"] = scenePresence == null ? string.Empty : scenePresence.Name; | ||
6664 | |||
6665 | httpHeaders["X-SecondLife-Owner-Key"] = m_host.ObjectOwner.ToString(); | ||
6666 | |||
6651 | LLUUID reqID = httpScriptMod. | 6667 | LLUUID reqID = httpScriptMod. |
6652 | StartHttpRequest(m_localID, m_itemID, url, param, body); | 6668 | StartHttpRequest(m_localID, m_itemID, url, param, httpHeaders, body); |
6653 | 6669 | ||
6654 | if (reqID != LLUUID.Zero) | 6670 | if (reqID != LLUUID.Zero) |
6655 | return reqID.ToString(); | 6671 | return reqID.ToString(); |