diff options
author | lbsa71 | 2007-03-29 19:22:01 +0000 |
---|---|---|
committer | lbsa71 | 2007-03-29 19:22:01 +0000 |
commit | 30c5be370489f9620e0f199526c80f5c34f16faa (patch) | |
tree | c56a7ec877a9f5f935b25c3c4703b6d8bfcde662 | |
parent | * RestMethod now uses same pattern as XmlRpcMethod (diff) | |
download | opensim-SC-30c5be370489f9620e0f199526c80f5c34f16faa.zip opensim-SC-30c5be370489f9620e0f199526c80f5c34f16faa.tar.gz opensim-SC-30c5be370489f9620e0f199526c80f5c34f16faa.tar.bz2 opensim-SC-30c5be370489f9620e0f199526c80f5c34f16faa.tar.xz |
* Now the rest handlers try to match path as close as possibly, so it's possible to add handlers for just a beginning of a path.
-rw-r--r-- | OpenSim.RegionServer/CAPS/AdminWebFront.cs | 14 | ||||
-rw-r--r-- | Servers/BaseHttpServer.cs | 20 | ||||
-rw-r--r-- | Servers/IRestHandler.cs | 2 |
3 files changed, 24 insertions, 12 deletions
diff --git a/OpenSim.RegionServer/CAPS/AdminWebFront.cs b/OpenSim.RegionServer/CAPS/AdminWebFront.cs index 3596ffa..6473878 100644 --- a/OpenSim.RegionServer/CAPS/AdminWebFront.cs +++ b/OpenSim.RegionServer/CAPS/AdminWebFront.cs | |||
@@ -35,8 +35,8 @@ namespace OpenSim.CAPS | |||
35 | server.AddRestHandler("POST", "/Admin/NewAccount", PostNewAccount ); | 35 | server.AddRestHandler("POST", "/Admin/NewAccount", PostNewAccount ); |
36 | server.AddRestHandler("POST", "/Admin/Login", PostLogin ); | 36 | server.AddRestHandler("POST", "/Admin/Login", PostLogin ); |
37 | } | 37 | } |
38 | 38 | ||
39 | private string GetWelcomePage( string request ) | 39 | private string GetWelcomePage(string request, string path) |
40 | { | 40 | { |
41 | string responseString; | 41 | string responseString; |
42 | responseString = "Welcome to the OpenSim Admin Page"; | 42 | responseString = "Welcome to the OpenSim Admin Page"; |
@@ -44,7 +44,7 @@ namespace OpenSim.CAPS | |||
44 | return responseString; | 44 | return responseString; |
45 | } | 45 | } |
46 | 46 | ||
47 | private string PostLogin(string requestBody) | 47 | private string PostLogin(string requestBody, string path) |
48 | { | 48 | { |
49 | string responseString; | 49 | string responseString; |
50 | // Console.WriteLine(requestBody); | 50 | // Console.WriteLine(requestBody); |
@@ -61,7 +61,7 @@ namespace OpenSim.CAPS | |||
61 | return responseString; | 61 | return responseString; |
62 | } | 62 | } |
63 | 63 | ||
64 | private string PostNewAccount(string requestBody) | 64 | private string PostNewAccount(string requestBody, string path) |
65 | { | 65 | { |
66 | string responseString; | 66 | string responseString; |
67 | string firstName = ""; | 67 | string firstName = ""; |
@@ -110,7 +110,7 @@ namespace OpenSim.CAPS | |||
110 | return responseString; | 110 | return responseString; |
111 | } | 111 | } |
112 | 112 | ||
113 | private string GetConnectedClientsPage( string request ) | 113 | private string GetConnectedClientsPage(string request, string path) |
114 | { | 114 | { |
115 | string responseString; | 115 | string responseString; |
116 | responseString = " <p> Listing connected Clients </p>"; | 116 | responseString = " <p> Listing connected Clients </p>"; |
@@ -128,7 +128,7 @@ namespace OpenSim.CAPS | |||
128 | return responseString; | 128 | return responseString; |
129 | } | 129 | } |
130 | 130 | ||
131 | private string GetAccountsPage( string request ) | 131 | private string GetAccountsPage(string request, string path) |
132 | { | 132 | { |
133 | string responseString; | 133 | string responseString; |
134 | responseString = "<p> Account management </p>"; | 134 | responseString = "<p> Account management </p>"; |
@@ -138,7 +138,7 @@ namespace OpenSim.CAPS | |||
138 | return responseString; | 138 | return responseString; |
139 | } | 139 | } |
140 | 140 | ||
141 | private string GetAdminPage( string request ) | 141 | private string GetAdminPage(string request, string path) |
142 | { | 142 | { |
143 | return AdminPage; | 143 | return AdminPage; |
144 | } | 144 | } |
diff --git a/Servers/BaseHttpServer.cs b/Servers/BaseHttpServer.cs index 7c2a195..174402a 100644 --- a/Servers/BaseHttpServer.cs +++ b/Servers/BaseHttpServer.cs | |||
@@ -76,11 +76,23 @@ namespace OpenSim.Servers | |||
76 | string response; | 76 | string response; |
77 | RestMethod handler; | 77 | RestMethod handler; |
78 | 78 | ||
79 | string methodKey = String.Format("{0}: {1}", method, path); | 79 | string requestKey = String.Format("{0}: {1}", method, path); |
80 | 80 | ||
81 | if (m_restHandlers.TryGetValue(methodKey, out handler)) | 81 | string bestMatch = String.Empty; |
82 | foreach( string currentKey in m_restHandlers.Keys ) | ||
83 | { | ||
84 | if( requestKey.StartsWith( currentKey )) | ||
85 | { | ||
86 | if(currentKey.Length > bestMatch.Length ) | ||
87 | { | ||
88 | bestMatch = currentKey; | ||
89 | } | ||
90 | } | ||
91 | } | ||
92 | |||
93 | if (m_restHandlers.TryGetValue(bestMatch, out handler)) | ||
82 | { | 94 | { |
83 | response = handler(request); | 95 | response = handler(request, path); |
84 | 96 | ||
85 | } | 97 | } |
86 | else | 98 | else |
diff --git a/Servers/IRestHandler.cs b/Servers/IRestHandler.cs index deb77d8..46459ff 100644 --- a/Servers/IRestHandler.cs +++ b/Servers/IRestHandler.cs | |||
@@ -4,5 +4,5 @@ using System.Text; | |||
4 | 4 | ||
5 | namespace OpenSim.CAPS | 5 | namespace OpenSim.CAPS |
6 | { | 6 | { |
7 | public delegate string RestMethod( string request ); | 7 | public delegate string RestMethod( string request, string path ); |
8 | } | 8 | } |