diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Capabilities/Caps.cs | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs index 110ba6f..ab2b3a6 100644 --- a/OpenSim/Region/Capabilities/Caps.cs +++ b/OpenSim/Region/Capabilities/Caps.cs | |||
@@ -38,7 +38,7 @@ using OpenSim.Region.Caches; | |||
38 | 38 | ||
39 | namespace OpenSim.Region.Capabilities | 39 | namespace OpenSim.Region.Capabilities |
40 | { | 40 | { |
41 | public delegate void UpLoadedTexture(LLUUID assetID, LLUUID inventoryItem, byte[] data); | 41 | public delegate void UpLoadedTexture(string assetName, LLUUID assetID, LLUUID inventoryItem, byte[] data); |
42 | 42 | ||
43 | public class Caps | 43 | public class Caps |
44 | { | 44 | { |
@@ -223,12 +223,14 @@ namespace OpenSim.Region.Capabilities | |||
223 | /// <returns></returns> | 223 | /// <returns></returns> |
224 | public LLSDAssetUploadResponse NewAgentInventoryRequest(LLSDAssetUploadRequest llsdRequest) | 224 | public LLSDAssetUploadResponse NewAgentInventoryRequest(LLSDAssetUploadRequest llsdRequest) |
225 | { | 225 | { |
226 | // Console.WriteLine("asset upload request via CAPS"); | ||
227 | string assetName = llsdRequest.name; | ||
226 | string capsBase = "/CAPS/" + m_capsObjectPath; | 228 | string capsBase = "/CAPS/" + m_capsObjectPath; |
227 | LLUUID newAsset = LLUUID.Random(); | 229 | LLUUID newAsset = LLUUID.Random(); |
228 | LLUUID newInvItem = LLUUID.Random(); | 230 | LLUUID newInvItem = LLUUID.Random(); |
229 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); | 231 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); |
230 | 232 | ||
231 | AssetUploader uploader = new AssetUploader(newAsset, newInvItem, capsBase + uploaderPath, this.httpListener); | 233 | AssetUploader uploader = new AssetUploader(assetName, newAsset, newInvItem, capsBase + uploaderPath, this.httpListener); |
232 | httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps)); | 234 | httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps)); |
233 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + capsBase + uploaderPath; | 235 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + capsBase + uploaderPath; |
234 | 236 | ||
@@ -245,14 +247,14 @@ namespace OpenSim.Region.Capabilities | |||
245 | /// <param name="assetID"></param> | 247 | /// <param name="assetID"></param> |
246 | /// <param name="inventoryItem"></param> | 248 | /// <param name="inventoryItem"></param> |
247 | /// <param name="data"></param> | 249 | /// <param name="data"></param> |
248 | public void UploadCompleteHandler(LLUUID assetID, LLUUID inventoryItem, byte[] data) | 250 | public void UploadCompleteHandler(string assetName, LLUUID assetID, LLUUID inventoryItem, byte[] data) |
249 | { | 251 | { |
250 | AssetBase asset; | 252 | AssetBase asset; |
251 | asset = new AssetBase(); | 253 | asset = new AssetBase(); |
252 | asset.FullID = assetID; | 254 | asset.FullID = assetID; |
253 | asset.Type = 0; | 255 | asset.Type = 0; |
254 | asset.InvType = 0; | 256 | asset.InvType = 0; |
255 | asset.Name = "UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000"); | 257 | asset.Name = assetName; //"UploadedTexture" + Util.RandomClass.Next(1, 1000).ToString("000"); |
256 | asset.Data = data; | 258 | asset.Data = data; |
257 | this.assetCache.AddAsset(asset); | 259 | this.assetCache.AddAsset(asset); |
258 | } | 260 | } |
@@ -265,6 +267,8 @@ namespace OpenSim.Region.Capabilities | |||
265 | private LLUUID newAssetID; | 267 | private LLUUID newAssetID; |
266 | private LLUUID inventoryItemID; | 268 | private LLUUID inventoryItemID; |
267 | private BaseHttpServer httpListener; | 269 | private BaseHttpServer httpListener; |
270 | private bool SaveImages = true; | ||
271 | private string m_assetName = ""; | ||
268 | 272 | ||
269 | /// <summary> | 273 | /// <summary> |
270 | /// | 274 | /// |
@@ -273,8 +277,9 @@ namespace OpenSim.Region.Capabilities | |||
273 | /// <param name="inventoryItem"></param> | 277 | /// <param name="inventoryItem"></param> |
274 | /// <param name="path"></param> | 278 | /// <param name="path"></param> |
275 | /// <param name="httpServer"></param> | 279 | /// <param name="httpServer"></param> |
276 | public AssetUploader(LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer) | 280 | public AssetUploader(string assetName, LLUUID assetID, LLUUID inventoryItem, string path, BaseHttpServer httpServer) |
277 | { | 281 | { |
282 | m_assetName = assetName; | ||
278 | newAssetID = assetID; | 283 | newAssetID = assetID; |
279 | inventoryItemID = inventoryItem; | 284 | inventoryItemID = inventoryItem; |
280 | uploaderPath = path; | 285 | uploaderPath = path; |
@@ -299,13 +304,27 @@ namespace OpenSim.Region.Capabilities | |||
299 | res = LLSDHelpers.SerialiseLLSDReply(uploadComplete); | 304 | res = LLSDHelpers.SerialiseLLSDReply(uploadComplete); |
300 | 305 | ||
301 | httpListener.RemoveStreamHandler("POST", uploaderPath); | 306 | httpListener.RemoveStreamHandler("POST", uploaderPath); |
302 | 307 | ||
308 | if(this.SaveImages) | ||
309 | this.SaveImageToFile(m_assetName + ".jp2", data); | ||
310 | |||
303 | if (OnUpLoad != null) | 311 | if (OnUpLoad != null) |
304 | { | 312 | { |
305 | OnUpLoad(newAssetID, inv, data); | 313 | OnUpLoad(m_assetName, newAssetID, inv, data); |
306 | } | 314 | } |
315 | |||
307 | return res; | 316 | return res; |
308 | } | 317 | } |
318 | |||
319 | private void SaveImageToFile(string filename, byte[] data) | ||
320 | { | ||
321 | |||
322 | FileStream fs = File.Create(filename); | ||
323 | BinaryWriter bw = new BinaryWriter(fs); | ||
324 | bw.Write(data); | ||
325 | bw.Close(); | ||
326 | fs.Close(); | ||
327 | } | ||
309 | } | 328 | } |
310 | } | 329 | } |
311 | } | 330 | } |