From 54b5346f16ace21bad12c58500bbaa6e1739608e Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Fri, 8 May 2009 15:44:35 +0000 Subject: * Extracted common superclass for GetAssetStreamHandler and CachedGetAssetStreamHandler * Added some more tests --- .../Servers/CachedGetAssetStreamHandler.cs | 173 +-------------------- 1 file changed, 3 insertions(+), 170 deletions(-) (limited to 'OpenSim/Framework/Servers/CachedGetAssetStreamHandler.cs') diff --git a/OpenSim/Framework/Servers/CachedGetAssetStreamHandler.cs b/OpenSim/Framework/Servers/CachedGetAssetStreamHandler.cs index fb217d1..ef637c5 100644 --- a/OpenSim/Framework/Servers/CachedGetAssetStreamHandler.cs +++ b/OpenSim/Framework/Servers/CachedGetAssetStreamHandler.cs @@ -25,194 +25,27 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -using System; -using System.IO; using System.Reflection; -using System.Text; -using System.Text.RegularExpressions; -using System.Xml; -using System.Xml.Serialization; using log4net; using OpenMetaverse; -using OpenSim.Data; -using OpenSim.Framework; -using OpenSim.Framework.Servers; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Framework.Statistics; -using System.Net; namespace OpenSim.Framework.Servers { - public class CachedGetAssetStreamHandler : BaseStreamHandler + public class CachedGetAssetStreamHandler : BaseGetAssetStreamHandler { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - // private OpenAsset_Main m_assetManager; private readonly IAssetCache m_assetProvider; - /// - /// Constructor. - /// - /// - /// public CachedGetAssetStreamHandler(IAssetCache assetProvider) : base("GET", "/assets") { - // m_log.Info("[REST]: In Get Request"); - // m_assetManager = assetManager; m_assetProvider = assetProvider; } - public override byte[] Handle(string path, Stream request, - OSHttpRequest httpRequest, OSHttpResponse httpResponse) + protected override AssetBase GetAsset(UUID assetID) { - string param = GetParam(path); - byte[] result = new byte[] { }; - - string[] p = param.Split(new char[] { '/', '?', '&' }, StringSplitOptions.RemoveEmptyEntries); - - if (p.Length > 0) - { - UUID assetID = UUID.Zero; - - if (!UUID.TryParse(p[0], out assetID)) - { - m_log.InfoFormat( - "[REST]: GET:/asset ignoring request with malformed UUID {0}", p[0]); - return result; - } - - if (StatsManager.AssetStats != null) - StatsManager.AssetStats.AddRequest(); - - AssetBase asset = m_assetProvider.GetAsset(assetID,true); // TODO IsTexture should be deduced from loaded asset. It is not used in this case. - - if (asset != null) - { -// if (asset.ContainsReferences) -// { -// asset.Data = ProcessOutgoingAssetData(asset.Data); -// } - if (p.Length > 1 && p[1] == "data") - { - httpResponse.StatusCode = (int)HttpStatusCode.OK; - httpResponse.ContentType = SLAssetTypeToContentType(asset.Type); - result = asset.Data; - } - else - { - XmlSerializer xs = new XmlSerializer(typeof(AssetBase)); - MemoryStream ms = new MemoryStream(); - XmlTextWriter xw = new XmlTextWriter(ms, Encoding.UTF8); - xw.Formatting = Formatting.Indented; - xs.Serialize(xw, asset); - xw.Flush(); - - ms.Seek(0, SeekOrigin.Begin); - //StreamReader sr = new StreamReader(ms); - - result = ms.GetBuffer(); - - Array.Resize(ref result, (int)ms.Length); - } - } - else - { - if (StatsManager.AssetStats != null) - StatsManager.AssetStats.AddNotFoundRequest(); - - m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID); - } - } - - return result; - } - - // private byte[] ProcessOutgoingAssetData(byte[] assetData) - // { - // string data = Encoding.ASCII.GetString(assetData); - - // data = ProcessAssetDataString(data); - - // return Encoding.ASCII.GetBytes(data); - // } - - public string ProcessAssetDataString(string data) - { - Regex regex = new Regex("(creator_id|owner_id)\\s+(\\S+)"); - - // IUserService userService = null; - - data = regex.Replace(data, delegate(Match m) - { - string result = String.Empty; - -// string key = m.Groups[1].Captures[0].Value; -// -// string value = m.Groups[2].Captures[0].Value; -// -// Guid userUri; -// -// switch (key) -// { -// case "creator_id": -// userUri = new Guid(value); -// // result = "creator_url " + userService(userService, userUri); -// break; -// -// case "owner_id": -// userUri = new Guid(value); -// // result = "owner_url " + ResolveUserUri(userService, userUri); -// break; -// } - - return result; - }); - - return data; - } - - private string SLAssetTypeToContentType(int assetType) - { - switch (assetType) - { - case 0: - return "image/jp2"; - case 1: - return "application/ogg"; - case 2: - return "application/x-metaverse-callingcard"; - case 3: - return "application/x-metaverse-landmark"; - case 5: - return "application/x-metaverse-clothing"; - case 6: - return "application/x-metaverse-primitive"; - case 7: - return "application/x-metaverse-notecard"; - case 8: - return "application/x-metaverse-folder"; - case 10: - return "application/x-metaverse-lsl"; - case 11: - return "application/x-metaverse-lso"; - case 12: - return "image/tga"; - case 13: - return "application/x-metaverse-bodypart"; - case 17: - return "audio/x-wav"; - case 19: - return "image/jpeg"; - case 20: - return "application/x-metaverse-animation"; - case 21: - return "application/x-metaverse-gesture"; - case 22: - return "application/x-metaverse-simstate"; - default: - return "application/octet-stream"; - } + return m_assetProvider.GetAsset(assetID, true); // TODO IsTexture should be deduced from loaded asset. It is not used in this case. } } } -- cgit v1.1