diff options
Diffstat (limited to 'OpenSim/Framework/Servers')
4 files changed, 99 insertions, 34 deletions
diff --git a/OpenSim/Framework/Servers/BaseGetAssetStreamHandler.cs b/OpenSim/Framework/Servers/BaseGetAssetStreamHandler.cs index fc4eed7..9eacf24 100644 --- a/OpenSim/Framework/Servers/BaseGetAssetStreamHandler.cs +++ b/OpenSim/Framework/Servers/BaseGetAssetStreamHandler.cs | |||
@@ -60,7 +60,7 @@ namespace OpenSim.Framework.Servers | |||
60 | 60 | ||
61 | if (p.Length > 0) | 61 | if (p.Length > 0) |
62 | { | 62 | { |
63 | UUID assetID = UUID.Zero; | 63 | UUID assetID; |
64 | 64 | ||
65 | if (!UUID.TryParse(p[0], out assetID)) | 65 | if (!UUID.TryParse(p[0], out assetID)) |
66 | { | 66 | { |
@@ -70,16 +70,14 @@ namespace OpenSim.Framework.Servers | |||
70 | } | 70 | } |
71 | 71 | ||
72 | if (StatsManager.AssetStats != null) | 72 | if (StatsManager.AssetStats != null) |
73 | { | ||
73 | StatsManager.AssetStats.AddRequest(); | 74 | StatsManager.AssetStats.AddRequest(); |
75 | } | ||
74 | 76 | ||
75 | AssetBase asset = GetAsset(assetID); | 77 | AssetBase asset = GetAsset(assetID); |
76 | 78 | ||
77 | if (asset != null) | 79 | if (asset != null) |
78 | { | 80 | { |
79 | // if (asset.ContainsReferences) | ||
80 | // { | ||
81 | // asset.Data = ProcessOutgoingAssetData(asset.Data); | ||
82 | // } | ||
83 | if (p.Length > 1 && p[1] == "data") | 81 | if (p.Length > 1 && p[1] == "data") |
84 | { | 82 | { |
85 | httpResponse.StatusCode = (int)HttpStatusCode.OK; | 83 | httpResponse.StatusCode = (int)HttpStatusCode.OK; |
@@ -88,25 +86,15 @@ namespace OpenSim.Framework.Servers | |||
88 | } | 86 | } |
89 | else | 87 | else |
90 | { | 88 | { |
91 | XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); | 89 | result = GetXml(asset); |
92 | MemoryStream ms = new MemoryStream(); | ||
93 | XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); | ||
94 | xw.Formatting = Formatting.Indented; | ||
95 | xs.Serialize(xw, asset); | ||
96 | xw.Flush(); | ||
97 | |||
98 | ms.Seek(0, SeekOrigin.Begin); | ||
99 | //StreamReader sr = new StreamReader(ms); | ||
100 | |||
101 | result = ms.GetBuffer(); | ||
102 | |||
103 | Array.Resize<byte>(ref result, (int)ms.Length); | ||
104 | } | 90 | } |
105 | } | 91 | } |
106 | else | 92 | else |
107 | { | 93 | { |
108 | if (StatsManager.AssetStats != null) | 94 | if (StatsManager.AssetStats != null) |
95 | { | ||
109 | StatsManager.AssetStats.AddNotFoundRequest(); | 96 | StatsManager.AssetStats.AddNotFoundRequest(); |
97 | } | ||
110 | 98 | ||
111 | m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID); | 99 | m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID); |
112 | } | 100 | } |
@@ -115,6 +103,25 @@ namespace OpenSim.Framework.Servers | |||
115 | return result; | 103 | return result; |
116 | } | 104 | } |
117 | 105 | ||
106 | public static byte[] GetXml(AssetBase asset) | ||
107 | { | ||
108 | byte[] result; | ||
109 | XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); | ||
110 | MemoryStream ms = new MemoryStream(); | ||
111 | XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); | ||
112 | xw.Formatting = Formatting.Indented; | ||
113 | xs.Serialize(xw, asset); | ||
114 | xw.Flush(); | ||
115 | |||
116 | ms.Seek(0, SeekOrigin.Begin); | ||
117 | //StreamReader sr = new StreamReader(ms); | ||
118 | |||
119 | result = ms.GetBuffer(); | ||
120 | |||
121 | Array.Resize<byte>(ref result, (int)ms.Length); | ||
122 | return result; | ||
123 | } | ||
124 | |||
118 | public string ProcessAssetDataString(string data) | 125 | public string ProcessAssetDataString(string data) |
119 | { | 126 | { |
120 | Regex regex = new Regex("(creator_id|owner_id)\\s+(\\S+)"); | 127 | Regex regex = new Regex("(creator_id|owner_id)\\s+(\\S+)"); |
diff --git a/OpenSim/Framework/Servers/HttpServer/OSHttpResponse.cs b/OpenSim/Framework/Servers/HttpServer/OSHttpResponse.cs index 210d122..6ea95b1 100644 --- a/OpenSim/Framework/Servers/HttpServer/OSHttpResponse.cs +++ b/OpenSim/Framework/Servers/HttpServer/OSHttpResponse.cs | |||
@@ -45,7 +45,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
45 | /// Setting this property will also set IsContentTypeSet to | 45 | /// Setting this property will also set IsContentTypeSet to |
46 | /// true. | 46 | /// true. |
47 | /// </remarks> | 47 | /// </remarks> |
48 | public string ContentType | 48 | public virtual string ContentType |
49 | { | 49 | { |
50 | get | 50 | get |
51 | { | 51 | { |
@@ -226,7 +226,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
226 | /// <summary> | 226 | /// <summary> |
227 | /// HTTP status code. | 227 | /// HTTP status code. |
228 | /// </summary> | 228 | /// </summary> |
229 | public int StatusCode | 229 | public virtual int StatusCode |
230 | { | 230 | { |
231 | get | 231 | get |
232 | { | 232 | { |
diff --git a/OpenSim/Framework/Servers/Tests/CachedGetAssetStreamHandlerTests.cs b/OpenSim/Framework/Servers/Tests/CachedGetAssetStreamHandlerTests.cs index dbb877d..b3cccfd 100644 --- a/OpenSim/Framework/Servers/Tests/CachedGetAssetStreamHandlerTests.cs +++ b/OpenSim/Framework/Servers/Tests/CachedGetAssetStreamHandlerTests.cs | |||
@@ -4,7 +4,10 @@ using System.Text; | |||
4 | using NUnit.Framework; | 4 | using NUnit.Framework; |
5 | using OpenSim.Data; | 5 | using OpenSim.Data; |
6 | using OpenSim.Framework.Servers.HttpServer; | 6 | using OpenSim.Framework.Servers.HttpServer; |
7 | using OpenSim.Services.Interfaces; | ||
7 | using OpenSim.Tests.Common; | 8 | using OpenSim.Tests.Common; |
9 | using OpenSim.Tests.Common.Mock; | ||
10 | using OpenSim.Tests.Common.Setup; | ||
8 | 11 | ||
9 | namespace OpenSim.Framework.Servers.Tests | 12 | namespace OpenSim.Framework.Servers.Tests |
10 | { | 13 | { |
@@ -59,14 +62,34 @@ namespace OpenSim.Framework.Servers.Tests | |||
59 | BaseRequestHandlerTestHelper.BaseTestHandleMalformedGuid(handler, ASSETS_PATH); | 62 | BaseRequestHandlerTestHelper.BaseTestHandleMalformedGuid(handler, ASSETS_PATH); |
60 | } | 63 | } |
61 | 64 | ||
62 | //[Test] | 65 | [Test] |
63 | //public void TestHandleFetchMissingAsset() | 66 | public void TestHandleFetchMissingAsset() |
64 | //{ | 67 | { |
68 | IAssetCache assetCache = new TestAssetCache(); | ||
69 | CachedGetAssetStreamHandler handler = new CachedGetAssetStreamHandler(assetCache); | ||
70 | |||
71 | GetAssetStreamHandlerTestHelpers.BaseFetchMissingAsset(handler); | ||
72 | } | ||
73 | |||
74 | [Test] | ||
75 | public void TestHandleFetchExistingAssetData() | ||
76 | { | ||
77 | CachedGetAssetStreamHandler handler; | ||
78 | OSHttpResponse response; | ||
79 | AssetBase asset = CreateTestEnvironment(out handler, out response); | ||
80 | |||
81 | GetAssetStreamHandlerTestHelpers.BaseFetchExistingAssetDataTest(asset, handler, response); | ||
82 | } | ||
65 | 83 | ||
66 | // byte[] emptyResult = new byte[] { }; | 84 | private static AssetBase CreateTestEnvironment(out CachedGetAssetStreamHandler handler, out OSHttpResponse response) |
67 | // CachedGetAssetStreamHandler handler = new CachedGetAssetStreamHandler(null); | 85 | { |
86 | AssetBase asset = GetAssetStreamHandlerTestHelpers.CreateCommonTestResources(out response); | ||
87 | |||
88 | IAssetCache assetDataPlugin = new TestAssetCache(); | ||
89 | handler = new CachedGetAssetStreamHandler(assetDataPlugin); | ||
68 | 90 | ||
69 | // Assert.AreEqual(new string[] { }, handler.Handle("/assets/badGuid", null, null, null), "Failed on bad guid."); | 91 | assetDataPlugin.AddAsset(asset); |
70 | //} | 92 | return asset; |
93 | } | ||
71 | } | 94 | } |
72 | } | 95 | } |
diff --git a/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs b/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs index 091a944..51dd79d 100644 --- a/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs +++ b/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs | |||
@@ -1,10 +1,14 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Net; | ||
3 | using System.Text; | 4 | using System.Text; |
5 | using HttpServer; | ||
4 | using NUnit.Framework; | 6 | using NUnit.Framework; |
5 | using OpenSim.Data; | 7 | using OpenSim.Data; |
6 | using OpenSim.Framework.Servers.HttpServer; | 8 | using OpenSim.Framework.Servers.HttpServer; |
7 | using OpenSim.Tests.Common; | 9 | using OpenSim.Tests.Common; |
10 | using OpenSim.Tests.Common.Mock; | ||
11 | using OpenSim.Tests.Common.Setup; | ||
8 | 12 | ||
9 | namespace OpenSim.Framework.Servers.Tests | 13 | namespace OpenSim.Framework.Servers.Tests |
10 | { | 14 | { |
@@ -59,13 +63,44 @@ namespace OpenSim.Framework.Servers.Tests | |||
59 | BaseRequestHandlerTestHelper.BaseTestHandleMalformedGuid(handler, ASSETS_PATH); | 63 | BaseRequestHandlerTestHelper.BaseTestHandleMalformedGuid(handler, ASSETS_PATH); |
60 | } | 64 | } |
61 | 65 | ||
62 | //[Test] | 66 | [Test] |
63 | //public void TestHandleFetchMissingAsset() | 67 | public void TestHandleFetchMissingAsset() |
64 | //{ | 68 | { |
65 | // byte[] emptyResult = new byte[] { }; | 69 | IAssetDataPlugin assetDataPlugin = new TestAssetDataPlugin(); |
66 | // GetAssetStreamHandler handler = new GetAssetStreamHandler(null); | 70 | GetAssetStreamHandler handler = new GetAssetStreamHandler(assetDataPlugin); |
71 | |||
72 | GetAssetStreamHandlerTestHelpers.BaseFetchMissingAsset(handler); | ||
73 | } | ||
74 | |||
75 | [Test] | ||
76 | public void TestHandleFetchExistingAssetData() | ||
77 | { | ||
78 | GetAssetStreamHandler handler; | ||
79 | OSHttpResponse response; | ||
80 | AssetBase asset = CreateTestEnvironment(out handler, out response); | ||
81 | |||
82 | GetAssetStreamHandlerTestHelpers.BaseFetchExistingAssetDataTest(asset, handler, response); | ||
83 | } | ||
67 | 84 | ||
68 | // Assert.AreEqual(new string[] { }, handler.Handle("/assets/badGuid", null, null, null), "Failed on bad guid."); | 85 | [Test] |
69 | //} | 86 | public void TestHandleFetchExistingAssetXml() |
87 | { | ||
88 | GetAssetStreamHandler handler; | ||
89 | OSHttpResponse response; | ||
90 | AssetBase asset = CreateTestEnvironment(out handler, out response); | ||
91 | |||
92 | GetAssetStreamHandlerTestHelpers.BaseFetchExistingAssetXmlTest(asset, handler, response); | ||
93 | } | ||
94 | |||
95 | private static AssetBase CreateTestEnvironment(out GetAssetStreamHandler handler, out OSHttpResponse response) | ||
96 | { | ||
97 | AssetBase asset = GetAssetStreamHandlerTestHelpers.CreateCommonTestResources(out response); | ||
98 | |||
99 | IAssetDataPlugin assetDataPlugin = new TestAssetDataPlugin(); | ||
100 | handler = new GetAssetStreamHandler(assetDataPlugin); | ||
101 | |||
102 | assetDataPlugin.CreateAsset(asset); | ||
103 | return asset; | ||
104 | } | ||
70 | } | 105 | } |
71 | } | 106 | } |