diff options
author | diva | 2009-05-25 20:30:24 +0000 |
---|---|---|
committer | diva | 2009-05-25 20:30:24 +0000 |
commit | cb704ecde19c512bfa4fc0b317d37fec63e76713 (patch) | |
tree | 1960e54ce2312b95f030009c335b5211322ef60d /OpenSim/Server/Handlers/Simulation/Utils.cs | |
parent | * reseparate inventory item creator id and creator uuid (diff) | |
download | opensim-SC-cb704ecde19c512bfa4fc0b317d37fec63e76713.zip opensim-SC-cb704ecde19c512bfa4fc0b317d37fec63e76713.tar.gz opensim-SC-cb704ecde19c512bfa4fc0b317d37fec63e76713.tar.bz2 opensim-SC-cb704ecde19c512bfa4fc0b317d37fec63e76713.tar.xz |
Beginning of refactoring RESTComms/LocalComms in the new style of services and connectors. This commit has the beginning of the In connector, not the Out. Nothing of this is finished yet, and it doesn't run. But it should compile ok.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Server/Handlers/Simulation/Utils.cs | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/OpenSim/Server/Handlers/Simulation/Utils.cs b/OpenSim/Server/Handlers/Simulation/Utils.cs new file mode 100644 index 0000000..581622c --- /dev/null +++ b/OpenSim/Server/Handlers/Simulation/Utils.cs | |||
@@ -0,0 +1,70 @@ | |||
1 | using System; | ||
2 | using System.Collections; | ||
3 | using System.Net; | ||
4 | |||
5 | using OpenSim.Framework; | ||
6 | using OpenSim.Framework.Servers.HttpServer; | ||
7 | using OpenSim.Services.Interfaces; | ||
8 | using OpenMetaverse; | ||
9 | |||
10 | namespace OpenSim.Server.Handlers.Simulation | ||
11 | { | ||
12 | public class Utils | ||
13 | { | ||
14 | /// <summary> | ||
15 | /// Extract the param from an uri. | ||
16 | /// </summary> | ||
17 | /// <param name="uri">Something like this: /uuid/ or /uuid/handle/release</param> | ||
18 | /// <param name="uri">uuid on uuid field</param> | ||
19 | /// <param name="action">optional action</param> | ||
20 | public static bool GetParams(string path, out UUID uuid, out ulong regionHandle, out string action) | ||
21 | { | ||
22 | uuid = UUID.Zero; | ||
23 | action = ""; | ||
24 | regionHandle = 0; | ||
25 | |||
26 | path = path.Trim(new char[] { '/' }); | ||
27 | string[] parts = path.Split('/'); | ||
28 | if (parts.Length <= 1) | ||
29 | { | ||
30 | return false; | ||
31 | } | ||
32 | else | ||
33 | { | ||
34 | if (!UUID.TryParse(parts[0], out uuid)) | ||
35 | return false; | ||
36 | |||
37 | if (parts.Length >= 2) | ||
38 | UInt64.TryParse(parts[1], out regionHandle); | ||
39 | if (parts.Length >= 3) | ||
40 | action = parts[2]; | ||
41 | |||
42 | return true; | ||
43 | } | ||
44 | } | ||
45 | |||
46 | public static bool GetAuthentication(OSHttpRequest httpRequest, out string authority, out string authKey) | ||
47 | { | ||
48 | authority = string.Empty; | ||
49 | authKey = string.Empty; | ||
50 | |||
51 | Uri authUri; | ||
52 | |||
53 | string auth = httpRequest.Headers["authentication"]; | ||
54 | // Authentication keys look like this: | ||
55 | // http://orgrid.org:8002/<uuid> | ||
56 | if ((auth != null) && (!string.Empty.Equals(auth)) && auth != "None") | ||
57 | { | ||
58 | if (Uri.TryCreate(auth, UriKind.Absolute, out authUri)) | ||
59 | { | ||
60 | authority = authUri.Authority; | ||
61 | authKey = authUri.PathAndQuery.Trim('/'); | ||
62 | return true; | ||
63 | } | ||
64 | } | ||
65 | |||
66 | return false; | ||
67 | } | ||
68 | |||
69 | } | ||
70 | } | ||