View of /trunk/AssetClient/AssetClient.cs
Parent Directory
|
Revision Log
Revision 8 -
(download)
(annotate)
Mon Oct 27 22:10:37 2008 UTC (4 years, 7 months ago) by jhurliman
File size: 4087 byte(s)
Mon Oct 27 22:10:37 2008 UTC (4 years, 7 months ago) by jhurliman
File size: 4087 byte(s)
Added an example command-line asset client
using System;
using System.Net;
using System.IO;
using OpenMetaverse;
namespace AssetClient
{
public static class AssetClient
{
const string ASSET_SERVER_URL = "http://localhost:9001";
public static bool TryGetAsset(UUID assetID, out Asset asset)
{
return TryGetAsset(assetID, ASSET_SERVER_URL, out asset);
}
public static bool TryGetAsset(UUID assetID, string assetServerURL, out Asset asset)
{
asset = null;
assetServerURL = assetServerURL.TrimEnd('/');
string requestURL = String.Format("{0}/{1}/data", assetServerURL, assetID);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
int contentLength = (int)response.ContentLength;
byte[] assetData = new byte[contentLength];
BinaryReader reader = new BinaryReader(response.GetResponseStream());
int pos = 0;
// Loop until we have read all of the bytes from the response stream
while (pos < contentLength)
pos += reader.Read(assetData, pos, contentLength - pos);
reader.Close();
switch (response.ContentType)
{
case "image/jp2":
asset = new AssetTexture(assetID, assetData);
if (((AssetTexture)asset).DecodeLayerBoundaries())
return true;
else
Logger.Log("Failed to decode texture layer boundaries", Helpers.LogLevel.Error);
break;
case "audio/ogg":
asset = new AssetSound(assetID, assetData);
return true;
default:
Logger.Log("Unhandled asset content type: " + response.ContentType, Helpers.LogLevel.Error);
break;
}
}
}
catch (Exception ex)
{
Logger.Log(ex.Message, Helpers.LogLevel.Error, ex);
}
return false;
}
public static bool TryGetMetadata(UUID assetID, out byte[] metadata)
{
return TryGetMetadata(assetID, ASSET_SERVER_URL, out metadata);
}
public static bool TryGetMetadata(UUID assetID, string assetServerURL, out byte[] metadata)
{
metadata = null;
assetServerURL = assetServerURL.TrimEnd('/');
string requestURL = String.Format("{0}/{1}/metadata", assetServerURL, assetID);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
int contentLength = (int)response.ContentLength;
metadata = new byte[contentLength];
BinaryReader reader = new BinaryReader(response.GetResponseStream());
int pos = 0;
// Loop until we have read all of the bytes from the response stream
while (pos < contentLength)
pos += reader.Read(metadata, pos, contentLength - pos);
reader.Close();
return true;
}
}
catch (Exception ex)
{
Logger.Log(ex.Message, Helpers.LogLevel.Error, ex);
}
return false;
}
}
}
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

