diff options
-rw-r--r-- | OpenSim/Grid/AssetServer/RestService.cs | 89 |
1 files changed, 42 insertions, 47 deletions
diff --git a/OpenSim/Grid/AssetServer/RestService.cs b/OpenSim/Grid/AssetServer/RestService.cs index a9856da..ae56a68 100644 --- a/OpenSim/Grid/AssetServer/RestService.cs +++ b/OpenSim/Grid/AssetServer/RestService.cs | |||
@@ -62,60 +62,55 @@ namespace OpenSim.Grid.AssetServer | |||
62 | { | 62 | { |
63 | string param = GetParam(path); | 63 | string param = GetParam(path); |
64 | byte[] result = new byte[] {}; | 64 | byte[] result = new byte[] {}; |
65 | try | ||
66 | { | ||
67 | string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries); | ||
68 | 65 | ||
69 | if (p.Length > 0) | 66 | string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries); |
67 | |||
68 | if (p.Length > 0) | ||
69 | { | ||
70 | LLUUID assetID = null; | ||
71 | |||
72 | if (!LLUUID.TryParse(p[0], out assetID)) | ||
73 | { | ||
74 | m_log.InfoFormat( | ||
75 | "[REST]: GET:/asset ignoring request with malformed UUID {0}", p[0]); | ||
76 | return result; | ||
77 | } | ||
78 | |||
79 | if (StatsManager.AssetStats != null) | ||
80 | StatsManager.AssetStats.AddRequest(); | ||
81 | |||
82 | AssetBase asset = m_assetProvider.FetchAsset(assetID); | ||
83 | if (asset != null) | ||
70 | { | 84 | { |
71 | LLUUID assetID = null; | 85 | XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); |
86 | MemoryStream ms = new MemoryStream(); | ||
87 | XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); | ||
88 | xw.Formatting = Formatting.Indented; | ||
89 | xs.Serialize(xw, asset); | ||
90 | xw.Flush(); | ||
91 | |||
92 | ms.Seek(0, SeekOrigin.Begin); | ||
93 | //StreamReader sr = new StreamReader(ms); | ||
94 | |||
95 | result = ms.GetBuffer(); | ||
72 | 96 | ||
73 | if (!LLUUID.TryParse(p[0], out assetID)) | 97 | m_log.InfoFormat( |
74 | { | 98 | "[REST]: GET:/asset found {0} with name {1}, size {2} bytes", |
75 | m_log.InfoFormat( | 99 | assetID, asset.Name, result.Length); |
76 | "[REST]: GET:/asset ignoring request with malformed UUID {0}", p[0]); | 100 | |
77 | return result; | 101 | Array.Resize<byte>(ref result, (int) ms.Length); |
78 | } | 102 | } |
79 | 103 | else | |
104 | { | ||
80 | if (StatsManager.AssetStats != null) | 105 | if (StatsManager.AssetStats != null) |
81 | StatsManager.AssetStats.AddRequest(); | 106 | StatsManager.AssetStats.AddNotFoundRequest(); |
82 | 107 | ||
83 | AssetBase asset = m_assetProvider.FetchAsset(assetID); | 108 | m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID); |
84 | if (asset != null) | ||
85 | { | ||
86 | XmlSerializer xs = new XmlSerializer(typeof (AssetBase)); | ||
87 | MemoryStream ms = new MemoryStream(); | ||
88 | XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); | ||
89 | xw.Formatting = Formatting.Indented; | ||
90 | xs.Serialize(xw, asset); | ||
91 | xw.Flush(); | ||
92 | |||
93 | ms.Seek(0, SeekOrigin.Begin); | ||
94 | //StreamReader sr = new StreamReader(ms); | ||
95 | |||
96 | result = ms.GetBuffer(); | ||
97 | |||
98 | m_log.InfoFormat( | ||
99 | "[REST]: GET:/asset found {0} with name {1}, size {2} bytes", | ||
100 | assetID, asset.Name, result.Length); | ||
101 | |||
102 | Array.Resize<byte>(ref result, (int) ms.Length); | ||
103 | } | ||
104 | else | ||
105 | { | ||
106 | if (StatsManager.AssetStats != null) | ||
107 | StatsManager.AssetStats.AddNotFoundRequest(); | ||
108 | |||
109 | m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID); | ||
110 | } | ||
111 | } | 109 | } |
112 | } | 110 | } |
113 | catch (Exception e) | 111 | |
114 | { | 112 | return result; |
115 | m_log.Error(e.ToString()); | 113 | } |
116 | } | ||
117 | return result; | ||
118 | } | ||
119 | } | 114 | } |
120 | 115 | ||
121 | public class PostAssetStreamHandler : BaseStreamHandler | 116 | public class PostAssetStreamHandler : BaseStreamHandler |