View of /trunk/AssetClient/AssetClient.cs
Parent Directory
|
Revision Log
Revision 17 -
(download)
(annotate)
Mon Nov 3 19:21:57 2008 UTC (4 years, 6 months ago) by jhurliman
File size: 5521 byte(s)
Mon Nov 3 19:21:57 2008 UTC (4 years, 6 months ago) by jhurliman
File size: 5521 byte(s)
* Adding sanity check when loading config file * Added an asset upload interface where the UUID is specified * Added asset upload support for ReferenceInterface and OpenSimInterface (untested) * Removing dead code * Cleanup
/*
* Copyright (c) 2008 Intel Corporation
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* -- Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* -- Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* -- Neither the name of the Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR ITS
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
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, string assetURL, out Asset asset)
{
asset = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(assetURL);
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;
}
public static UUID CreateAsset(Asset asset)
{
// FIXME: Implement this
return UUID.Zero;
}
}
}
| ViewVC Help | |
| Powered by ViewVC 1.0.0 |

