aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/OpenSim.Region/Caps.cs
blob: c672d2927ff38e2631554d2ef2ce491791cef9b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.Text;
using OpenSim.Servers;
using libsecondlife;

namespace OpenSim.Region
{
    public class Caps
    {
        private string httpListenerAddress;
        private uint httpListenPort;
        private string MainPath = "00334-0000/";
        private string MapLayerPath = "00334-0001/";
        private BaseHttpServer httpListener;

        public Caps(BaseHttpServer httpServer, string httpListen, uint httpPort)
        {
            httpListener = httpServer;
            httpListenerAddress = httpListen;
            httpListenPort = httpPort;
        }

        /// <summary>
        /// 
        /// </summary>
        public void RegisterHandlers()
        {
            Console.WriteLine("registering caps handlers");
            httpListener.AddRestHandler("POST", "/CAPS/" + MainPath, CapsRequest);
            httpListener.AddRestHandler("POST", "/CAPS/" + MapLayerPath, MapLayer);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <param name="path"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public string CapsRequest(string request, string path, string param)
        {
            Console.WriteLine("Caps request " + request);
            string result = "<llsd><map>";
            result += this.GetCapabilities();
            result += "</map></llsd>";
            return result;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        protected string GetCapabilities()
        {
            string capURLS = "<key>MapLayer</key><string>http://" + httpListenerAddress + ":" + httpListenPort.ToString() + "/CAPS/" + MapLayerPath + "</string>";
            return capURLS;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="request"></param>
        /// <param name="path"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public string MapLayer(string request, string path, string param)
        {
            Console.WriteLine("Caps MapLayer request " + request);
            string res = "<llsd><map><key>AgentData</key><map><key>Flags</key><integer>0</integer></map><key>LayerData</key><array>";
            res += this.BuildLLSDMapLayerResponse();
            res += "</array></map></llsd>";
            return res;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        protected string BuildLLSDMapLayerResponse()
        {
            int left;
            int right;
            int top;
            int bottom;
            LLUUID image = null;

            left = 500;
            bottom = 500;
            top = 1500;
            right = 1500;
            image = new LLUUID("00000000-0000-0000-9999-000000000006");

            string res= "<map><key>Left</key><integer>"+left+"</integer><key>Bottom</key><integer>"+bottom +"</integer><key>Top</key><integer>"+top+"</integer><key>Right</key><integer>"+right+"</integer><key>ImageID</key><uuid>"+image.ToStringHyphenated()+"</uuid></map>";
            return res;
        }
    }
}