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 /Servers/BaseHttpServer.cs | |
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.
Diffstat (limited to 'Servers/BaseHttpServer.cs')
-rw-r--r-- | Servers/BaseHttpServer.cs | 20 |
1 files changed, 16 insertions, 4 deletions
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 |