aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs')
-rw-r--r--OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs80
1 files changed, 70 insertions, 10 deletions
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
index bf622c6..70b7d6c 100644
--- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
+++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
@@ -1,8 +1,12 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Drawing;
4using System.Drawing.Imaging;
5using System.IO;
3using System.Net; 6using System.Net;
4using System.Text; 7using System.Text;
5using OpenMetaverse; 8using OpenMetaverse;
9using OpenMetaverse.Imaging;
6using OpenMetaverse.Packets; 10using OpenMetaverse.Packets;
7using OpenSim.Framework; 11using OpenSim.Framework;
8using OpenSim.Framework.Servers; 12using OpenSim.Framework.Servers;
@@ -12,21 +16,79 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
12{ 16{
13 class VWHClientView : IClientAPI 17 class VWHClientView : IClientAPI
14 { 18 {
15// private Scene m_scene; 19 private Scene m_scene;
16 20
17 public void ProcessInMsg(OSHttpRequest req, OSHttpResponse resp) 21
22 public bool ProcessInMsg(OSHttpRequest req, OSHttpResponse resp)
18 { 23 {
19// string method = req.Url.AbsolutePath.Split('/')[2]; 24 // 0 1 2 3
25 // http://simulator.com:9000/vwohttp/sessionid/methodname/param
26 string[] urlparts = req.Url.AbsolutePath.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
27
28 UUID sessionID;
29 // Check for session
30 if (!UUID.TryParse(urlparts[1], out sessionID))
31 return false;
32 // Check we match session
33 if(sessionID != SessionId)
34 return false;
35
36 string method = urlparts[2];
37
38 string param = String.Empty;
39 if (urlparts.Length > 3)
40 param = urlparts[3];
41
42 bool found;
43
44 switch (method.ToLower())
45 {
46 case "textures":
47 found = ProcessTextureRequest(param, resp);
48 break;
49 default:
50 found = false;
51 break;
52 }
53
54 return found;
20 } 55 }
21 56
22// private void ProcessAssetRequest(OSHttpRequest req, OSHttpResponse resp) 57 private bool ProcessTextureRequest(string param, OSHttpResponse resp)
23// { 58 {
24// 59 UUID assetID;
25// } 60 if(!UUID.TryParse(param, out assetID))
61 return false;
62
63 AssetBase asset = m_scene.CommsManager.AssetCache.GetAsset(assetID, true);
64
65 if(asset == null)
66 return false;
67
68 ManagedImage tmp;
69 Image imgData;
70
71 OpenJPEG.DecodeToImage(asset.Data, out tmp, out imgData);
72
73 MemoryStream ms = new MemoryStream();
74
75 imgData.Save(ms, ImageFormat.Jpeg);
76
77 byte[] jpegdata = ms.GetBuffer();
78
79 ms.Close();
80
81 resp.ContentType = "image/jpeg";
82 resp.ContentLength = jpegdata.Length;
83 resp.StatusCode = 200;
84 resp.Body.Write(jpegdata, 0, jpegdata.Length);
85
86 return true;
87 }
26 88
27 public VWHClientView(UUID sessionID, UUID agentID, string agentName, Scene scene) 89 public VWHClientView(UUID sessionID, UUID agentID, string agentName, Scene scene)
28 { 90 {
29// m_scene = scene; 91 m_scene = scene;
30 } 92 }
31 93
32 #region Implementation of IClientAPI 94 #region Implementation of IClientAPI
@@ -1031,8 +1093,6 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
1031 throw new System.NotImplementedException(); 1093 throw new System.NotImplementedException();
1032 } 1094 }
1033 1095
1034 public event PlacesQuery OnPlacesQuery;
1035
1036 #endregion 1096 #endregion
1037 } 1097 }
1038} 1098}