aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJeff Ames2009-03-31 02:00:33 +0000
committerJeff Ames2009-03-31 02:00:33 +0000
commit54ccca1e2cb8af5d0fdc420f64574a7d7b13c94b (patch)
treef0bf3e10df71075f7a3d9552578679fe0cfdd477
parentCommitting the changed binaries to get jhurliman's patch into our repo (diff)
downloadopensim-SC-54ccca1e2cb8af5d0fdc420f64574a7d7b13c94b.zip
opensim-SC-54ccca1e2cb8af5d0fdc420f64574a7d7b13c94b.tar.gz
opensim-SC-54ccca1e2cb8af5d0fdc420f64574a7d7b13c94b.tar.bz2
opensim-SC-54ccca1e2cb8af5d0fdc420f64574a7d7b13c94b.tar.xz
Update svn properties, add copyright header, formatting cleanup.
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs2
-rw-r--r--OpenSim/Framework/Communications/Cache/AssetCache.cs4
-rw-r--r--OpenSim/Framework/Communications/IAuthentication.cs51
-rw-r--r--OpenSim/Framework/Communications/Services/GridInfoService.cs344
-rw-r--r--OpenSim/Framework/Communications/Services/LoginResponse.cs1624
-rw-r--r--OpenSim/Framework/Communications/Services/LoginService.cs2186
-rw-r--r--OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs448
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs330
-rw-r--r--OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs506
-rw-r--r--OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs64
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs56
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs1
-rw-r--r--bin/HttpServer_OpenSim.xml14038
-rw-r--r--bin/OpenSim.ini.example40
15 files changed, 9858 insertions, 9838 deletions
diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs
index 5ff9da3..180d6f4 100644
--- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestHandler.cs
@@ -227,7 +227,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
227 // them easy to reach from anywhere in the assembly. 227 // them easy to reach from anywhere in the assembly.
228 228
229 Rest.main = openSim; 229 Rest.main = openSim;
230 if(Rest.main == null) 230 if (Rest.main == null)
231 throw new Exception("OpenSim base pointer is null"); 231 throw new Exception("OpenSim base pointer is null");
232 232
233 Rest.Plugin = this; 233 Rest.Plugin = this;
diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs
index d79645e..73aa6ba 100644
--- a/OpenSim/Framework/Communications/Cache/AssetCache.cs
+++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs
@@ -503,7 +503,7 @@ namespace OpenSim.Framework.Communications.Cache
503 req.Params = transferRequest.TransferInfo.Params; 503 req.Params = transferRequest.TransferInfo.Params;
504 req.AssetInf = new AssetInfo(asset); 504 req.AssetInf = new AssetInfo(asset);
505 req.NumPackets = CalculateNumPackets(asset.Data); 505 req.NumPackets = CalculateNumPackets(asset.Data);
506 lock(AssetRequests) AssetRequests.Add(req); 506 lock (AssetRequests) AssetRequests.Add(req);
507 } 507 }
508 508
509 /// <summary> 509 /// <summary>
@@ -526,7 +526,7 @@ namespace OpenSim.Framework.Communications.Cache
526 526
527 for (int i = 0; i < num; i++) 527 for (int i = 0; i < num; i++)
528 { 528 {
529 lock(AssetRequests) 529 lock (AssetRequests)
530 { 530 {
531 req = AssetRequests[0]; 531 req = AssetRequests[0];
532 AssetRequests.RemoveAt(0); 532 AssetRequests.RemoveAt(0);
diff --git a/OpenSim/Framework/Communications/IAuthentication.cs b/OpenSim/Framework/Communications/IAuthentication.cs
index 5d6d5f2..0f62569 100644
--- a/OpenSim/Framework/Communications/IAuthentication.cs
+++ b/OpenSim/Framework/Communications/IAuthentication.cs
@@ -1,13 +1,38 @@
1using System; 1/*
2 2 * Copyright (c) Contributors, http://opensimulator.org/
3using OpenMetaverse; 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 4 *
5 5 * Redistribution and use in source and binary forms, with or without
6namespace OpenSim.Framework.Communications 6 * modification, are permitted provided that the following conditions are met:
7{ 7 * * Redistributions of source code must retain the above copyright
8 public interface IAuthentication 8 * notice, this list of conditions and the following disclaimer.
9 { 9 * * Redistributions in binary form must reproduce the above copyright
10 string GetNewKey(string url, UUID userID, UUID authToken); 10 * notice, this list of conditions and the following disclaimer in the
11 bool VerifyKey(UUID userID, string key); 11 * documentation and/or other materials provided with the distribution.
12 } 12 * * Neither the name of the OpenSimulator Project nor the
13} 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using OpenMetaverse;
30
31namespace OpenSim.Framework.Communications
32{
33 public interface IAuthentication
34 {
35 string GetNewKey(string url, UUID userID, UUID authToken);
36 bool VerifyKey(UUID userID, string key);
37 }
38}
diff --git a/OpenSim/Framework/Communications/Services/GridInfoService.cs b/OpenSim/Framework/Communications/Services/GridInfoService.cs
index 96fe0d8..030ea61 100644
--- a/OpenSim/Framework/Communications/Services/GridInfoService.cs
+++ b/OpenSim/Framework/Communications/Services/GridInfoService.cs
@@ -1,172 +1,172 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.IO; 30using System.IO;
31using System.Reflection; 31using System.Reflection;
32using System.Text; 32using System.Text;
33using log4net; 33using log4net;
34using Nini.Config; 34using Nini.Config;
35using Nwc.XmlRpc; 35using Nwc.XmlRpc;
36using OpenSim.Framework.Servers; 36using OpenSim.Framework.Servers;
37 37
38namespace OpenSim.Framework.Communications.Services 38namespace OpenSim.Framework.Communications.Services
39{ 39{
40 public class GridInfoService 40 public class GridInfoService
41 { 41 {
42 private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 42 private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
43 43
44 private Hashtable _info = new Hashtable(); 44 private Hashtable _info = new Hashtable();
45 45
46 /// <summary> 46 /// <summary>
47 /// Instantiate a GridInfoService object. 47 /// Instantiate a GridInfoService object.
48 /// </summary> 48 /// </summary>
49 /// <param name="configPath">path to config path containing 49 /// <param name="configPath">path to config path containing
50 /// grid information</param> 50 /// grid information</param>
51 /// <remarks> 51 /// <remarks>
52 /// GridInfoService uses the [GridInfo] section of the 52 /// GridInfoService uses the [GridInfo] section of the
53 /// standard OpenSim.ini file --- which is not optimal, but 53 /// standard OpenSim.ini file --- which is not optimal, but
54 /// anything else requires a general redesign of the config 54 /// anything else requires a general redesign of the config
55 /// system. 55 /// system.
56 /// </remarks> 56 /// </remarks>
57 public GridInfoService(IConfigSource configSource) 57 public GridInfoService(IConfigSource configSource)
58 { 58 {
59 loadGridInfo(configSource); 59 loadGridInfo(configSource);
60 } 60 }
61 61
62 /// <summary> 62 /// <summary>
63 /// Default constructor, uses OpenSim.ini. 63 /// Default constructor, uses OpenSim.ini.
64 /// </summary> 64 /// </summary>
65 public GridInfoService() 65 public GridInfoService()
66 { 66 {
67 try 67 try
68 { 68 {
69 IConfigSource configSource = new IniConfigSource(Path.Combine(Util.configDir(), "OpenSim.ini")); 69 IConfigSource configSource = new IniConfigSource(Path.Combine(Util.configDir(), "OpenSim.ini"));
70 loadGridInfo(configSource); 70 loadGridInfo(configSource);
71 } 71 }
72 catch (FileNotFoundException) 72 catch (FileNotFoundException)
73 { 73 {
74 _log.Warn("[GridInfoService] no OpenSim.ini file found --- GridInfoServices WILL NOT BE AVAILABLE to your users"); 74 _log.Warn("[GridInfoService] no OpenSim.ini file found --- GridInfoServices WILL NOT BE AVAILABLE to your users");
75 } 75 }
76 } 76 }
77 77
78 private void loadGridInfo(IConfigSource configSource) 78 private void loadGridInfo(IConfigSource configSource)
79 { 79 {
80 _info["platform"] = "OpenSim"; 80 _info["platform"] = "OpenSim";
81 try 81 try
82 { 82 {
83 IConfig startupCfg = configSource.Configs["Startup"]; 83 IConfig startupCfg = configSource.Configs["Startup"];
84 IConfig gridCfg = configSource.Configs["GridInfo"]; 84 IConfig gridCfg = configSource.Configs["GridInfo"];
85 IConfig netCfg = configSource.Configs["Network"]; 85 IConfig netCfg = configSource.Configs["Network"];
86 86
87 bool grid = startupCfg.GetBoolean("gridmode", false); 87 bool grid = startupCfg.GetBoolean("gridmode", false);
88 88
89 if (grid) 89 if (grid)
90 _info["mode"] = "grid"; 90 _info["mode"] = "grid";
91 else 91 else
92 _info["mode"] = "standalone"; 92 _info["mode"] = "standalone";
93 93
94 94
95 if (null != gridCfg) 95 if (null != gridCfg)
96 { 96 {
97 foreach (string k in gridCfg.GetKeys()) 97 foreach (string k in gridCfg.GetKeys())
98 { 98 {
99 _info[k] = gridCfg.GetString(k); 99 _info[k] = gridCfg.GetString(k);
100 } 100 }
101 } 101 }
102 else if (null != netCfg) 102 else if (null != netCfg)
103 { 103 {
104 if (grid) 104 if (grid)
105 _info["login"] 105 _info["login"]
106 = netCfg.GetString( 106 = netCfg.GetString(
107 "user_server_url", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString()); 107 "user_server_url", "http://127.0.0.1:" + UserConfig.DefaultHttpPort.ToString());
108 else 108 else
109 _info["login"] 109 _info["login"]
110 = String.Format( 110 = String.Format(
111 "http://127.0.0.1:{0}/", 111 "http://127.0.0.1:{0}/",
112 netCfg.GetString( 112 netCfg.GetString(
113 "http_listener_port", NetworkServersInfo.DefaultHttpListenerPort.ToString())); 113 "http_listener_port", NetworkServersInfo.DefaultHttpListenerPort.ToString()));
114 114
115 IssueWarning(); 115 IssueWarning();
116 } 116 }
117 else 117 else
118 { 118 {
119 _info["login"] = "http://127.0.0.1:9000/"; 119 _info["login"] = "http://127.0.0.1:9000/";
120 IssueWarning(); 120 IssueWarning();
121 } 121 }
122 } 122 }
123 catch (Exception) 123 catch (Exception)
124 { 124 {
125 _log.Debug("[GridInfoService] cannot get grid info from config source, using minimal defaults"); 125 _log.Debug("[GridInfoService] cannot get grid info from config source, using minimal defaults");
126 } 126 }
127 _log.InfoFormat("[GridInfoService] Grid info service initialized with {0} keys", _info.Count); 127 _log.InfoFormat("[GridInfoService] Grid info service initialized with {0} keys", _info.Count);
128 128
129 } 129 }
130 130
131 private void IssueWarning() 131 private void IssueWarning()
132 { 132 {
133 _log.Warn("[GridInfoService] found no [GridInfo] section in your OpenSim.ini"); 133 _log.Warn("[GridInfoService] found no [GridInfo] section in your OpenSim.ini");
134 _log.Warn("[GridInfoService] trying to guess sensible defaults, you might want to provide better ones:"); 134 _log.Warn("[GridInfoService] trying to guess sensible defaults, you might want to provide better ones:");
135 foreach (string k in _info.Keys) 135 foreach (string k in _info.Keys)
136 { 136 {
137 _log.WarnFormat("[GridInfoService] {0}: {1}", k, _info[k]); 137 _log.WarnFormat("[GridInfoService] {0}: {1}", k, _info[k]);
138 } 138 }
139 } 139 }
140 140
141 public XmlRpcResponse XmlRpcGridInfoMethod(XmlRpcRequest request) 141 public XmlRpcResponse XmlRpcGridInfoMethod(XmlRpcRequest request)
142 { 142 {
143 XmlRpcResponse response = new XmlRpcResponse(); 143 XmlRpcResponse response = new XmlRpcResponse();
144 Hashtable responseData = new Hashtable(); 144 Hashtable responseData = new Hashtable();
145 145
146 _log.Info("[GridInfo]: Request for grid info"); 146 _log.Info("[GridInfo]: Request for grid info");
147 147
148 foreach (string k in _info.Keys) 148 foreach (string k in _info.Keys)
149 { 149 {
150 responseData[k] = _info[k]; 150 responseData[k] = _info[k];
151 } 151 }
152 response.Value = responseData; 152 response.Value = responseData;
153 153
154 return response; 154 return response;
155 } 155 }
156 156
157 public string RestGetGridInfoMethod(string request, string path, string param, 157 public string RestGetGridInfoMethod(string request, string path, string param,
158 OSHttpRequest httpRequest, OSHttpResponse httpResponse) 158 OSHttpRequest httpRequest, OSHttpResponse httpResponse)
159 { 159 {
160 StringBuilder sb = new StringBuilder(); 160 StringBuilder sb = new StringBuilder();
161 161
162 sb.Append("<gridinfo>\n"); 162 sb.Append("<gridinfo>\n");
163 foreach (string k in _info.Keys) 163 foreach (string k in _info.Keys)
164 { 164 {
165 sb.AppendFormat("<{0}>{1}</{0}>\n", k, _info[k]); 165 sb.AppendFormat("<{0}>{1}</{0}>\n", k, _info[k]);
166 } 166 }
167 sb.Append("</gridinfo>\n"); 167 sb.Append("</gridinfo>\n");
168 168
169 return sb.ToString(); 169 return sb.ToString();
170 } 170 }
171 } 171 }
172} 172}
diff --git a/OpenSim/Framework/Communications/Services/LoginResponse.cs b/OpenSim/Framework/Communications/Services/LoginResponse.cs
index 82515e0..db208a4 100644
--- a/OpenSim/Framework/Communications/Services/LoginResponse.cs
+++ b/OpenSim/Framework/Communications/Services/LoginResponse.cs
@@ -1,812 +1,812 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using Nwc.XmlRpc; 33using Nwc.XmlRpc;
34using OpenMetaverse; 34using OpenMetaverse;
35using OpenMetaverse.StructuredData; 35using OpenMetaverse.StructuredData;
36 36
37namespace OpenSim.Framework.Communications.Services 37namespace OpenSim.Framework.Communications.Services
38{ 38{
39 /// <summary> 39 /// <summary>
40 /// A temp class to handle login response. 40 /// A temp class to handle login response.
41 /// Should make use of UserProfileManager where possible. 41 /// Should make use of UserProfileManager where possible.
42 /// </summary> 42 /// </summary>
43 public class LoginResponse 43 public class LoginResponse
44 { 44 {
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46 46
47 private Hashtable loginFlagsHash; 47 private Hashtable loginFlagsHash;
48 private Hashtable globalTexturesHash; 48 private Hashtable globalTexturesHash;
49 private Hashtable loginError; 49 private Hashtable loginError;
50 private Hashtable uiConfigHash; 50 private Hashtable uiConfigHash;
51 51
52 private ArrayList loginFlags; 52 private ArrayList loginFlags;
53 private ArrayList globalTextures; 53 private ArrayList globalTextures;
54 private ArrayList eventCategories; 54 private ArrayList eventCategories;
55 private ArrayList uiConfig; 55 private ArrayList uiConfig;
56 private ArrayList classifiedCategories; 56 private ArrayList classifiedCategories;
57 private ArrayList inventoryRoot; 57 private ArrayList inventoryRoot;
58 private ArrayList initialOutfit; 58 private ArrayList initialOutfit;
59 private ArrayList agentInventory; 59 private ArrayList agentInventory;
60 private ArrayList inventoryLibraryOwner; 60 private ArrayList inventoryLibraryOwner;
61 private ArrayList inventoryLibRoot; 61 private ArrayList inventoryLibRoot;
62 private ArrayList inventoryLibrary; 62 private ArrayList inventoryLibrary;
63 private ArrayList activeGestures; 63 private ArrayList activeGestures;
64 64
65 private UserInfo userProfile; 65 private UserInfo userProfile;
66 66
67 private UUID agentID; 67 private UUID agentID;
68 private UUID sessionID; 68 private UUID sessionID;
69 private UUID secureSessionID; 69 private UUID secureSessionID;
70 70
71 // Login Flags 71 // Login Flags
72 private string dst; 72 private string dst;
73 private string stipendSinceLogin; 73 private string stipendSinceLogin;
74 private string gendered; 74 private string gendered;
75 private string everLoggedIn; 75 private string everLoggedIn;
76 private string login; 76 private string login;
77 private uint simPort; 77 private uint simPort;
78 private uint simHttpPort; 78 private uint simHttpPort;
79 private string simAddress; 79 private string simAddress;
80 private string agentAccess; 80 private string agentAccess;
81 private Int32 circuitCode; 81 private Int32 circuitCode;
82 private uint regionX; 82 private uint regionX;
83 private uint regionY; 83 private uint regionY;
84 84
85 // Login 85 // Login
86 private string firstname; 86 private string firstname;
87 private string lastname; 87 private string lastname;
88 88
89 // Global Textures 89 // Global Textures
90 private string sunTexture; 90 private string sunTexture;
91 private string cloudTexture; 91 private string cloudTexture;
92 private string moonTexture; 92 private string moonTexture;
93 93
94 // Error Flags 94 // Error Flags
95 private string errorReason; 95 private string errorReason;
96 private string errorMessage; 96 private string errorMessage;
97 97
98 // Response 98 // Response
99 private XmlRpcResponse xmlRpcResponse; 99 private XmlRpcResponse xmlRpcResponse;
100 // private XmlRpcResponse defaultXmlRpcResponse; 100 // private XmlRpcResponse defaultXmlRpcResponse;
101 101
102 private string welcomeMessage; 102 private string welcomeMessage;
103 private string startLocation; 103 private string startLocation;
104 private string allowFirstLife; 104 private string allowFirstLife;
105 private string home; 105 private string home;
106 private string seedCapability; 106 private string seedCapability;
107 private string lookAt; 107 private string lookAt;
108 108
109 private BuddyList m_buddyList = null; 109 private BuddyList m_buddyList = null;
110 110
111 public LoginResponse() 111 public LoginResponse()
112 { 112 {
113 loginFlags = new ArrayList(); 113 loginFlags = new ArrayList();
114 globalTextures = new ArrayList(); 114 globalTextures = new ArrayList();
115 eventCategories = new ArrayList(); 115 eventCategories = new ArrayList();
116 uiConfig = new ArrayList(); 116 uiConfig = new ArrayList();
117 classifiedCategories = new ArrayList(); 117 classifiedCategories = new ArrayList();
118 118
119 loginError = new Hashtable(); 119 loginError = new Hashtable();
120 uiConfigHash = new Hashtable(); 120 uiConfigHash = new Hashtable();
121 121
122 // defaultXmlRpcResponse = new XmlRpcResponse(); 122 // defaultXmlRpcResponse = new XmlRpcResponse();
123 userProfile = new UserInfo(); 123 userProfile = new UserInfo();
124 inventoryRoot = new ArrayList(); 124 inventoryRoot = new ArrayList();
125 initialOutfit = new ArrayList(); 125 initialOutfit = new ArrayList();
126 agentInventory = new ArrayList(); 126 agentInventory = new ArrayList();
127 inventoryLibrary = new ArrayList(); 127 inventoryLibrary = new ArrayList();
128 inventoryLibraryOwner = new ArrayList(); 128 inventoryLibraryOwner = new ArrayList();
129 activeGestures = new ArrayList(); 129 activeGestures = new ArrayList();
130 130
131 xmlRpcResponse = new XmlRpcResponse(); 131 xmlRpcResponse = new XmlRpcResponse();
132 // defaultXmlRpcResponse = new XmlRpcResponse(); 132 // defaultXmlRpcResponse = new XmlRpcResponse();
133 133
134 SetDefaultValues(); 134 SetDefaultValues();
135 } 135 }
136 136
137 private void SetDefaultValues() 137 private void SetDefaultValues()
138 { 138 {
139 DST = "N"; 139 DST = "N";
140 StipendSinceLogin = "N"; 140 StipendSinceLogin = "N";
141 Gendered = "Y"; 141 Gendered = "Y";
142 EverLoggedIn = "Y"; 142 EverLoggedIn = "Y";
143 login = "false"; 143 login = "false";
144 firstname = "Test"; 144 firstname = "Test";
145 lastname = "User"; 145 lastname = "User";
146 agentAccess = "M"; 146 agentAccess = "M";
147 startLocation = "last"; 147 startLocation = "last";
148 allowFirstLife = "Y"; 148 allowFirstLife = "Y";
149 149
150 SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271"; 150 SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271";
151 CloudTexture = "dc4b9f0b-d008-45c6-96a4-01dd947ac621"; 151 CloudTexture = "dc4b9f0b-d008-45c6-96a4-01dd947ac621";
152 MoonTexture = "ec4b9f0b-d008-45c6-96a4-01dd947ac621"; 152 MoonTexture = "ec4b9f0b-d008-45c6-96a4-01dd947ac621";
153 153
154 ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock."; 154 ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock.";
155 ErrorReason = "key"; 155 ErrorReason = "key";
156 welcomeMessage = "Welcome to OpenSim!"; 156 welcomeMessage = "Welcome to OpenSim!";
157 seedCapability = String.Empty; 157 seedCapability = String.Empty;
158 home = "{'region_handle':[r" + (1000*Constants.RegionSize).ToString() + ",r" + (1000*Constants.RegionSize).ToString() + "], 'position':[r" + 158 home = "{'region_handle':[r" + (1000*Constants.RegionSize).ToString() + ",r" + (1000*Constants.RegionSize).ToString() + "], 'position':[r" +
159 userProfile.homepos.X.ToString() + ",r" + userProfile.homepos.Y.ToString() + ",r" + 159 userProfile.homepos.X.ToString() + ",r" + userProfile.homepos.Y.ToString() + ",r" +
160 userProfile.homepos.Z.ToString() + "], 'look_at':[r" + userProfile.homelookat.X.ToString() + ",r" + 160 userProfile.homepos.Z.ToString() + "], 'look_at':[r" + userProfile.homelookat.X.ToString() + ",r" +
161 userProfile.homelookat.Y.ToString() + ",r" + userProfile.homelookat.Z.ToString() + "]}"; 161 userProfile.homelookat.Y.ToString() + ",r" + userProfile.homelookat.Z.ToString() + "]}";
162 lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]"; 162 lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]";
163 RegionX = (uint) 255232; 163 RegionX = (uint) 255232;
164 RegionY = (uint) 254976; 164 RegionY = (uint) 254976;
165 165
166 // Classifieds; 166 // Classifieds;
167 AddClassifiedCategory((Int32) 1, "Shopping"); 167 AddClassifiedCategory((Int32) 1, "Shopping");
168 AddClassifiedCategory((Int32) 2, "Land Rental"); 168 AddClassifiedCategory((Int32) 2, "Land Rental");
169 AddClassifiedCategory((Int32) 3, "Property Rental"); 169 AddClassifiedCategory((Int32) 3, "Property Rental");
170 AddClassifiedCategory((Int32) 4, "Special Attraction"); 170 AddClassifiedCategory((Int32) 4, "Special Attraction");
171 AddClassifiedCategory((Int32) 5, "New Products"); 171 AddClassifiedCategory((Int32) 5, "New Products");
172 AddClassifiedCategory((Int32) 6, "Employment"); 172 AddClassifiedCategory((Int32) 6, "Employment");
173 AddClassifiedCategory((Int32) 7, "Wanted"); 173 AddClassifiedCategory((Int32) 7, "Wanted");
174 AddClassifiedCategory((Int32) 8, "Service"); 174 AddClassifiedCategory((Int32) 8, "Service");
175 AddClassifiedCategory((Int32) 9, "Personal"); 175 AddClassifiedCategory((Int32) 9, "Personal");
176 176
177 SessionID = UUID.Random(); 177 SessionID = UUID.Random();
178 SecureSessionID = UUID.Random(); 178 SecureSessionID = UUID.Random();
179 AgentID = UUID.Random(); 179 AgentID = UUID.Random();
180 180
181 Hashtable InitialOutfitHash = new Hashtable(); 181 Hashtable InitialOutfitHash = new Hashtable();
182 InitialOutfitHash["folder_name"] = "Nightclub Female"; 182 InitialOutfitHash["folder_name"] = "Nightclub Female";
183 InitialOutfitHash["gender"] = "female"; 183 InitialOutfitHash["gender"] = "female";
184 initialOutfit.Add(InitialOutfitHash); 184 initialOutfit.Add(InitialOutfitHash);
185 } 185 }
186 186
187 #region Login Failure Methods 187 #region Login Failure Methods
188 188
189 public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login) 189 public XmlRpcResponse GenerateFailureResponse(string reason, string message, string login)
190 { 190 {
191 // Overwrite any default values; 191 // Overwrite any default values;
192 xmlRpcResponse = new XmlRpcResponse(); 192 xmlRpcResponse = new XmlRpcResponse();
193 193
194 // Ensure Login Failed message/reason; 194 // Ensure Login Failed message/reason;
195 ErrorMessage = message; 195 ErrorMessage = message;
196 ErrorReason = reason; 196 ErrorReason = reason;
197 197
198 loginError["reason"] = ErrorReason; 198 loginError["reason"] = ErrorReason;
199 loginError["message"] = ErrorMessage; 199 loginError["message"] = ErrorMessage;
200 loginError["login"] = login; 200 loginError["login"] = login;
201 xmlRpcResponse.Value = loginError; 201 xmlRpcResponse.Value = loginError;
202 return (xmlRpcResponse); 202 return (xmlRpcResponse);
203 } 203 }
204 204
205 public OSD GenerateFailureResponseLLSD(string reason, string message, string login) 205 public OSD GenerateFailureResponseLLSD(string reason, string message, string login)
206 { 206 {
207 OSDMap map = new OSDMap(); 207 OSDMap map = new OSDMap();
208 208
209 // Ensure Login Failed message/reason; 209 // Ensure Login Failed message/reason;
210 ErrorMessage = message; 210 ErrorMessage = message;
211 ErrorReason = reason; 211 ErrorReason = reason;
212 212
213 map["reason"] = OSD.FromString(ErrorReason); 213 map["reason"] = OSD.FromString(ErrorReason);
214 map["message"] = OSD.FromString(ErrorMessage); 214 map["message"] = OSD.FromString(ErrorMessage);
215 map["login"] = OSD.FromString(login); 215 map["login"] = OSD.FromString(login);
216 216
217 return map; 217 return map;
218 } 218 }
219 219
220 public XmlRpcResponse CreateFailedResponse() 220 public XmlRpcResponse CreateFailedResponse()
221 { 221 {
222 return (CreateLoginFailedResponse()); 222 return (CreateLoginFailedResponse());
223 } 223 }
224 224
225 public OSD CreateFailedResponseLLSD() 225 public OSD CreateFailedResponseLLSD()
226 { 226 {
227 return CreateLoginFailedResponseLLSD(); 227 return CreateLoginFailedResponseLLSD();
228 } 228 }
229 229
230 public XmlRpcResponse CreateLoginFailedResponse() 230 public XmlRpcResponse CreateLoginFailedResponse()
231 { 231 {
232 return 232 return
233 (GenerateFailureResponse("key", 233 (GenerateFailureResponse("key",
234 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", 234 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.",
235 "false")); 235 "false"));
236 } 236 }
237 237
238 public OSD CreateLoginFailedResponseLLSD() 238 public OSD CreateLoginFailedResponseLLSD()
239 { 239 {
240 return GenerateFailureResponseLLSD( 240 return GenerateFailureResponseLLSD(
241 "key", 241 "key",
242 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.", 242 "Could not authenticate your avatar. Please check your username and password, and check the grid if problems persist.",
243 "false"); 243 "false");
244 } 244 }
245 245
246 /// <summary> 246 /// <summary>
247 /// Response to indicate that login failed because the agent's inventory was not available. 247 /// Response to indicate that login failed because the agent's inventory was not available.
248 /// </summary> 248 /// </summary>
249 /// <returns></returns> 249 /// <returns></returns>
250 public XmlRpcResponse CreateLoginInventoryFailedResponse() 250 public XmlRpcResponse CreateLoginInventoryFailedResponse()
251 { 251 {
252 return GenerateFailureResponse( 252 return GenerateFailureResponse(
253 "key", 253 "key",
254 "The avatar inventory service is not responding. Please notify your login region operator.", 254 "The avatar inventory service is not responding. Please notify your login region operator.",
255 "false"); 255 "false");
256 } 256 }
257 257
258 public XmlRpcResponse CreateAlreadyLoggedInResponse() 258 public XmlRpcResponse CreateAlreadyLoggedInResponse()
259 { 259 {
260 return 260 return
261 (GenerateFailureResponse("presence", 261 (GenerateFailureResponse("presence",
262 "You appear to be already logged in. " + 262 "You appear to be already logged in. " +
263 "If this is not the case please wait for your session to timeout. " + 263 "If this is not the case please wait for your session to timeout. " +
264 "If this takes longer than a few minutes please contact the grid owner. " + 264 "If this takes longer than a few minutes please contact the grid owner. " +
265 "Please wait 5 minutes if you are going to connect to a region nearby to the region you were at previously.", 265 "Please wait 5 minutes if you are going to connect to a region nearby to the region you were at previously.",
266 "false")); 266 "false"));
267 } 267 }
268 268
269 public OSD CreateAlreadyLoggedInResponseLLSD() 269 public OSD CreateAlreadyLoggedInResponseLLSD()
270 { 270 {
271 return GenerateFailureResponseLLSD( 271 return GenerateFailureResponseLLSD(
272 "presence", 272 "presence",
273 "You appear to be already logged in. " + 273 "You appear to be already logged in. " +
274 "If this is not the case please wait for your session to timeout. " + 274 "If this is not the case please wait for your session to timeout. " +
275 "If this takes longer than a few minutes please contact the grid owner", 275 "If this takes longer than a few minutes please contact the grid owner",
276 "false"); 276 "false");
277 } 277 }
278 278
279 public XmlRpcResponse CreateLoginBlockedResponse() 279 public XmlRpcResponse CreateLoginBlockedResponse()
280 { 280 {
281 return 281 return
282 (GenerateFailureResponse("presence", 282 (GenerateFailureResponse("presence",
283 "Logins are currently restricted. Please try again later", 283 "Logins are currently restricted. Please try again later",
284 "false")); 284 "false"));
285 } 285 }
286 286
287 public OSD CreateLoginBlockedResponseLLSD() 287 public OSD CreateLoginBlockedResponseLLSD()
288 { 288 {
289 return GenerateFailureResponseLLSD( 289 return GenerateFailureResponseLLSD(
290 "presence", 290 "presence",
291 "Logins are currently restricted. Please try again later", 291 "Logins are currently restricted. Please try again later",
292 "false"); 292 "false");
293 } 293 }
294 294
295 public XmlRpcResponse CreateDeadRegionResponse() 295 public XmlRpcResponse CreateDeadRegionResponse()
296 { 296 {
297 return 297 return
298 (GenerateFailureResponse("key", 298 (GenerateFailureResponse("key",
299 "The region you are attempting to log into is not responding. Please select another region and try again.", 299 "The region you are attempting to log into is not responding. Please select another region and try again.",
300 "false")); 300 "false"));
301 } 301 }
302 302
303 public OSD CreateDeadRegionResponseLLSD() 303 public OSD CreateDeadRegionResponseLLSD()
304 { 304 {
305 return GenerateFailureResponseLLSD( 305 return GenerateFailureResponseLLSD(
306 "key", 306 "key",
307 "The region you are attempting to log into is not responding. Please select another region and try again.", 307 "The region you are attempting to log into is not responding. Please select another region and try again.",
308 "false"); 308 "false");
309 } 309 }
310 310
311 public XmlRpcResponse CreateGridErrorResponse() 311 public XmlRpcResponse CreateGridErrorResponse()
312 { 312 {
313 return 313 return
314 (GenerateFailureResponse("key", 314 (GenerateFailureResponse("key",
315 "Error connecting to grid. Could not percieve credentials from login XML.", 315 "Error connecting to grid. Could not percieve credentials from login XML.",
316 "false")); 316 "false"));
317 } 317 }
318 318
319 public OSD CreateGridErrorResponseLLSD() 319 public OSD CreateGridErrorResponseLLSD()
320 { 320 {
321 return GenerateFailureResponseLLSD( 321 return GenerateFailureResponseLLSD(
322 "key", 322 "key",
323 "Error connecting to grid. Could not percieve credentials from login XML.", 323 "Error connecting to grid. Could not percieve credentials from login XML.",
324 "false"); 324 "false");
325 } 325 }
326 326
327 #endregion 327 #endregion
328 328
329 public virtual XmlRpcResponse ToXmlRpcResponse() 329 public virtual XmlRpcResponse ToXmlRpcResponse()
330 { 330 {
331 try 331 try
332 { 332 {
333 Hashtable responseData = new Hashtable(); 333 Hashtable responseData = new Hashtable();
334 334
335 loginFlagsHash = new Hashtable(); 335 loginFlagsHash = new Hashtable();
336 loginFlagsHash["daylight_savings"] = DST; 336 loginFlagsHash["daylight_savings"] = DST;
337 loginFlagsHash["stipend_since_login"] = StipendSinceLogin; 337 loginFlagsHash["stipend_since_login"] = StipendSinceLogin;
338 loginFlagsHash["gendered"] = Gendered; 338 loginFlagsHash["gendered"] = Gendered;
339 loginFlagsHash["ever_logged_in"] = EverLoggedIn; 339 loginFlagsHash["ever_logged_in"] = EverLoggedIn;
340 loginFlags.Add(loginFlagsHash); 340 loginFlags.Add(loginFlagsHash);
341 341
342 responseData["first_name"] = Firstname; 342 responseData["first_name"] = Firstname;
343 responseData["last_name"] = Lastname; 343 responseData["last_name"] = Lastname;
344 responseData["agent_access"] = agentAccess; 344 responseData["agent_access"] = agentAccess;
345 345
346 globalTexturesHash = new Hashtable(); 346 globalTexturesHash = new Hashtable();
347 globalTexturesHash["sun_texture_id"] = SunTexture; 347 globalTexturesHash["sun_texture_id"] = SunTexture;
348 globalTexturesHash["cloud_texture_id"] = CloudTexture; 348 globalTexturesHash["cloud_texture_id"] = CloudTexture;
349 globalTexturesHash["moon_texture_id"] = MoonTexture; 349 globalTexturesHash["moon_texture_id"] = MoonTexture;
350 globalTextures.Add(globalTexturesHash); 350 globalTextures.Add(globalTexturesHash);
351 // this.eventCategories.Add(this.eventCategoriesHash); 351 // this.eventCategories.Add(this.eventCategoriesHash);
352 352
353 AddToUIConfig("allow_first_life", allowFirstLife); 353 AddToUIConfig("allow_first_life", allowFirstLife);
354 uiConfig.Add(uiConfigHash); 354 uiConfig.Add(uiConfigHash);
355 355
356 responseData["sim_port"] = (Int32) SimPort; 356 responseData["sim_port"] = (Int32) SimPort;
357 responseData["sim_ip"] = SimAddress; 357 responseData["sim_ip"] = SimAddress;
358 responseData["http_port"] = (Int32)SimHttpPort; 358 responseData["http_port"] = (Int32)SimHttpPort;
359 359
360 responseData["agent_id"] = AgentID.ToString(); 360 responseData["agent_id"] = AgentID.ToString();
361 responseData["session_id"] = SessionID.ToString(); 361 responseData["session_id"] = SessionID.ToString();
362 responseData["secure_session_id"] = SecureSessionID.ToString(); 362 responseData["secure_session_id"] = SecureSessionID.ToString();
363 responseData["circuit_code"] = CircuitCode; 363 responseData["circuit_code"] = CircuitCode;
364 responseData["seconds_since_epoch"] = (Int32) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; 364 responseData["seconds_since_epoch"] = (Int32) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
365 responseData["login-flags"] = loginFlags; 365 responseData["login-flags"] = loginFlags;
366 responseData["global-textures"] = globalTextures; 366 responseData["global-textures"] = globalTextures;
367 responseData["seed_capability"] = seedCapability; 367 responseData["seed_capability"] = seedCapability;
368 368
369 responseData["event_categories"] = eventCategories; 369 responseData["event_categories"] = eventCategories;
370 responseData["event_notifications"] = new ArrayList(); // todo 370 responseData["event_notifications"] = new ArrayList(); // todo
371 responseData["classified_categories"] = classifiedCategories; 371 responseData["classified_categories"] = classifiedCategories;
372 responseData["ui-config"] = uiConfig; 372 responseData["ui-config"] = uiConfig;
373 373
374 responseData["inventory-skeleton"] = agentInventory; 374 responseData["inventory-skeleton"] = agentInventory;
375 responseData["inventory-skel-lib"] = inventoryLibrary; 375 responseData["inventory-skel-lib"] = inventoryLibrary;
376 responseData["inventory-root"] = inventoryRoot; 376 responseData["inventory-root"] = inventoryRoot;
377 responseData["inventory-lib-root"] = inventoryLibRoot; 377 responseData["inventory-lib-root"] = inventoryLibRoot;
378 responseData["gestures"] = activeGestures; 378 responseData["gestures"] = activeGestures;
379 responseData["inventory-lib-owner"] = inventoryLibraryOwner; 379 responseData["inventory-lib-owner"] = inventoryLibraryOwner;
380 responseData["initial-outfit"] = initialOutfit; 380 responseData["initial-outfit"] = initialOutfit;
381 responseData["start_location"] = startLocation; 381 responseData["start_location"] = startLocation;
382 responseData["seed_capability"] = seedCapability; 382 responseData["seed_capability"] = seedCapability;
383 responseData["home"] = home; 383 responseData["home"] = home;
384 responseData["look_at"] = lookAt; 384 responseData["look_at"] = lookAt;
385 responseData["message"] = welcomeMessage; 385 responseData["message"] = welcomeMessage;
386 responseData["region_x"] = (Int32)(RegionX * Constants.RegionSize); 386 responseData["region_x"] = (Int32)(RegionX * Constants.RegionSize);
387 responseData["region_y"] = (Int32)(RegionY * Constants.RegionSize); 387 responseData["region_y"] = (Int32)(RegionY * Constants.RegionSize);
388 388
389 //responseData["inventory-lib-root"] = new ArrayList(); // todo 389 //responseData["inventory-lib-root"] = new ArrayList(); // todo
390 390
391 if (m_buddyList != null) 391 if (m_buddyList != null)
392 { 392 {
393 responseData["buddy-list"] = m_buddyList.ToArray(); 393 responseData["buddy-list"] = m_buddyList.ToArray();
394 } 394 }
395 395
396 responseData["login"] = "true"; 396 responseData["login"] = "true";
397 xmlRpcResponse.Value = responseData; 397 xmlRpcResponse.Value = responseData;
398 398
399 return (xmlRpcResponse); 399 return (xmlRpcResponse);
400 } 400 }
401 catch (Exception e) 401 catch (Exception e)
402 { 402 {
403 m_log.Warn("[CLIENT]: LoginResponse: Error creating XML-RPC Response: " + e.Message); 403 m_log.Warn("[CLIENT]: LoginResponse: Error creating XML-RPC Response: " + e.Message);
404 404
405 return (GenerateFailureResponse("Internal Error", "Error generating Login Response", "false")); 405 return (GenerateFailureResponse("Internal Error", "Error generating Login Response", "false"));
406 } 406 }
407 } 407 }
408 408
409 public OSD ToLLSDResponse() 409 public OSD ToLLSDResponse()
410 { 410 {
411 try 411 try
412 { 412 {
413 OSDMap map = new OSDMap(); 413 OSDMap map = new OSDMap();
414 414
415 map["first_name"] = OSD.FromString(Firstname); 415 map["first_name"] = OSD.FromString(Firstname);
416 map["last_name"] = OSD.FromString(Lastname); 416 map["last_name"] = OSD.FromString(Lastname);
417 map["agent_access"] = OSD.FromString(agentAccess); 417 map["agent_access"] = OSD.FromString(agentAccess);
418 418
419 map["sim_port"] = OSD.FromInteger(SimPort); 419 map["sim_port"] = OSD.FromInteger(SimPort);
420 map["sim_ip"] = OSD.FromString(SimAddress); 420 map["sim_ip"] = OSD.FromString(SimAddress);
421 421
422 map["agent_id"] = OSD.FromUUID(AgentID); 422 map["agent_id"] = OSD.FromUUID(AgentID);
423 map["session_id"] = OSD.FromUUID(SessionID); 423 map["session_id"] = OSD.FromUUID(SessionID);
424 map["secure_session_id"] = OSD.FromUUID(SecureSessionID); 424 map["secure_session_id"] = OSD.FromUUID(SecureSessionID);
425 map["circuit_code"] = OSD.FromInteger(CircuitCode); 425 map["circuit_code"] = OSD.FromInteger(CircuitCode);
426 map["seconds_since_epoch"] = OSD.FromInteger((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds); 426 map["seconds_since_epoch"] = OSD.FromInteger((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds);
427 427
428 #region Login Flags 428 #region Login Flags
429 429
430 OSDMap loginFlagsLLSD = new OSDMap(); 430 OSDMap loginFlagsLLSD = new OSDMap();
431 loginFlagsLLSD["daylight_savings"] = OSD.FromString(DST); 431 loginFlagsLLSD["daylight_savings"] = OSD.FromString(DST);
432 loginFlagsLLSD["stipend_since_login"] = OSD.FromString(StipendSinceLogin); 432 loginFlagsLLSD["stipend_since_login"] = OSD.FromString(StipendSinceLogin);
433 loginFlagsLLSD["gendered"] = OSD.FromString(Gendered); 433 loginFlagsLLSD["gendered"] = OSD.FromString(Gendered);
434 loginFlagsLLSD["ever_logged_in"] = OSD.FromString(EverLoggedIn); 434 loginFlagsLLSD["ever_logged_in"] = OSD.FromString(EverLoggedIn);
435 map["login-flags"] = WrapOSDMap(loginFlagsLLSD); 435 map["login-flags"] = WrapOSDMap(loginFlagsLLSD);
436 436
437 #endregion Login Flags 437 #endregion Login Flags
438 438
439 #region Global Textures 439 #region Global Textures
440 440
441 OSDMap globalTexturesLLSD = new OSDMap(); 441 OSDMap globalTexturesLLSD = new OSDMap();
442 globalTexturesLLSD["sun_texture_id"] = OSD.FromString(SunTexture); 442 globalTexturesLLSD["sun_texture_id"] = OSD.FromString(SunTexture);
443 globalTexturesLLSD["cloud_texture_id"] = OSD.FromString(CloudTexture); 443 globalTexturesLLSD["cloud_texture_id"] = OSD.FromString(CloudTexture);
444 globalTexturesLLSD["moon_texture_id"] = OSD.FromString(MoonTexture); 444 globalTexturesLLSD["moon_texture_id"] = OSD.FromString(MoonTexture);
445 445
446 map["global-textures"] = WrapOSDMap(globalTexturesLLSD); 446 map["global-textures"] = WrapOSDMap(globalTexturesLLSD);
447 447
448 #endregion Global Textures 448 #endregion Global Textures
449 449
450 map["seed_capability"] = OSD.FromString(seedCapability); 450 map["seed_capability"] = OSD.FromString(seedCapability);
451 451
452 map["event_categories"] = ArrayListToOSDArray(eventCategories); 452 map["event_categories"] = ArrayListToOSDArray(eventCategories);
453 //map["event_notifications"] = new OSDArray(); // todo 453 //map["event_notifications"] = new OSDArray(); // todo
454 map["classified_categories"] = ArrayListToOSDArray(classifiedCategories); 454 map["classified_categories"] = ArrayListToOSDArray(classifiedCategories);
455 455
456 #region UI Config 456 #region UI Config
457 457
458 OSDMap uiConfigLLSD = new OSDMap(); 458 OSDMap uiConfigLLSD = new OSDMap();
459 uiConfigLLSD["allow_first_life"] = OSD.FromString(allowFirstLife); 459 uiConfigLLSD["allow_first_life"] = OSD.FromString(allowFirstLife);
460 map["ui-config"] = WrapOSDMap(uiConfigLLSD); 460 map["ui-config"] = WrapOSDMap(uiConfigLLSD);
461 461
462 #endregion UI Config 462 #endregion UI Config
463 463
464 #region Inventory 464 #region Inventory
465 465
466 map["inventory-skeleton"] = ArrayListToOSDArray(agentInventory); 466 map["inventory-skeleton"] = ArrayListToOSDArray(agentInventory);
467 467
468 map["inventory-skel-lib"] = ArrayListToOSDArray(inventoryLibrary); 468 map["inventory-skel-lib"] = ArrayListToOSDArray(inventoryLibrary);
469 map["inventory-root"] = ArrayListToOSDArray(inventoryRoot); ; 469 map["inventory-root"] = ArrayListToOSDArray(inventoryRoot); ;
470 map["inventory-lib-root"] = ArrayListToOSDArray(inventoryLibRoot); 470 map["inventory-lib-root"] = ArrayListToOSDArray(inventoryLibRoot);
471 map["inventory-lib-owner"] = ArrayListToOSDArray(inventoryLibraryOwner); 471 map["inventory-lib-owner"] = ArrayListToOSDArray(inventoryLibraryOwner);
472 472
473 #endregion Inventory 473 #endregion Inventory
474 474
475 map["gestures"] = ArrayListToOSDArray(activeGestures); 475 map["gestures"] = ArrayListToOSDArray(activeGestures);
476 476
477 map["initial-outfit"] = ArrayListToOSDArray(initialOutfit); 477 map["initial-outfit"] = ArrayListToOSDArray(initialOutfit);
478 map["start_location"] = OSD.FromString(startLocation); 478 map["start_location"] = OSD.FromString(startLocation);
479 479
480 map["seed_capability"] = OSD.FromString(seedCapability); 480 map["seed_capability"] = OSD.FromString(seedCapability);
481 map["home"] = OSD.FromString(home); 481 map["home"] = OSD.FromString(home);
482 map["look_at"] = OSD.FromString(lookAt); 482 map["look_at"] = OSD.FromString(lookAt);
483 map["message"] = OSD.FromString(welcomeMessage); 483 map["message"] = OSD.FromString(welcomeMessage);
484 map["region_x"] = OSD.FromInteger(RegionX * Constants.RegionSize); 484 map["region_x"] = OSD.FromInteger(RegionX * Constants.RegionSize);
485 map["region_y"] = OSD.FromInteger(RegionY * Constants.RegionSize); 485 map["region_y"] = OSD.FromInteger(RegionY * Constants.RegionSize);
486 486
487 if (m_buddyList != null) 487 if (m_buddyList != null)
488 { 488 {
489 map["buddy-list"] = ArrayListToOSDArray(m_buddyList.ToArray()); 489 map["buddy-list"] = ArrayListToOSDArray(m_buddyList.ToArray());
490 } 490 }
491 491
492 map["login"] = OSD.FromString("true"); 492 map["login"] = OSD.FromString("true");
493 493
494 return map; 494 return map;
495 } 495 }
496 catch (Exception e) 496 catch (Exception e)
497 { 497 {
498 m_log.Warn("[CLIENT]: LoginResponse: Error creating LLSD Response: " + e.Message); 498 m_log.Warn("[CLIENT]: LoginResponse: Error creating LLSD Response: " + e.Message);
499 499
500 return GenerateFailureResponseLLSD("Internal Error", "Error generating Login Response", "false"); 500 return GenerateFailureResponseLLSD("Internal Error", "Error generating Login Response", "false");
501 } 501 }
502 } 502 }
503 503
504 public OSDArray ArrayListToOSDArray(ArrayList arrlst) 504 public OSDArray ArrayListToOSDArray(ArrayList arrlst)
505 { 505 {
506 OSDArray llsdBack = new OSDArray(); 506 OSDArray llsdBack = new OSDArray();
507 foreach (Hashtable ht in arrlst) 507 foreach (Hashtable ht in arrlst)
508 { 508 {
509 OSDMap mp = new OSDMap(); 509 OSDMap mp = new OSDMap();
510 foreach (DictionaryEntry deHt in ht) 510 foreach (DictionaryEntry deHt in ht)
511 { 511 {
512 mp.Add((string)deHt.Key, OSDString.FromObject(deHt.Value)); 512 mp.Add((string)deHt.Key, OSDString.FromObject(deHt.Value));
513 } 513 }
514 llsdBack.Add(mp); 514 llsdBack.Add(mp);
515 } 515 }
516 return llsdBack; 516 return llsdBack;
517 } 517 }
518 518
519 private static OSDArray WrapOSDMap(OSDMap wrapMe) 519 private static OSDArray WrapOSDMap(OSDMap wrapMe)
520 { 520 {
521 OSDArray array = new OSDArray(); 521 OSDArray array = new OSDArray();
522 array.Add(wrapMe); 522 array.Add(wrapMe);
523 return array; 523 return array;
524 } 524 }
525 525
526 public void SetEventCategories(string category, string value) 526 public void SetEventCategories(string category, string value)
527 { 527 {
528 // this.eventCategoriesHash[category] = value; 528 // this.eventCategoriesHash[category] = value;
529 //TODO 529 //TODO
530 } 530 }
531 531
532 public void AddToUIConfig(string itemName, string item) 532 public void AddToUIConfig(string itemName, string item)
533 { 533 {
534 uiConfigHash[itemName] = item; 534 uiConfigHash[itemName] = item;
535 } 535 }
536 536
537 public void AddClassifiedCategory(Int32 ID, string categoryName) 537 public void AddClassifiedCategory(Int32 ID, string categoryName)
538 { 538 {
539 Hashtable hash = new Hashtable(); 539 Hashtable hash = new Hashtable();
540 hash["category_name"] = categoryName; 540 hash["category_name"] = categoryName;
541 hash["category_id"] = ID; 541 hash["category_id"] = ID;
542 classifiedCategories.Add(hash); 542 classifiedCategories.Add(hash);
543 // this.classifiedCategoriesHash.Clear(); 543 // this.classifiedCategoriesHash.Clear();
544 } 544 }
545 545
546 #region Properties 546 #region Properties
547 547
548 public string Login 548 public string Login
549 { 549 {
550 get { return login; } 550 get { return login; }
551 set { login = value; } 551 set { login = value; }
552 } 552 }
553 553
554 public string DST 554 public string DST
555 { 555 {
556 get { return dst; } 556 get { return dst; }
557 set { dst = value; } 557 set { dst = value; }
558 } 558 }
559 559
560 public string StipendSinceLogin 560 public string StipendSinceLogin
561 { 561 {
562 get { return stipendSinceLogin; } 562 get { return stipendSinceLogin; }
563 set { stipendSinceLogin = value; } 563 set { stipendSinceLogin = value; }
564 } 564 }
565 565
566 public string Gendered 566 public string Gendered
567 { 567 {
568 get { return gendered; } 568 get { return gendered; }
569 set { gendered = value; } 569 set { gendered = value; }
570 } 570 }
571 571
572 public string EverLoggedIn 572 public string EverLoggedIn
573 { 573 {
574 get { return everLoggedIn; } 574 get { return everLoggedIn; }
575 set { everLoggedIn = value; } 575 set { everLoggedIn = value; }
576 } 576 }
577 577
578 public uint SimPort 578 public uint SimPort
579 { 579 {
580 get { return simPort; } 580 get { return simPort; }
581 set { simPort = value; } 581 set { simPort = value; }
582 } 582 }
583 583
584 public uint SimHttpPort 584 public uint SimHttpPort
585 { 585 {
586 get { return simHttpPort; } 586 get { return simHttpPort; }
587 set { simHttpPort = value; } 587 set { simHttpPort = value; }
588 } 588 }
589 589
590 public string SimAddress 590 public string SimAddress
591 { 591 {
592 get { return simAddress; } 592 get { return simAddress; }
593 set { simAddress = value; } 593 set { simAddress = value; }
594 } 594 }
595 595
596 public UUID AgentID 596 public UUID AgentID
597 { 597 {
598 get { return agentID; } 598 get { return agentID; }
599 set { agentID = value; } 599 set { agentID = value; }
600 } 600 }
601 601
602 public UUID SessionID 602 public UUID SessionID
603 { 603 {
604 get { return sessionID; } 604 get { return sessionID; }
605 set { sessionID = value; } 605 set { sessionID = value; }
606 } 606 }
607 607
608 public UUID SecureSessionID 608 public UUID SecureSessionID
609 { 609 {
610 get { return secureSessionID; } 610 get { return secureSessionID; }
611 set { secureSessionID = value; } 611 set { secureSessionID = value; }
612 } 612 }
613 613
614 public Int32 CircuitCode 614 public Int32 CircuitCode
615 { 615 {
616 get { return circuitCode; } 616 get { return circuitCode; }
617 set { circuitCode = value; } 617 set { circuitCode = value; }
618 } 618 }
619 619
620 public uint RegionX 620 public uint RegionX
621 { 621 {
622 get { return regionX; } 622 get { return regionX; }
623 set { regionX = value; } 623 set { regionX = value; }
624 } 624 }
625 625
626 public uint RegionY 626 public uint RegionY
627 { 627 {
628 get { return regionY; } 628 get { return regionY; }
629 set { regionY = value; } 629 set { regionY = value; }
630 } 630 }
631 631
632 public string SunTexture 632 public string SunTexture
633 { 633 {
634 get { return sunTexture; } 634 get { return sunTexture; }
635 set { sunTexture = value; } 635 set { sunTexture = value; }
636 } 636 }
637 637
638 public string CloudTexture 638 public string CloudTexture
639 { 639 {
640 get { return cloudTexture; } 640 get { return cloudTexture; }
641 set { cloudTexture = value; } 641 set { cloudTexture = value; }
642 } 642 }
643 643
644 public string MoonTexture 644 public string MoonTexture
645 { 645 {
646 get { return moonTexture; } 646 get { return moonTexture; }
647 set { moonTexture = value; } 647 set { moonTexture = value; }
648 } 648 }
649 649
650 public string Firstname 650 public string Firstname
651 { 651 {
652 get { return firstname; } 652 get { return firstname; }
653 set { firstname = value; } 653 set { firstname = value; }
654 } 654 }
655 655
656 public string Lastname 656 public string Lastname
657 { 657 {
658 get { return lastname; } 658 get { return lastname; }
659 set { lastname = value; } 659 set { lastname = value; }
660 } 660 }
661 661
662 public string AgentAccess 662 public string AgentAccess
663 { 663 {
664 get { return agentAccess; } 664 get { return agentAccess; }
665 set { agentAccess = value; } 665 set { agentAccess = value; }
666 } 666 }
667 667
668 public string StartLocation 668 public string StartLocation
669 { 669 {
670 get { return startLocation; } 670 get { return startLocation; }
671 set { startLocation = value; } 671 set { startLocation = value; }
672 } 672 }
673 673
674 public string LookAt 674 public string LookAt
675 { 675 {
676 get { return lookAt; } 676 get { return lookAt; }
677 set { lookAt = value; } 677 set { lookAt = value; }
678 } 678 }
679 679
680 public string SeedCapability 680 public string SeedCapability
681 { 681 {
682 get { return seedCapability; } 682 get { return seedCapability; }
683 set { seedCapability = value; } 683 set { seedCapability = value; }
684 } 684 }
685 685
686 public string ErrorReason 686 public string ErrorReason
687 { 687 {
688 get { return errorReason; } 688 get { return errorReason; }
689 set { errorReason = value; } 689 set { errorReason = value; }
690 } 690 }
691 691
692 public string ErrorMessage 692 public string ErrorMessage
693 { 693 {
694 get { return errorMessage; } 694 get { return errorMessage; }
695 set { errorMessage = value; } 695 set { errorMessage = value; }
696 } 696 }
697 697
698 public ArrayList InventoryRoot 698 public ArrayList InventoryRoot
699 { 699 {
700 get { return inventoryRoot; } 700 get { return inventoryRoot; }
701 set { inventoryRoot = value; } 701 set { inventoryRoot = value; }
702 } 702 }
703 703
704 public ArrayList InventorySkeleton 704 public ArrayList InventorySkeleton
705 { 705 {
706 get { return agentInventory; } 706 get { return agentInventory; }
707 set { agentInventory = value; } 707 set { agentInventory = value; }
708 } 708 }
709 709
710 public ArrayList InventoryLibrary 710 public ArrayList InventoryLibrary
711 { 711 {
712 get { return inventoryLibrary; } 712 get { return inventoryLibrary; }
713 set { inventoryLibrary = value; } 713 set { inventoryLibrary = value; }
714 } 714 }
715 715
716 public ArrayList InventoryLibraryOwner 716 public ArrayList InventoryLibraryOwner
717 { 717 {
718 get { return inventoryLibraryOwner; } 718 get { return inventoryLibraryOwner; }
719 set { inventoryLibraryOwner = value; } 719 set { inventoryLibraryOwner = value; }
720 } 720 }
721 721
722 public ArrayList InventoryLibRoot 722 public ArrayList InventoryLibRoot
723 { 723 {
724 get { return inventoryLibRoot; } 724 get { return inventoryLibRoot; }
725 set { inventoryLibRoot = value; } 725 set { inventoryLibRoot = value; }
726 } 726 }
727 727
728 public ArrayList ActiveGestures 728 public ArrayList ActiveGestures
729 { 729 {
730 get { return activeGestures; } 730 get { return activeGestures; }
731 set { activeGestures = value; } 731 set { activeGestures = value; }
732 } 732 }
733 733
734 public string Home 734 public string Home
735 { 735 {
736 get { return home; } 736 get { return home; }
737 set { home = value; } 737 set { home = value; }
738 } 738 }
739 739
740 public string Message 740 public string Message
741 { 741 {
742 get { return welcomeMessage; } 742 get { return welcomeMessage; }
743 set { welcomeMessage = value; } 743 set { welcomeMessage = value; }
744 } 744 }
745 745
746 public BuddyList BuddList 746 public BuddyList BuddList
747 { 747 {
748 get { return m_buddyList; } 748 get { return m_buddyList; }
749 set { m_buddyList = value; } 749 set { m_buddyList = value; }
750 } 750 }
751 751
752 #endregion 752 #endregion
753 753
754 public class UserInfo 754 public class UserInfo
755 { 755 {
756 public string firstname; 756 public string firstname;
757 public string lastname; 757 public string lastname;
758 public ulong homeregionhandle; 758 public ulong homeregionhandle;
759 public Vector3 homepos; 759 public Vector3 homepos;
760 public Vector3 homelookat; 760 public Vector3 homelookat;
761 } 761 }
762 762
763 public class BuddyList 763 public class BuddyList
764 { 764 {
765 public List<BuddyInfo> Buddies = new List<BuddyInfo>(); 765 public List<BuddyInfo> Buddies = new List<BuddyInfo>();
766 766
767 public void AddNewBuddy(BuddyInfo buddy) 767 public void AddNewBuddy(BuddyInfo buddy)
768 { 768 {
769 if (!Buddies.Contains(buddy)) 769 if (!Buddies.Contains(buddy))
770 { 770 {
771 Buddies.Add(buddy); 771 Buddies.Add(buddy);
772 } 772 }
773 } 773 }
774 774
775 public ArrayList ToArray() 775 public ArrayList ToArray()
776 { 776 {
777 ArrayList buddyArray = new ArrayList(); 777 ArrayList buddyArray = new ArrayList();
778 foreach (BuddyInfo buddy in Buddies) 778 foreach (BuddyInfo buddy in Buddies)
779 { 779 {
780 buddyArray.Add(buddy.ToHashTable()); 780 buddyArray.Add(buddy.ToHashTable());
781 } 781 }
782 return buddyArray; 782 return buddyArray;
783 } 783 }
784 784
785 public class BuddyInfo 785 public class BuddyInfo
786 { 786 {
787 public int BuddyRightsHave = 1; 787 public int BuddyRightsHave = 1;
788 public int BuddyRightsGiven = 1; 788 public int BuddyRightsGiven = 1;
789 public UUID BuddyID; 789 public UUID BuddyID;
790 790
791 public BuddyInfo(string buddyID) 791 public BuddyInfo(string buddyID)
792 { 792 {
793 BuddyID = new UUID(buddyID); 793 BuddyID = new UUID(buddyID);
794 } 794 }
795 795
796 public BuddyInfo(UUID buddyID) 796 public BuddyInfo(UUID buddyID)
797 { 797 {
798 BuddyID = buddyID; 798 BuddyID = buddyID;
799 } 799 }
800 800
801 public Hashtable ToHashTable() 801 public Hashtable ToHashTable()
802 { 802 {
803 Hashtable hTable = new Hashtable(); 803 Hashtable hTable = new Hashtable();
804 hTable["buddy_rights_has"] = BuddyRightsHave; 804 hTable["buddy_rights_has"] = BuddyRightsHave;
805 hTable["buddy_rights_given"] = BuddyRightsGiven; 805 hTable["buddy_rights_given"] = BuddyRightsGiven;
806 hTable["buddy_id"] = BuddyID.ToString(); 806 hTable["buddy_id"] = BuddyID.ToString();
807 return hTable; 807 return hTable;
808 } 808 }
809 } 809 }
810 } 810 }
811 } 811 }
812} 812}
diff --git a/OpenSim/Framework/Communications/Services/LoginService.cs b/OpenSim/Framework/Communications/Services/LoginService.cs
index 51158c9..1b6520d 100644
--- a/OpenSim/Framework/Communications/Services/LoginService.cs
+++ b/OpenSim/Framework/Communications/Services/LoginService.cs
@@ -1,1093 +1,1093 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.IO; 31using System.IO;
32using System.Reflection; 32using System.Reflection;
33using System.Text.RegularExpressions; 33using System.Text.RegularExpressions;
34using System.Threading; 34using System.Threading;
35using System.Web; 35using System.Web;
36using log4net; 36using log4net;
37using Nwc.XmlRpc; 37using Nwc.XmlRpc;
38using OpenMetaverse; 38using OpenMetaverse;
39using OpenMetaverse.StructuredData; 39using OpenMetaverse.StructuredData;
40using OpenSim.Framework.Communications.Cache; 40using OpenSim.Framework.Communications.Cache;
41using OpenSim.Framework.Statistics; 41using OpenSim.Framework.Statistics;
42 42
43namespace OpenSim.Framework.Communications.Services 43namespace OpenSim.Framework.Communications.Services
44{ 44{
45 public abstract class LoginService 45 public abstract class LoginService
46 { 46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48 48
49 protected string m_welcomeMessage = "Welcome to OpenSim"; 49 protected string m_welcomeMessage = "Welcome to OpenSim";
50 protected int m_minLoginLevel = 0; 50 protected int m_minLoginLevel = 0;
51 protected UserManagerBase m_userManager = null; 51 protected UserManagerBase m_userManager = null;
52 protected Mutex m_loginMutex = new Mutex(false); 52 protected Mutex m_loginMutex = new Mutex(false);
53 53
54 /// <summary> 54 /// <summary>
55 /// Used during login to send the skeleton of the OpenSim Library to the client. 55 /// Used during login to send the skeleton of the OpenSim Library to the client.
56 /// </summary> 56 /// </summary>
57 protected LibraryRootFolder m_libraryRootFolder; 57 protected LibraryRootFolder m_libraryRootFolder;
58 58
59 protected uint m_defaultHomeX; 59 protected uint m_defaultHomeX;
60 protected uint m_defaultHomeY; 60 protected uint m_defaultHomeY;
61 61
62 /// <summary> 62 /// <summary>
63 /// Used by the login service to make requests to the inventory service. 63 /// Used by the login service to make requests to the inventory service.
64 /// </summary> 64 /// </summary>
65 protected IInterServiceInventoryServices m_inventoryService; 65 protected IInterServiceInventoryServices m_inventoryService;
66 66
67 /// <summary> 67 /// <summary>
68 /// Constructor 68 /// Constructor
69 /// </summary> 69 /// </summary>
70 /// <param name="userManager"></param> 70 /// <param name="userManager"></param>
71 /// <param name="libraryRootFolder"></param> 71 /// <param name="libraryRootFolder"></param>
72 /// <param name="welcomeMess"></param> 72 /// <param name="welcomeMess"></param>
73 public LoginService(UserManagerBase userManager, LibraryRootFolder libraryRootFolder, 73 public LoginService(UserManagerBase userManager, LibraryRootFolder libraryRootFolder,
74 string welcomeMess) 74 string welcomeMess)
75 { 75 {
76 m_userManager = userManager; 76 m_userManager = userManager;
77 m_libraryRootFolder = libraryRootFolder; 77 m_libraryRootFolder = libraryRootFolder;
78 78
79 if (welcomeMess != String.Empty) 79 if (welcomeMess != String.Empty)
80 { 80 {
81 m_welcomeMessage = welcomeMess; 81 m_welcomeMessage = welcomeMess;
82 } 82 }
83 } 83 }
84 84
85 /// <summary> 85 /// <summary>
86 /// If the user is already logged in, try to notify the region that the user they've got is dead. 86 /// If the user is already logged in, try to notify the region that the user they've got is dead.
87 /// </summary> 87 /// </summary>
88 /// <param name="theUser"></param> 88 /// <param name="theUser"></param>
89 public virtual void LogOffUser(UserProfileData theUser, string message) 89 public virtual void LogOffUser(UserProfileData theUser, string message)
90 { 90 {
91 } 91 }
92 92
93 93
94 /// <summary> 94 /// <summary>
95 /// Called when we receive the client's initial XMLRPC login_to_simulator request message 95 /// Called when we receive the client's initial XMLRPC login_to_simulator request message
96 /// </summary> 96 /// </summary>
97 /// <param name="request">The XMLRPC request</param> 97 /// <param name="request">The XMLRPC request</param>
98 /// <returns>The response to send</returns> 98 /// <returns>The response to send</returns>
99 public virtual XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) 99 public virtual XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request)
100 { 100 {
101 // Temporary fix 101 // Temporary fix
102 m_loginMutex.WaitOne(); 102 m_loginMutex.WaitOne();
103 103
104 try 104 try
105 { 105 {
106 //CFK: CustomizeResponse contains sufficient strings to alleviate the need for this. 106 //CFK: CustomizeResponse contains sufficient strings to alleviate the need for this.
107 //CKF: m_log.Info("[LOGIN]: Attempting login now..."); 107 //CKF: m_log.Info("[LOGIN]: Attempting login now...");
108 XmlRpcResponse response = new XmlRpcResponse(); 108 XmlRpcResponse response = new XmlRpcResponse();
109 Hashtable requestData = (Hashtable)request.Params[0]; 109 Hashtable requestData = (Hashtable)request.Params[0];
110 110
111 SniffLoginKey((Uri)request.Params[2], requestData); 111 SniffLoginKey((Uri)request.Params[2], requestData);
112 112
113 bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && 113 bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") &&
114 (requestData.Contains("passwd") || requestData.Contains("web_login_key"))); 114 (requestData.Contains("passwd") || requestData.Contains("web_login_key")));
115 115
116 string startLocationRequest = "last"; 116 string startLocationRequest = "last";
117 117
118 UserProfileData userProfile; 118 UserProfileData userProfile;
119 LoginResponse logResponse = new LoginResponse(); 119 LoginResponse logResponse = new LoginResponse();
120 120
121 string firstname; 121 string firstname;
122 string lastname; 122 string lastname;
123 123
124 if (GoodXML) 124 if (GoodXML)
125 { 125 {
126 if (requestData.Contains("start")) 126 if (requestData.Contains("start"))
127 { 127 {
128 startLocationRequest = (string)requestData["start"]; 128 startLocationRequest = (string)requestData["start"];
129 } 129 }
130 130
131 firstname = (string)requestData["first"]; 131 firstname = (string)requestData["first"];
132 lastname = (string)requestData["last"]; 132 lastname = (string)requestData["last"];
133 133
134 m_log.InfoFormat( 134 m_log.InfoFormat(
135 "[LOGIN BEGIN]: XMLRPC Received login request message from user '{0}' '{1}'", 135 "[LOGIN BEGIN]: XMLRPC Received login request message from user '{0}' '{1}'",
136 firstname, lastname); 136 firstname, lastname);
137 137
138 string clientVersion = "Unknown"; 138 string clientVersion = "Unknown";
139 139
140 if (requestData.Contains("version")) 140 if (requestData.Contains("version"))
141 { 141 {
142 clientVersion = (string)requestData["version"]; 142 clientVersion = (string)requestData["version"];
143 } 143 }
144 144
145 m_log.DebugFormat( 145 m_log.DebugFormat(
146 "[LOGIN]: XMLRPC Client is {0}, start location is {1}", clientVersion, startLocationRequest); 146 "[LOGIN]: XMLRPC Client is {0}, start location is {1}", clientVersion, startLocationRequest);
147 147
148 if (!TryAuthenticateXmlRpcLogin(request, firstname, lastname, out userProfile)) 148 if (!TryAuthenticateXmlRpcLogin(request, firstname, lastname, out userProfile))
149 { 149 {
150 return logResponse.CreateLoginFailedResponse(); 150 return logResponse.CreateLoginFailedResponse();
151 } 151 }
152 } 152 }
153 else 153 else
154 { 154 {
155 m_log.Info( 155 m_log.Info(
156 "[LOGIN END]: XMLRPC login_to_simulator login message did not contain all the required data"); 156 "[LOGIN END]: XMLRPC login_to_simulator login message did not contain all the required data");
157 157
158 return logResponse.CreateGridErrorResponse(); 158 return logResponse.CreateGridErrorResponse();
159 } 159 }
160 160
161 if (userProfile.GodLevel < m_minLoginLevel) 161 if (userProfile.GodLevel < m_minLoginLevel)
162 { 162 {
163 return logResponse.CreateLoginBlockedResponse(); 163 return logResponse.CreateLoginBlockedResponse();
164 } 164 }
165 else 165 else
166 { 166 {
167 // If we already have a session... 167 // If we already have a session...
168 if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline) 168 if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline)
169 { 169 {
170 //TODO: The following statements can cause trouble: 170 //TODO: The following statements can cause trouble:
171 // If agentOnline could not turn from true back to false normally 171 // If agentOnline could not turn from true back to false normally
172 // because of some problem, for instance, the crashment of server or client, 172 // because of some problem, for instance, the crashment of server or client,
173 // the user cannot log in any longer. 173 // the user cannot log in any longer.
174 userProfile.CurrentAgent.AgentOnline = false; 174 userProfile.CurrentAgent.AgentOnline = false;
175 175
176 m_userManager.CommitAgent(ref userProfile); 176 m_userManager.CommitAgent(ref userProfile);
177 177
178 // try to tell the region that their user is dead. 178 // try to tell the region that their user is dead.
179 LogOffUser(userProfile, " XMLRPC You were logged off because you logged in from another location"); 179 LogOffUser(userProfile, " XMLRPC You were logged off because you logged in from another location");
180 180
181 // Reject the login 181 // Reject the login
182 182
183 m_log.InfoFormat( 183 m_log.InfoFormat(
184 "[LOGIN END]: XMLRPC Notifying user {0} {1} that they are already logged in", 184 "[LOGIN END]: XMLRPC Notifying user {0} {1} that they are already logged in",
185 firstname, lastname); 185 firstname, lastname);
186 186
187 return logResponse.CreateAlreadyLoggedInResponse(); 187 return logResponse.CreateAlreadyLoggedInResponse();
188 } 188 }
189 189
190 // Otherwise... 190 // Otherwise...
191 // Create a new agent session 191 // Create a new agent session
192 192
193 m_userManager.ResetAttachments(userProfile.ID); 193 m_userManager.ResetAttachments(userProfile.ID);
194 194
195 CreateAgent(userProfile, request); 195 CreateAgent(userProfile, request);
196 196
197 try 197 try
198 { 198 {
199 UUID agentID = userProfile.ID; 199 UUID agentID = userProfile.ID;
200 InventoryData inventData; 200 InventoryData inventData;
201 201
202 try 202 try
203 { 203 {
204 inventData = GetInventorySkeleton(agentID); 204 inventData = GetInventorySkeleton(agentID);
205 } 205 }
206 catch (Exception e) 206 catch (Exception e)
207 { 207 {
208 m_log.ErrorFormat( 208 m_log.ErrorFormat(
209 "[LOGIN END]: Error retrieving inventory skeleton of agent {0} - {1}", 209 "[LOGIN END]: Error retrieving inventory skeleton of agent {0} - {1}",
210 agentID, e); 210 agentID, e);
211 211
212 return logResponse.CreateLoginInventoryFailedResponse(); 212 return logResponse.CreateLoginInventoryFailedResponse();
213 } 213 }
214 214
215 ArrayList AgentInventoryArray = inventData.InventoryArray; 215 ArrayList AgentInventoryArray = inventData.InventoryArray;
216 216
217 Hashtable InventoryRootHash = new Hashtable(); 217 Hashtable InventoryRootHash = new Hashtable();
218 InventoryRootHash["folder_id"] = inventData.RootFolderID.ToString(); 218 InventoryRootHash["folder_id"] = inventData.RootFolderID.ToString();
219 ArrayList InventoryRoot = new ArrayList(); 219 ArrayList InventoryRoot = new ArrayList();
220 InventoryRoot.Add(InventoryRootHash); 220 InventoryRoot.Add(InventoryRootHash);
221 userProfile.RootInventoryFolderID = inventData.RootFolderID; 221 userProfile.RootInventoryFolderID = inventData.RootFolderID;
222 222
223 // Inventory Library Section 223 // Inventory Library Section
224 Hashtable InventoryLibRootHash = new Hashtable(); 224 Hashtable InventoryLibRootHash = new Hashtable();
225 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000"; 225 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
226 ArrayList InventoryLibRoot = new ArrayList(); 226 ArrayList InventoryLibRoot = new ArrayList();
227 InventoryLibRoot.Add(InventoryLibRootHash); 227 InventoryLibRoot.Add(InventoryLibRootHash);
228 228
229 logResponse.InventoryLibRoot = InventoryLibRoot; 229 logResponse.InventoryLibRoot = InventoryLibRoot;
230 logResponse.InventoryLibraryOwner = GetLibraryOwner(); 230 logResponse.InventoryLibraryOwner = GetLibraryOwner();
231 logResponse.InventoryRoot = InventoryRoot; 231 logResponse.InventoryRoot = InventoryRoot;
232 logResponse.InventorySkeleton = AgentInventoryArray; 232 logResponse.InventorySkeleton = AgentInventoryArray;
233 logResponse.InventoryLibrary = GetInventoryLibrary(); 233 logResponse.InventoryLibrary = GetInventoryLibrary();
234 234
235 logResponse.CircuitCode = Util.RandomClass.Next(); 235 logResponse.CircuitCode = Util.RandomClass.Next();
236 logResponse.Lastname = userProfile.SurName; 236 logResponse.Lastname = userProfile.SurName;
237 logResponse.Firstname = userProfile.FirstName; 237 logResponse.Firstname = userProfile.FirstName;
238 logResponse.AgentID = agentID; 238 logResponse.AgentID = agentID;
239 logResponse.SessionID = userProfile.CurrentAgent.SessionID; 239 logResponse.SessionID = userProfile.CurrentAgent.SessionID;
240 logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID; 240 logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID;
241 logResponse.Message = GetMessage(); 241 logResponse.Message = GetMessage();
242 logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID)); 242 logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID));
243 logResponse.StartLocation = startLocationRequest; 243 logResponse.StartLocation = startLocationRequest;
244 244
245 if (CustomiseResponse(logResponse, userProfile, startLocationRequest)) 245 if (CustomiseResponse(logResponse, userProfile, startLocationRequest))
246 { 246 {
247 userProfile.LastLogin = userProfile.CurrentAgent.LoginTime; 247 userProfile.LastLogin = userProfile.CurrentAgent.LoginTime;
248 CommitAgent(ref userProfile); 248 CommitAgent(ref userProfile);
249 249
250 // If we reach this point, then the login has successfully logged onto the grid 250 // If we reach this point, then the login has successfully logged onto the grid
251 if (StatsManager.UserStats != null) 251 if (StatsManager.UserStats != null)
252 StatsManager.UserStats.AddSuccessfulLogin(); 252 StatsManager.UserStats.AddSuccessfulLogin();
253 253
254 m_log.DebugFormat( 254 m_log.DebugFormat(
255 "[LOGIN END]: XMLRPC Authentication of user {0} {1} successful. Sending response to client.", 255 "[LOGIN END]: XMLRPC Authentication of user {0} {1} successful. Sending response to client.",
256 firstname, lastname); 256 firstname, lastname);
257 257
258 return logResponse.ToXmlRpcResponse(); 258 return logResponse.ToXmlRpcResponse();
259 } 259 }
260 else 260 else
261 { 261 {
262 m_log.ErrorFormat("[LOGIN END]: XMLRPC informing user {0} {1} that login failed due to an unavailable region", firstname, lastname); 262 m_log.ErrorFormat("[LOGIN END]: XMLRPC informing user {0} {1} that login failed due to an unavailable region", firstname, lastname);
263 return logResponse.CreateDeadRegionResponse(); 263 return logResponse.CreateDeadRegionResponse();
264 } 264 }
265 } 265 }
266 catch (Exception e) 266 catch (Exception e)
267 { 267 {
268 m_log.Error("[LOGIN END]: XMLRPC Login failed, " + e); 268 m_log.Error("[LOGIN END]: XMLRPC Login failed, " + e);
269 m_log.Error(e.StackTrace); 269 m_log.Error(e.StackTrace);
270 } 270 }
271 } 271 }
272 272
273 m_log.Info("[LOGIN END]: XMLRPC Login failed. Sending back blank XMLRPC response"); 273 m_log.Info("[LOGIN END]: XMLRPC Login failed. Sending back blank XMLRPC response");
274 return response; 274 return response;
275 } 275 }
276 finally 276 finally
277 { 277 {
278 m_loginMutex.ReleaseMutex(); 278 m_loginMutex.ReleaseMutex();
279 } 279 }
280 } 280 }
281 281
282 protected virtual bool TryAuthenticateXmlRpcLogin(XmlRpcRequest request, string firstname, string lastname, out UserProfileData userProfile) 282 protected virtual bool TryAuthenticateXmlRpcLogin(XmlRpcRequest request, string firstname, string lastname, out UserProfileData userProfile)
283 { 283 {
284 Hashtable requestData = (Hashtable)request.Params[0]; 284 Hashtable requestData = (Hashtable)request.Params[0];
285 285
286 bool GoodLogin = false; 286 bool GoodLogin = false;
287 287
288 userProfile = GetTheUser(firstname, lastname); 288 userProfile = GetTheUser(firstname, lastname);
289 if (userProfile == null) 289 if (userProfile == null)
290 { 290 {
291 m_log.Info("[LOGIN END]: XMLRPC Could not find a profile for " + firstname + " " + lastname); 291 m_log.Info("[LOGIN END]: XMLRPC Could not find a profile for " + firstname + " " + lastname);
292 } 292 }
293 else 293 else
294 { 294 {
295 if (requestData.Contains("passwd")) 295 if (requestData.Contains("passwd"))
296 { 296 {
297 string passwd = (string)requestData["passwd"]; 297 string passwd = (string)requestData["passwd"];
298 GoodLogin = AuthenticateUser(userProfile, passwd); 298 GoodLogin = AuthenticateUser(userProfile, passwd);
299 } 299 }
300 if (!GoodLogin && (requestData.Contains("web_login_key"))) 300 if (!GoodLogin && (requestData.Contains("web_login_key")))
301 { 301 {
302 try 302 try
303 { 303 {
304 UUID webloginkey = new UUID((string)requestData["web_login_key"]); 304 UUID webloginkey = new UUID((string)requestData["web_login_key"]);
305 GoodLogin = AuthenticateUser(userProfile, webloginkey); 305 GoodLogin = AuthenticateUser(userProfile, webloginkey);
306 } 306 }
307 catch (Exception e) 307 catch (Exception e)
308 { 308 {
309 m_log.InfoFormat( 309 m_log.InfoFormat(
310 "[LOGIN END]: XMLRPC Bad web_login_key: {0} for user {1} {2}, exception {3}", 310 "[LOGIN END]: XMLRPC Bad web_login_key: {0} for user {1} {2}, exception {3}",
311 requestData["web_login_key"], firstname, lastname, e); 311 requestData["web_login_key"], firstname, lastname, e);
312 } 312 }
313 } 313 }
314 } 314 }
315 315
316 return GoodLogin; 316 return GoodLogin;
317 } 317 }
318 318
319 protected virtual bool TryAuthenticateLLSDLogin(string firstname, string lastname, string passwd, out UserProfileData userProfile) 319 protected virtual bool TryAuthenticateLLSDLogin(string firstname, string lastname, string passwd, out UserProfileData userProfile)
320 { 320 {
321 bool GoodLogin = false; 321 bool GoodLogin = false;
322 userProfile = GetTheUser(firstname, lastname); 322 userProfile = GetTheUser(firstname, lastname);
323 if (userProfile == null) 323 if (userProfile == null)
324 { 324 {
325 m_log.Info("[LOGIN]: LLSD Could not find a profile for " + firstname + " " + lastname); 325 m_log.Info("[LOGIN]: LLSD Could not find a profile for " + firstname + " " + lastname);
326 326
327 return false; 327 return false;
328 } 328 }
329 329
330 GoodLogin = AuthenticateUser(userProfile, passwd); 330 GoodLogin = AuthenticateUser(userProfile, passwd);
331 return GoodLogin; 331 return GoodLogin;
332 } 332 }
333 333
334 /// <summary> 334 /// <summary>
335 /// Called when we receive the client's initial LLSD login_to_simulator request message 335 /// Called when we receive the client's initial LLSD login_to_simulator request message
336 /// </summary> 336 /// </summary>
337 /// <param name="request">The LLSD request</param> 337 /// <param name="request">The LLSD request</param>
338 /// <returns>The response to send</returns> 338 /// <returns>The response to send</returns>
339 public OSD LLSDLoginMethod(OSD request) 339 public OSD LLSDLoginMethod(OSD request)
340 { 340 {
341 // Temporary fix 341 // Temporary fix
342 m_loginMutex.WaitOne(); 342 m_loginMutex.WaitOne();
343 343
344 try 344 try
345 { 345 {
346 // bool GoodLogin = false; 346 // bool GoodLogin = false;
347 347
348 string startLocationRequest = "last"; 348 string startLocationRequest = "last";
349 349
350 UserProfileData userProfile = null; 350 UserProfileData userProfile = null;
351 LoginResponse logResponse = new LoginResponse(); 351 LoginResponse logResponse = new LoginResponse();
352 352
353 if (request.Type == OSDType.Map) 353 if (request.Type == OSDType.Map)
354 { 354 {
355 OSDMap map = (OSDMap)request; 355 OSDMap map = (OSDMap)request;
356 356
357 if (map.ContainsKey("first") && map.ContainsKey("last") && map.ContainsKey("passwd")) 357 if (map.ContainsKey("first") && map.ContainsKey("last") && map.ContainsKey("passwd"))
358 { 358 {
359 string firstname = map["first"].AsString(); 359 string firstname = map["first"].AsString();
360 string lastname = map["last"].AsString(); 360 string lastname = map["last"].AsString();
361 string passwd = map["passwd"].AsString(); 361 string passwd = map["passwd"].AsString();
362 362
363 if (map.ContainsKey("start")) 363 if (map.ContainsKey("start"))
364 { 364 {
365 m_log.Info("[LOGIN]: LLSD StartLocation Requested: " + map["start"].AsString()); 365 m_log.Info("[LOGIN]: LLSD StartLocation Requested: " + map["start"].AsString());
366 startLocationRequest = map["start"].AsString(); 366 startLocationRequest = map["start"].AsString();
367 } 367 }
368 m_log.Info("[LOGIN]: LLSD Login Requested for: '" + firstname + "' '" + lastname + "' / " + passwd); 368 m_log.Info("[LOGIN]: LLSD Login Requested for: '" + firstname + "' '" + lastname + "' / " + passwd);
369 369
370 if (!TryAuthenticateLLSDLogin(firstname, lastname, passwd, out userProfile)) 370 if (!TryAuthenticateLLSDLogin(firstname, lastname, passwd, out userProfile))
371 { 371 {
372 return logResponse.CreateLoginFailedResponseLLSD(); 372 return logResponse.CreateLoginFailedResponseLLSD();
373 } 373 }
374 } 374 }
375 else 375 else
376 return logResponse.CreateLoginFailedResponseLLSD(); 376 return logResponse.CreateLoginFailedResponseLLSD();
377 } 377 }
378 else 378 else
379 return logResponse.CreateLoginFailedResponseLLSD(); 379 return logResponse.CreateLoginFailedResponseLLSD();
380 380
381 381
382 if (userProfile.GodLevel < m_minLoginLevel) 382 if (userProfile.GodLevel < m_minLoginLevel)
383 { 383 {
384 return logResponse.CreateLoginBlockedResponseLLSD(); 384 return logResponse.CreateLoginBlockedResponseLLSD();
385 } 385 }
386 else 386 else
387 { 387 {
388 // If we already have a session... 388 // If we already have a session...
389 if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline) 389 if (userProfile.CurrentAgent != null && userProfile.CurrentAgent.AgentOnline)
390 { 390 {
391 userProfile.CurrentAgent.AgentOnline = false; 391 userProfile.CurrentAgent.AgentOnline = false;
392 392
393 m_userManager.CommitAgent(ref userProfile); 393 m_userManager.CommitAgent(ref userProfile);
394 // try to tell the region that their user is dead. 394 // try to tell the region that their user is dead.
395 LogOffUser(userProfile, " LLSD You were logged off because you logged in from another location"); 395 LogOffUser(userProfile, " LLSD You were logged off because you logged in from another location");
396 396
397 // Reject the login 397 // Reject the login
398 398
399 m_log.InfoFormat( 399 m_log.InfoFormat(
400 "[LOGIN END]: LLSD Notifying user {0} {1} that they are already logged in", 400 "[LOGIN END]: LLSD Notifying user {0} {1} that they are already logged in",
401 userProfile.FirstName, userProfile.SurName); 401 userProfile.FirstName, userProfile.SurName);
402 402
403 userProfile.CurrentAgent = null; 403 userProfile.CurrentAgent = null;
404 return logResponse.CreateAlreadyLoggedInResponseLLSD(); 404 return logResponse.CreateAlreadyLoggedInResponseLLSD();
405 } 405 }
406 406
407 // Otherwise... 407 // Otherwise...
408 // Create a new agent session 408 // Create a new agent session
409 409
410 m_userManager.ResetAttachments(userProfile.ID); 410 m_userManager.ResetAttachments(userProfile.ID);
411 411
412 CreateAgent(userProfile, request); 412 CreateAgent(userProfile, request);
413 413
414 try 414 try
415 { 415 {
416 UUID agentID = userProfile.ID; 416 UUID agentID = userProfile.ID;
417 417
418 //InventoryData inventData = GetInventorySkeleton(agentID); 418 //InventoryData inventData = GetInventorySkeleton(agentID);
419 InventoryData inventData = null; 419 InventoryData inventData = null;
420 420
421 try 421 try
422 { 422 {
423 inventData = GetInventorySkeleton(agentID); 423 inventData = GetInventorySkeleton(agentID);
424 } 424 }
425 catch (Exception e) 425 catch (Exception e)
426 { 426 {
427 m_log.ErrorFormat( 427 m_log.ErrorFormat(
428 "[LOGIN END]: LLSD Error retrieving inventory skeleton of agent {0}, {1} - {2}", 428 "[LOGIN END]: LLSD Error retrieving inventory skeleton of agent {0}, {1} - {2}",
429 agentID, e.GetType(), e.Message); 429 agentID, e.GetType(), e.Message);
430 430
431 return logResponse.CreateLoginFailedResponseLLSD();// .CreateLoginInventoryFailedResponseLLSD (); 431 return logResponse.CreateLoginFailedResponseLLSD();// .CreateLoginInventoryFailedResponseLLSD ();
432 } 432 }
433 433
434 434
435 ArrayList AgentInventoryArray = inventData.InventoryArray; 435 ArrayList AgentInventoryArray = inventData.InventoryArray;
436 436
437 Hashtable InventoryRootHash = new Hashtable(); 437 Hashtable InventoryRootHash = new Hashtable();
438 InventoryRootHash["folder_id"] = inventData.RootFolderID.ToString(); 438 InventoryRootHash["folder_id"] = inventData.RootFolderID.ToString();
439 ArrayList InventoryRoot = new ArrayList(); 439 ArrayList InventoryRoot = new ArrayList();
440 InventoryRoot.Add(InventoryRootHash); 440 InventoryRoot.Add(InventoryRootHash);
441 userProfile.RootInventoryFolderID = inventData.RootFolderID; 441 userProfile.RootInventoryFolderID = inventData.RootFolderID;
442 442
443 443
444 // Inventory Library Section 444 // Inventory Library Section
445 Hashtable InventoryLibRootHash = new Hashtable(); 445 Hashtable InventoryLibRootHash = new Hashtable();
446 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000"; 446 InventoryLibRootHash["folder_id"] = "00000112-000f-0000-0000-000100bba000";
447 ArrayList InventoryLibRoot = new ArrayList(); 447 ArrayList InventoryLibRoot = new ArrayList();
448 InventoryLibRoot.Add(InventoryLibRootHash); 448 InventoryLibRoot.Add(InventoryLibRootHash);
449 449
450 logResponse.InventoryLibRoot = InventoryLibRoot; 450 logResponse.InventoryLibRoot = InventoryLibRoot;
451 logResponse.InventoryLibraryOwner = GetLibraryOwner(); 451 logResponse.InventoryLibraryOwner = GetLibraryOwner();
452 logResponse.InventoryRoot = InventoryRoot; 452 logResponse.InventoryRoot = InventoryRoot;
453 logResponse.InventorySkeleton = AgentInventoryArray; 453 logResponse.InventorySkeleton = AgentInventoryArray;
454 logResponse.InventoryLibrary = GetInventoryLibrary(); 454 logResponse.InventoryLibrary = GetInventoryLibrary();
455 455
456 logResponse.CircuitCode = (Int32)Util.RandomClass.Next(); 456 logResponse.CircuitCode = (Int32)Util.RandomClass.Next();
457 logResponse.Lastname = userProfile.SurName; 457 logResponse.Lastname = userProfile.SurName;
458 logResponse.Firstname = userProfile.FirstName; 458 logResponse.Firstname = userProfile.FirstName;
459 logResponse.AgentID = agentID; 459 logResponse.AgentID = agentID;
460 logResponse.SessionID = userProfile.CurrentAgent.SessionID; 460 logResponse.SessionID = userProfile.CurrentAgent.SessionID;
461 logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID; 461 logResponse.SecureSessionID = userProfile.CurrentAgent.SecureSessionID;
462 logResponse.Message = GetMessage(); 462 logResponse.Message = GetMessage();
463 logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID)); 463 logResponse.BuddList = ConvertFriendListItem(m_userManager.GetUserFriendList(agentID));
464 logResponse.StartLocation = startLocationRequest; 464 logResponse.StartLocation = startLocationRequest;
465 465
466 try 466 try
467 { 467 {
468 CustomiseResponse(logResponse, userProfile, startLocationRequest); 468 CustomiseResponse(logResponse, userProfile, startLocationRequest);
469 } 469 }
470 catch (Exception ex) 470 catch (Exception ex)
471 { 471 {
472 m_log.Info("[LOGIN]: LLSD " + ex.ToString()); 472 m_log.Info("[LOGIN]: LLSD " + ex.ToString());
473 return logResponse.CreateDeadRegionResponseLLSD(); 473 return logResponse.CreateDeadRegionResponseLLSD();
474 } 474 }
475 475
476 userProfile.LastLogin = userProfile.CurrentAgent.LoginTime; 476 userProfile.LastLogin = userProfile.CurrentAgent.LoginTime;
477 CommitAgent(ref userProfile); 477 CommitAgent(ref userProfile);
478 478
479 // If we reach this point, then the login has successfully logged onto the grid 479 // If we reach this point, then the login has successfully logged onto the grid
480 if (StatsManager.UserStats != null) 480 if (StatsManager.UserStats != null)
481 StatsManager.UserStats.AddSuccessfulLogin(); 481 StatsManager.UserStats.AddSuccessfulLogin();
482 482
483 m_log.DebugFormat( 483 m_log.DebugFormat(
484 "[LOGIN END]: LLSD Authentication of user {0} {1} successful. Sending response to client.", 484 "[LOGIN END]: LLSD Authentication of user {0} {1} successful. Sending response to client.",
485 userProfile.FirstName, userProfile.SurName); 485 userProfile.FirstName, userProfile.SurName);
486 486
487 return logResponse.ToLLSDResponse(); 487 return logResponse.ToLLSDResponse();
488 } 488 }
489 catch (Exception ex) 489 catch (Exception ex)
490 { 490 {
491 m_log.Info("[LOGIN]: LLSD " + ex.ToString()); 491 m_log.Info("[LOGIN]: LLSD " + ex.ToString());
492 return logResponse.CreateFailedResponseLLSD(); 492 return logResponse.CreateFailedResponseLLSD();
493 } 493 }
494 } 494 }
495 } 495 }
496 finally 496 finally
497 { 497 {
498 m_loginMutex.ReleaseMutex(); 498 m_loginMutex.ReleaseMutex();
499 } 499 }
500 } 500 }
501 501
502 public Hashtable ProcessHTMLLogin(Hashtable keysvals) 502 public Hashtable ProcessHTMLLogin(Hashtable keysvals)
503 { 503 {
504 // Matches all unspecified characters 504 // Matches all unspecified characters
505 // Currently specified,; lowercase letters, upper case letters, numbers, underline 505 // Currently specified,; lowercase letters, upper case letters, numbers, underline
506 // period, space, parens, and dash. 506 // period, space, parens, and dash.
507 507
508 Regex wfcut = new Regex("[^a-zA-Z0-9_\\.\\$ \\(\\)\\-]"); 508 Regex wfcut = new Regex("[^a-zA-Z0-9_\\.\\$ \\(\\)\\-]");
509 509
510 Hashtable returnactions = new Hashtable(); 510 Hashtable returnactions = new Hashtable();
511 int statuscode = 200; 511 int statuscode = 200;
512 512
513 string firstname = String.Empty; 513 string firstname = String.Empty;
514 string lastname = String.Empty; 514 string lastname = String.Empty;
515 string location = String.Empty; 515 string location = String.Empty;
516 string region = String.Empty; 516 string region = String.Empty;
517 string grid = String.Empty; 517 string grid = String.Empty;
518 string channel = String.Empty; 518 string channel = String.Empty;
519 string version = String.Empty; 519 string version = String.Empty;
520 string lang = String.Empty; 520 string lang = String.Empty;
521 string password = String.Empty; 521 string password = String.Empty;
522 string errormessages = String.Empty; 522 string errormessages = String.Empty;
523 523
524 // the client requires the HTML form field be named 'username' 524 // the client requires the HTML form field be named 'username'
525 // however, the data it sends when it loads the first time is 'firstname' 525 // however, the data it sends when it loads the first time is 'firstname'
526 // another one of those little nuances. 526 // another one of those little nuances.
527 527
528 if (keysvals.Contains("firstname")) 528 if (keysvals.Contains("firstname"))
529 firstname = wfcut.Replace((string)keysvals["firstname"], String.Empty, 99999); 529 firstname = wfcut.Replace((string)keysvals["firstname"], String.Empty, 99999);
530 530
531 if (keysvals.Contains("username")) 531 if (keysvals.Contains("username"))
532 firstname = wfcut.Replace((string)keysvals["username"], String.Empty, 99999); 532 firstname = wfcut.Replace((string)keysvals["username"], String.Empty, 99999);
533 533
534 if (keysvals.Contains("lastname")) 534 if (keysvals.Contains("lastname"))
535 lastname = wfcut.Replace((string)keysvals["lastname"], String.Empty, 99999); 535 lastname = wfcut.Replace((string)keysvals["lastname"], String.Empty, 99999);
536 536
537 if (keysvals.Contains("location")) 537 if (keysvals.Contains("location"))
538 location = wfcut.Replace((string)keysvals["location"], String.Empty, 99999); 538 location = wfcut.Replace((string)keysvals["location"], String.Empty, 99999);
539 539
540 if (keysvals.Contains("region")) 540 if (keysvals.Contains("region"))
541 region = wfcut.Replace((string)keysvals["region"], String.Empty, 99999); 541 region = wfcut.Replace((string)keysvals["region"], String.Empty, 99999);
542 542
543 if (keysvals.Contains("grid")) 543 if (keysvals.Contains("grid"))
544 grid = wfcut.Replace((string)keysvals["grid"], String.Empty, 99999); 544 grid = wfcut.Replace((string)keysvals["grid"], String.Empty, 99999);
545 545
546 if (keysvals.Contains("channel")) 546 if (keysvals.Contains("channel"))
547 channel = wfcut.Replace((string)keysvals["channel"], String.Empty, 99999); 547 channel = wfcut.Replace((string)keysvals["channel"], String.Empty, 99999);
548 548
549 if (keysvals.Contains("version")) 549 if (keysvals.Contains("version"))
550 version = wfcut.Replace((string)keysvals["version"], String.Empty, 99999); 550 version = wfcut.Replace((string)keysvals["version"], String.Empty, 99999);
551 551
552 if (keysvals.Contains("lang")) 552 if (keysvals.Contains("lang"))
553 lang = wfcut.Replace((string)keysvals["lang"], String.Empty, 99999); 553 lang = wfcut.Replace((string)keysvals["lang"], String.Empty, 99999);
554 554
555 if (keysvals.Contains("password")) 555 if (keysvals.Contains("password"))
556 password = wfcut.Replace((string)keysvals["password"], String.Empty, 99999); 556 password = wfcut.Replace((string)keysvals["password"], String.Empty, 99999);
557 557
558 // load our login form. 558 // load our login form.
559 string loginform = GetLoginForm(firstname, lastname, location, region, grid, channel, version, lang, password, errormessages); 559 string loginform = GetLoginForm(firstname, lastname, location, region, grid, channel, version, lang, password, errormessages);
560 560
561 if (keysvals.ContainsKey("show_login_form")) 561 if (keysvals.ContainsKey("show_login_form"))
562 { 562 {
563 UserProfileData user = GetTheUser(firstname, lastname); 563 UserProfileData user = GetTheUser(firstname, lastname);
564 bool goodweblogin = false; 564 bool goodweblogin = false;
565 565
566 if (user != null) 566 if (user != null)
567 goodweblogin = AuthenticateUser(user, password); 567 goodweblogin = AuthenticateUser(user, password);
568 568
569 if (goodweblogin) 569 if (goodweblogin)
570 { 570 {
571 UUID webloginkey = UUID.Random(); 571 UUID webloginkey = UUID.Random();
572 m_userManager.StoreWebLoginKey(user.ID, webloginkey); 572 m_userManager.StoreWebLoginKey(user.ID, webloginkey);
573 //statuscode = 301; 573 //statuscode = 301;
574 574
575 // string redirectURL = "about:blank?redirect-http-hack=" + 575 // string redirectURL = "about:blank?redirect-http-hack=" +
576 // HttpUtility.UrlEncode("secondlife:///app/login?first_name=" + firstname + "&last_name=" + 576 // HttpUtility.UrlEncode("secondlife:///app/login?first_name=" + firstname + "&last_name=" +
577 // lastname + 577 // lastname +
578 // "&location=" + location + "&grid=Other&web_login_key=" + webloginkey.ToString()); 578 // "&location=" + location + "&grid=Other&web_login_key=" + webloginkey.ToString());
579 //m_log.Info("[WEB]: R:" + redirectURL); 579 //m_log.Info("[WEB]: R:" + redirectURL);
580 returnactions["int_response_code"] = statuscode; 580 returnactions["int_response_code"] = statuscode;
581 //returnactions["str_redirect_location"] = redirectURL; 581 //returnactions["str_redirect_location"] = redirectURL;
582 //returnactions["str_response_string"] = "<HTML><BODY>GoodLogin</BODY></HTML>"; 582 //returnactions["str_response_string"] = "<HTML><BODY>GoodLogin</BODY></HTML>";
583 returnactions["str_response_string"] = webloginkey.ToString(); 583 returnactions["str_response_string"] = webloginkey.ToString();
584 } 584 }
585 else 585 else
586 { 586 {
587 errormessages = "The Username and password supplied did not match our records. Check your caps lock and try again"; 587 errormessages = "The Username and password supplied did not match our records. Check your caps lock and try again";
588 588
589 loginform = GetLoginForm(firstname, lastname, location, region, grid, channel, version, lang, password, errormessages); 589 loginform = GetLoginForm(firstname, lastname, location, region, grid, channel, version, lang, password, errormessages);
590 returnactions["int_response_code"] = statuscode; 590 returnactions["int_response_code"] = statuscode;
591 returnactions["str_response_string"] = loginform; 591 returnactions["str_response_string"] = loginform;
592 } 592 }
593 } 593 }
594 else 594 else
595 { 595 {
596 returnactions["int_response_code"] = statuscode; 596 returnactions["int_response_code"] = statuscode;
597 returnactions["str_response_string"] = loginform; 597 returnactions["str_response_string"] = loginform;
598 } 598 }
599 return returnactions; 599 return returnactions;
600 } 600 }
601 601
602 public string GetLoginForm(string firstname, string lastname, string location, string region, 602 public string GetLoginForm(string firstname, string lastname, string location, string region,
603 string grid, string channel, string version, string lang, 603 string grid, string channel, string version, string lang,
604 string password, string errormessages) 604 string password, string errormessages)
605 { 605 {
606 // inject our values in the form at the markers 606 // inject our values in the form at the markers
607 607
608 string loginform = String.Empty; 608 string loginform = String.Empty;
609 string file = Path.Combine(Util.configDir(), "http_loginform.html"); 609 string file = Path.Combine(Util.configDir(), "http_loginform.html");
610 if (!File.Exists(file)) 610 if (!File.Exists(file))
611 { 611 {
612 loginform = GetDefaultLoginForm(); 612 loginform = GetDefaultLoginForm();
613 } 613 }
614 else 614 else
615 { 615 {
616 StreamReader sr = File.OpenText(file); 616 StreamReader sr = File.OpenText(file);
617 loginform = sr.ReadToEnd(); 617 loginform = sr.ReadToEnd();
618 sr.Close(); 618 sr.Close();
619 } 619 }
620 620
621 loginform = loginform.Replace("[$firstname]", firstname); 621 loginform = loginform.Replace("[$firstname]", firstname);
622 loginform = loginform.Replace("[$lastname]", lastname); 622 loginform = loginform.Replace("[$lastname]", lastname);
623 loginform = loginform.Replace("[$location]", location); 623 loginform = loginform.Replace("[$location]", location);
624 loginform = loginform.Replace("[$region]", region); 624 loginform = loginform.Replace("[$region]", region);
625 loginform = loginform.Replace("[$grid]", grid); 625 loginform = loginform.Replace("[$grid]", grid);
626 loginform = loginform.Replace("[$channel]", channel); 626 loginform = loginform.Replace("[$channel]", channel);
627 loginform = loginform.Replace("[$version]", version); 627 loginform = loginform.Replace("[$version]", version);
628 loginform = loginform.Replace("[$lang]", lang); 628 loginform = loginform.Replace("[$lang]", lang);
629 loginform = loginform.Replace("[$password]", password); 629 loginform = loginform.Replace("[$password]", password);
630 loginform = loginform.Replace("[$errors]", errormessages); 630 loginform = loginform.Replace("[$errors]", errormessages);
631 631
632 return loginform; 632 return loginform;
633 } 633 }
634 634
635 public string GetDefaultLoginForm() 635 public string GetDefaultLoginForm()
636 { 636 {
637 string responseString = 637 string responseString =
638 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"; 638 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
639 responseString += "<html xmlns=\"http://www.w3.org/1999/xhtml\">"; 639 responseString += "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
640 responseString += "<head>"; 640 responseString += "<head>";
641 responseString += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"; 641 responseString += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
642 responseString += "<meta http-equiv=\"cache-control\" content=\"no-cache\">"; 642 responseString += "<meta http-equiv=\"cache-control\" content=\"no-cache\">";
643 responseString += "<meta http-equiv=\"Pragma\" content=\"no-cache\">"; 643 responseString += "<meta http-equiv=\"Pragma\" content=\"no-cache\">";
644 responseString += "<title>OpenSim Login</title>"; 644 responseString += "<title>OpenSim Login</title>";
645 responseString += "<body><br />"; 645 responseString += "<body><br />";
646 responseString += "<div id=\"login_box\">"; 646 responseString += "<div id=\"login_box\">";
647 647
648 responseString += "<form action=\"/go.cgi\" method=\"GET\" id=\"login-form\">"; 648 responseString += "<form action=\"/go.cgi\" method=\"GET\" id=\"login-form\">";
649 649
650 responseString += "<div id=\"message\">[$errors]</div>"; 650 responseString += "<div id=\"message\">[$errors]</div>";
651 responseString += "<fieldset id=\"firstname\">"; 651 responseString += "<fieldset id=\"firstname\">";
652 responseString += "<legend>First Name:</legend>"; 652 responseString += "<legend>First Name:</legend>";
653 responseString += "<input type=\"text\" id=\"firstname_input\" size=\"15\" maxlength=\"100\" name=\"username\" value=\"[$firstname]\" />"; 653 responseString += "<input type=\"text\" id=\"firstname_input\" size=\"15\" maxlength=\"100\" name=\"username\" value=\"[$firstname]\" />";
654 responseString += "</fieldset>"; 654 responseString += "</fieldset>";
655 responseString += "<fieldset id=\"lastname\">"; 655 responseString += "<fieldset id=\"lastname\">";
656 responseString += "<legend>Last Name:</legend>"; 656 responseString += "<legend>Last Name:</legend>";
657 responseString += "<input type=\"text\" size=\"15\" maxlength=\"100\" name=\"lastname\" value=\"[$lastname]\" />"; 657 responseString += "<input type=\"text\" size=\"15\" maxlength=\"100\" name=\"lastname\" value=\"[$lastname]\" />";
658 responseString += "</fieldset>"; 658 responseString += "</fieldset>";
659 responseString += "<fieldset id=\"password\">"; 659 responseString += "<fieldset id=\"password\">";
660 responseString += "<legend>Password:</legend>"; 660 responseString += "<legend>Password:</legend>";
661 responseString += "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">"; 661 responseString += "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
662 responseString += "<tr>"; 662 responseString += "<tr>";
663 responseString += "<td colspan=\"2\"><input type=\"password\" size=\"15\" maxlength=\"100\" name=\"password\" value=\"[$password]\" /></td>"; 663 responseString += "<td colspan=\"2\"><input type=\"password\" size=\"15\" maxlength=\"100\" name=\"password\" value=\"[$password]\" /></td>";
664 responseString += "</tr>"; 664 responseString += "</tr>";
665 responseString += "<tr>"; 665 responseString += "<tr>";
666 responseString += "<td valign=\"middle\"><input type=\"checkbox\" name=\"remember_password\" id=\"remember_password\" [$remember_password] style=\"margin-left:0px;\"/></td>"; 666 responseString += "<td valign=\"middle\"><input type=\"checkbox\" name=\"remember_password\" id=\"remember_password\" [$remember_password] style=\"margin-left:0px;\"/></td>";
667 responseString += "<td><label for=\"remember_password\">Remember password</label></td>"; 667 responseString += "<td><label for=\"remember_password\">Remember password</label></td>";
668 responseString += "</tr>"; 668 responseString += "</tr>";
669 responseString += "</table>"; 669 responseString += "</table>";
670 responseString += "</fieldset>"; 670 responseString += "</fieldset>";
671 responseString += "<input type=\"hidden\" name=\"show_login_form\" value=\"FALSE\" />"; 671 responseString += "<input type=\"hidden\" name=\"show_login_form\" value=\"FALSE\" />";
672 responseString += "<input type=\"hidden\" name=\"method\" value=\"login\" />"; 672 responseString += "<input type=\"hidden\" name=\"method\" value=\"login\" />";
673 responseString += "<input type=\"hidden\" id=\"grid\" name=\"grid\" value=\"[$grid]\" />"; 673 responseString += "<input type=\"hidden\" id=\"grid\" name=\"grid\" value=\"[$grid]\" />";
674 responseString += "<input type=\"hidden\" id=\"region\" name=\"region\" value=\"[$region]\" />"; 674 responseString += "<input type=\"hidden\" id=\"region\" name=\"region\" value=\"[$region]\" />";
675 responseString += "<input type=\"hidden\" id=\"location\" name=\"location\" value=\"[$location]\" />"; 675 responseString += "<input type=\"hidden\" id=\"location\" name=\"location\" value=\"[$location]\" />";
676 responseString += "<input type=\"hidden\" id=\"channel\" name=\"channel\" value=\"[$channel]\" />"; 676 responseString += "<input type=\"hidden\" id=\"channel\" name=\"channel\" value=\"[$channel]\" />";
677 responseString += "<input type=\"hidden\" id=\"version\" name=\"version\" value=\"[$version]\" />"; 677 responseString += "<input type=\"hidden\" id=\"version\" name=\"version\" value=\"[$version]\" />";
678 responseString += "<input type=\"hidden\" id=\"lang\" name=\"lang\" value=\"[$lang]\" />"; 678 responseString += "<input type=\"hidden\" id=\"lang\" name=\"lang\" value=\"[$lang]\" />";
679 responseString += "<div id=\"submitbtn\">"; 679 responseString += "<div id=\"submitbtn\">";
680 responseString += "<input class=\"input_over\" type=\"submit\" value=\"Connect\" />"; 680 responseString += "<input class=\"input_over\" type=\"submit\" value=\"Connect\" />";
681 responseString += "</div>"; 681 responseString += "</div>";
682 responseString += "<div id=\"connecting\" style=\"visibility:hidden\"> Connecting...</div>"; 682 responseString += "<div id=\"connecting\" style=\"visibility:hidden\"> Connecting...</div>";
683 683
684 responseString += "<div id=\"helplinks\"><!---"; 684 responseString += "<div id=\"helplinks\"><!---";
685 responseString += "<a href=\"#join now link\" target=\"_blank\"></a> | "; 685 responseString += "<a href=\"#join now link\" target=\"_blank\"></a> | ";
686 responseString += "<a href=\"#forgot password link\" target=\"_blank\"></a>"; 686 responseString += "<a href=\"#forgot password link\" target=\"_blank\"></a>";
687 responseString += "---></div>"; 687 responseString += "---></div>";
688 688
689 responseString += "<div id=\"channelinfo\"> [$channel] | [$version]=[$lang]</div>"; 689 responseString += "<div id=\"channelinfo\"> [$channel] | [$version]=[$lang]</div>";
690 responseString += "</form>"; 690 responseString += "</form>";
691 responseString += "<script language=\"JavaScript\">"; 691 responseString += "<script language=\"JavaScript\">";
692 responseString += "document.getElementById('firstname_input').focus();"; 692 responseString += "document.getElementById('firstname_input').focus();";
693 responseString += "</script>"; 693 responseString += "</script>";
694 responseString += "</div>"; 694 responseString += "</div>";
695 responseString += "</div>"; 695 responseString += "</div>";
696 responseString += "</body>"; 696 responseString += "</body>";
697 responseString += "</html>"; 697 responseString += "</html>";
698 698
699 return responseString; 699 return responseString;
700 } 700 }
701 701
702 /// <summary> 702 /// <summary>
703 /// Saves a target agent to the database 703 /// Saves a target agent to the database
704 /// </summary> 704 /// </summary>
705 /// <param name="profile">The users profile</param> 705 /// <param name="profile">The users profile</param>
706 /// <returns>Successful?</returns> 706 /// <returns>Successful?</returns>
707 public bool CommitAgent(ref UserProfileData profile) 707 public bool CommitAgent(ref UserProfileData profile)
708 { 708 {
709 return m_userManager.CommitAgent(ref profile); 709 return m_userManager.CommitAgent(ref profile);
710 } 710 }
711 711
712 /// <summary> 712 /// <summary>
713 /// Checks a user against it's password hash 713 /// Checks a user against it's password hash
714 /// </summary> 714 /// </summary>
715 /// <param name="profile">The users profile</param> 715 /// <param name="profile">The users profile</param>
716 /// <param name="password">The supplied password</param> 716 /// <param name="password">The supplied password</param>
717 /// <returns>Authenticated?</returns> 717 /// <returns>Authenticated?</returns>
718 public virtual bool AuthenticateUser(UserProfileData profile, string password) 718 public virtual bool AuthenticateUser(UserProfileData profile, string password)
719 { 719 {
720 bool passwordSuccess = false; 720 bool passwordSuccess = false;
721 //m_log.InfoFormat("[LOGIN]: Authenticating {0} {1} ({2})", profile.FirstName, profile.SurName, profile.ID); 721 //m_log.InfoFormat("[LOGIN]: Authenticating {0} {1} ({2})", profile.FirstName, profile.SurName, profile.ID);
722 722
723 // Web Login method seems to also occasionally send the hashed password itself 723 // Web Login method seems to also occasionally send the hashed password itself
724 724
725 // we do this to get our hash in a form that the server password code can consume 725 // we do this to get our hash in a form that the server password code can consume
726 // when the web-login-form submits the password in the clear (supposed to be over SSL!) 726 // when the web-login-form submits the password in the clear (supposed to be over SSL!)
727 if (!password.StartsWith("$1$")) 727 if (!password.StartsWith("$1$"))
728 password = "$1$" + Util.Md5Hash(password); 728 password = "$1$" + Util.Md5Hash(password);
729 729
730 password = password.Remove(0, 3); //remove $1$ 730 password = password.Remove(0, 3); //remove $1$
731 731
732 string s = Util.Md5Hash(password + ":" + profile.PasswordSalt); 732 string s = Util.Md5Hash(password + ":" + profile.PasswordSalt);
733 // Testing... 733 // Testing...
734 //m_log.Info("[LOGIN]: SubHash:" + s + " userprofile:" + profile.passwordHash); 734 //m_log.Info("[LOGIN]: SubHash:" + s + " userprofile:" + profile.passwordHash);
735 //m_log.Info("[LOGIN]: userprofile:" + profile.passwordHash + " SubCT:" + password); 735 //m_log.Info("[LOGIN]: userprofile:" + profile.passwordHash + " SubCT:" + password);
736 736
737 passwordSuccess = (profile.PasswordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase) 737 passwordSuccess = (profile.PasswordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase)
738 || profile.PasswordHash.Equals(password, StringComparison.InvariantCultureIgnoreCase)); 738 || profile.PasswordHash.Equals(password, StringComparison.InvariantCultureIgnoreCase));
739 739
740 return passwordSuccess; 740 return passwordSuccess;
741 } 741 }
742 742
743 public virtual bool AuthenticateUser(UserProfileData profile, UUID webloginkey) 743 public virtual bool AuthenticateUser(UserProfileData profile, UUID webloginkey)
744 { 744 {
745 bool passwordSuccess = false; 745 bool passwordSuccess = false;
746 m_log.InfoFormat("[LOGIN]: Authenticating {0} {1} ({2})", profile.FirstName, profile.SurName, profile.ID); 746 m_log.InfoFormat("[LOGIN]: Authenticating {0} {1} ({2})", profile.FirstName, profile.SurName, profile.ID);
747 747
748 // Match web login key unless it's the default weblogin key UUID.Zero 748 // Match web login key unless it's the default weblogin key UUID.Zero
749 passwordSuccess = ((profile.WebLoginKey == webloginkey) && profile.WebLoginKey != UUID.Zero); 749 passwordSuccess = ((profile.WebLoginKey == webloginkey) && profile.WebLoginKey != UUID.Zero);
750 750
751 return passwordSuccess; 751 return passwordSuccess;
752 } 752 }
753 753
754 /// <summary> 754 /// <summary>
755 /// 755 ///
756 /// </summary> 756 /// </summary>
757 /// <param name="profile"></param> 757 /// <param name="profile"></param>
758 /// <param name="request"></param> 758 /// <param name="request"></param>
759 public void CreateAgent(UserProfileData profile, XmlRpcRequest request) 759 public void CreateAgent(UserProfileData profile, XmlRpcRequest request)
760 { 760 {
761 m_userManager.CreateAgent(profile, request); 761 m_userManager.CreateAgent(profile, request);
762 } 762 }
763 763
764 public void CreateAgent(UserProfileData profile, OSD request) 764 public void CreateAgent(UserProfileData profile, OSD request)
765 { 765 {
766 m_userManager.CreateAgent(profile, request); 766 m_userManager.CreateAgent(profile, request);
767 } 767 }
768 768
769 /// <summary> 769 /// <summary>
770 /// 770 ///
771 /// </summary> 771 /// </summary>
772 /// <param name="firstname"></param> 772 /// <param name="firstname"></param>
773 /// <param name="lastname"></param> 773 /// <param name="lastname"></param>
774 /// <returns></returns> 774 /// <returns></returns>
775 public virtual UserProfileData GetTheUser(string firstname, string lastname) 775 public virtual UserProfileData GetTheUser(string firstname, string lastname)
776 { 776 {
777 return m_userManager.GetUserProfile(firstname, lastname); 777 return m_userManager.GetUserProfile(firstname, lastname);
778 } 778 }
779 779
780 /// <summary> 780 /// <summary>
781 /// 781 ///
782 /// </summary> 782 /// </summary>
783 /// <returns></returns> 783 /// <returns></returns>
784 public virtual string GetMessage() 784 public virtual string GetMessage()
785 { 785 {
786 return m_welcomeMessage; 786 return m_welcomeMessage;
787 } 787 }
788 788
789 private static LoginResponse.BuddyList ConvertFriendListItem(List<FriendListItem> LFL) 789 private static LoginResponse.BuddyList ConvertFriendListItem(List<FriendListItem> LFL)
790 { 790 {
791 LoginResponse.BuddyList buddylistreturn = new LoginResponse.BuddyList(); 791 LoginResponse.BuddyList buddylistreturn = new LoginResponse.BuddyList();
792 foreach (FriendListItem fl in LFL) 792 foreach (FriendListItem fl in LFL)
793 { 793 {
794 LoginResponse.BuddyList.BuddyInfo buddyitem = new LoginResponse.BuddyList.BuddyInfo(fl.Friend); 794 LoginResponse.BuddyList.BuddyInfo buddyitem = new LoginResponse.BuddyList.BuddyInfo(fl.Friend);
795 buddyitem.BuddyID = fl.Friend; 795 buddyitem.BuddyID = fl.Friend;
796 buddyitem.BuddyRightsHave = (int)fl.FriendListOwnerPerms; 796 buddyitem.BuddyRightsHave = (int)fl.FriendListOwnerPerms;
797 buddyitem.BuddyRightsGiven = (int)fl.FriendPerms; 797 buddyitem.BuddyRightsGiven = (int)fl.FriendPerms;
798 buddylistreturn.AddNewBuddy(buddyitem); 798 buddylistreturn.AddNewBuddy(buddyitem);
799 } 799 }
800 return buddylistreturn; 800 return buddylistreturn;
801 } 801 }
802 802
803 /// <summary> 803 /// <summary>
804 /// Converts the inventory library skeleton into the form required by the rpc request. 804 /// Converts the inventory library skeleton into the form required by the rpc request.
805 /// </summary> 805 /// </summary>
806 /// <returns></returns> 806 /// <returns></returns>
807 protected virtual ArrayList GetInventoryLibrary() 807 protected virtual ArrayList GetInventoryLibrary()
808 { 808 {
809 Dictionary<UUID, InventoryFolderImpl> rootFolders 809 Dictionary<UUID, InventoryFolderImpl> rootFolders
810 = m_libraryRootFolder.RequestSelfAndDescendentFolders(); 810 = m_libraryRootFolder.RequestSelfAndDescendentFolders();
811 ArrayList folderHashes = new ArrayList(); 811 ArrayList folderHashes = new ArrayList();
812 812
813 foreach (InventoryFolderBase folder in rootFolders.Values) 813 foreach (InventoryFolderBase folder in rootFolders.Values)
814 { 814 {
815 Hashtable TempHash = new Hashtable(); 815 Hashtable TempHash = new Hashtable();
816 TempHash["name"] = folder.Name; 816 TempHash["name"] = folder.Name;
817 TempHash["parent_id"] = folder.ParentID.ToString(); 817 TempHash["parent_id"] = folder.ParentID.ToString();
818 TempHash["version"] = (Int32)folder.Version; 818 TempHash["version"] = (Int32)folder.Version;
819 TempHash["type_default"] = (Int32)folder.Type; 819 TempHash["type_default"] = (Int32)folder.Type;
820 TempHash["folder_id"] = folder.ID.ToString(); 820 TempHash["folder_id"] = folder.ID.ToString();
821 folderHashes.Add(TempHash); 821 folderHashes.Add(TempHash);
822 } 822 }
823 823
824 return folderHashes; 824 return folderHashes;
825 } 825 }
826 826
827 /// <summary> 827 /// <summary>
828 /// 828 ///
829 /// </summary> 829 /// </summary>
830 /// <returns></returns> 830 /// <returns></returns>
831 protected virtual ArrayList GetLibraryOwner() 831 protected virtual ArrayList GetLibraryOwner()
832 { 832 {
833 //for now create random inventory library owner 833 //for now create random inventory library owner
834 Hashtable TempHash = new Hashtable(); 834 Hashtable TempHash = new Hashtable();
835 TempHash["agent_id"] = "11111111-1111-0000-0000-000100bba000"; 835 TempHash["agent_id"] = "11111111-1111-0000-0000-000100bba000";
836 ArrayList inventoryLibOwner = new ArrayList(); 836 ArrayList inventoryLibOwner = new ArrayList();
837 inventoryLibOwner.Add(TempHash); 837 inventoryLibOwner.Add(TempHash);
838 return inventoryLibOwner; 838 return inventoryLibOwner;
839 } 839 }
840 840
841 public class InventoryData 841 public class InventoryData
842 { 842 {
843 public ArrayList InventoryArray = null; 843 public ArrayList InventoryArray = null;
844 public UUID RootFolderID = UUID.Zero; 844 public UUID RootFolderID = UUID.Zero;
845 845
846 public InventoryData(ArrayList invList, UUID rootID) 846 public InventoryData(ArrayList invList, UUID rootID)
847 { 847 {
848 InventoryArray = invList; 848 InventoryArray = invList;
849 RootFolderID = rootID; 849 RootFolderID = rootID;
850 } 850 }
851 } 851 }
852 852
853 protected void SniffLoginKey(Uri uri, Hashtable requestData) 853 protected void SniffLoginKey(Uri uri, Hashtable requestData)
854 { 854 {
855 string uri_str = uri.ToString(); 855 string uri_str = uri.ToString();
856 string[] parts = uri_str.Split(new char[] { '=' }); 856 string[] parts = uri_str.Split(new char[] { '=' });
857 if (parts.Length > 1) 857 if (parts.Length > 1)
858 { 858 {
859 string web_login_key = parts[1]; 859 string web_login_key = parts[1];
860 requestData.Add("web_login_key", web_login_key); 860 requestData.Add("web_login_key", web_login_key);
861 m_log.InfoFormat("[LOGIN]: Login with web_login_key {0}", web_login_key); 861 m_log.InfoFormat("[LOGIN]: Login with web_login_key {0}", web_login_key);
862 } 862 }
863 } 863 }
864 864
865 /// <summary> 865 /// <summary>
866 /// Customises the login response and fills in missing values. This method also tells the login region to 866 /// Customises the login response and fills in missing values. This method also tells the login region to
867 /// expect a client connection. 867 /// expect a client connection.
868 /// </summary> 868 /// </summary>
869 /// <param name="response">The existing response</param> 869 /// <param name="response">The existing response</param>
870 /// <param name="theUser">The user profile</param> 870 /// <param name="theUser">The user profile</param>
871 /// <param name="startLocationRequest">The requested start location</param> 871 /// <param name="startLocationRequest">The requested start location</param>
872 /// <returns>true on success, false if the region was not successfully told to expect a user connection</returns> 872 /// <returns>true on success, false if the region was not successfully told to expect a user connection</returns>
873 public bool CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest) 873 public bool CustomiseResponse(LoginResponse response, UserProfileData theUser, string startLocationRequest)
874 { 874 {
875 // add active gestures to login-response 875 // add active gestures to login-response
876 AddActiveGestures(response, theUser); 876 AddActiveGestures(response, theUser);
877 877
878 // HomeLocation 878 // HomeLocation
879 RegionInfo homeInfo = null; 879 RegionInfo homeInfo = null;
880 880
881 // use the homeRegionID if it is stored already. If not, use the regionHandle as before 881 // use the homeRegionID if it is stored already. If not, use the regionHandle as before
882 UUID homeRegionId = theUser.HomeRegionID; 882 UUID homeRegionId = theUser.HomeRegionID;
883 ulong homeRegionHandle = theUser.HomeRegion; 883 ulong homeRegionHandle = theUser.HomeRegion;
884 if (homeRegionId != UUID.Zero) 884 if (homeRegionId != UUID.Zero)
885 { 885 {
886 homeInfo = GetRegionInfo(homeRegionId); 886 homeInfo = GetRegionInfo(homeRegionId);
887 } 887 }
888 else 888 else
889 { 889 {
890 homeInfo = GetRegionInfo(homeRegionHandle); 890 homeInfo = GetRegionInfo(homeRegionHandle);
891 } 891 }
892 892
893 if (homeInfo != null) 893 if (homeInfo != null)
894 { 894 {
895 response.Home = 895 response.Home =
896 string.Format( 896 string.Format(
897 "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", 897 "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}",
898 (homeInfo.RegionLocX * Constants.RegionSize), 898 (homeInfo.RegionLocX * Constants.RegionSize),
899 (homeInfo.RegionLocY * Constants.RegionSize), 899 (homeInfo.RegionLocY * Constants.RegionSize),
900 theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z, 900 theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z,
901 theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z); 901 theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z);
902 } 902 }
903 else 903 else
904 { 904 {
905 m_log.InfoFormat("not found the region at {0} {1}", theUser.HomeRegionX, theUser.HomeRegionY); 905 m_log.InfoFormat("not found the region at {0} {1}", theUser.HomeRegionX, theUser.HomeRegionY);
906 // Emergency mode: Home-region isn't available, so we can't request the region info. 906 // Emergency mode: Home-region isn't available, so we can't request the region info.
907 // Use the stored home regionHandle instead. 907 // Use the stored home regionHandle instead.
908 // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again 908 // NOTE: If the home-region moves, this will be wrong until the users update their user-profile again
909 ulong regionX = homeRegionHandle >> 32; 909 ulong regionX = homeRegionHandle >> 32;
910 ulong regionY = homeRegionHandle & 0xffffffff; 910 ulong regionY = homeRegionHandle & 0xffffffff;
911 response.Home = 911 response.Home =
912 string.Format( 912 string.Format(
913 "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}", 913 "{{'region_handle':[r{0},r{1}], 'position':[r{2},r{3},r{4}], 'look_at':[r{5},r{6},r{7}]}}",
914 regionX, regionY, 914 regionX, regionY,
915 theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z, 915 theUser.HomeLocation.X, theUser.HomeLocation.Y, theUser.HomeLocation.Z,
916 theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z); 916 theUser.HomeLookAt.X, theUser.HomeLookAt.Y, theUser.HomeLookAt.Z);
917 917
918 m_log.InfoFormat("[LOGIN] Home region of user {0} {1} is not available; using computed region position {2} {3}", 918 m_log.InfoFormat("[LOGIN] Home region of user {0} {1} is not available; using computed region position {2} {3}",
919 theUser.FirstName, theUser.SurName, 919 theUser.FirstName, theUser.SurName,
920 regionX, regionY); 920 regionX, regionY);
921 } 921 }
922 922
923 // StartLocation 923 // StartLocation
924 RegionInfo regionInfo = null; 924 RegionInfo regionInfo = null;
925 if (startLocationRequest == "home") 925 if (startLocationRequest == "home")
926 { 926 {
927 regionInfo = homeInfo; 927 regionInfo = homeInfo;
928 theUser.CurrentAgent.Position = theUser.HomeLocation; 928 theUser.CurrentAgent.Position = theUser.HomeLocation;
929 response.LookAt = "[r" + theUser.HomeLookAt.X.ToString() + ",r" + theUser.HomeLookAt.Y.ToString() + ",r" + theUser.HomeLookAt.Z.ToString() + "]"; 929 response.LookAt = "[r" + theUser.HomeLookAt.X.ToString() + ",r" + theUser.HomeLookAt.Y.ToString() + ",r" + theUser.HomeLookAt.Z.ToString() + "]";
930 } 930 }
931 else if (startLocationRequest == "last") 931 else if (startLocationRequest == "last")
932 { 932 {
933 UUID lastRegion = theUser.CurrentAgent.Region; 933 UUID lastRegion = theUser.CurrentAgent.Region;
934 regionInfo = GetRegionInfo(lastRegion); 934 regionInfo = GetRegionInfo(lastRegion);
935 response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]"; 935 response.LookAt = "[r" + theUser.CurrentAgent.LookAt.X.ToString() + ",r" + theUser.CurrentAgent.LookAt.Y.ToString() + ",r" + theUser.CurrentAgent.LookAt.Z.ToString() + "]";
936 } 936 }
937 else 937 else
938 { 938 {
939 Regex reURI = new Regex(@"^uri:(?<region>[^&]+)&(?<x>\d+)&(?<y>\d+)&(?<z>\d+)$"); 939 Regex reURI = new Regex(@"^uri:(?<region>[^&]+)&(?<x>\d+)&(?<y>\d+)&(?<z>\d+)$");
940 Match uriMatch = reURI.Match(startLocationRequest); 940 Match uriMatch = reURI.Match(startLocationRequest);
941 if (uriMatch == null) 941 if (uriMatch == null)
942 { 942 {
943 m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, but can't process it", startLocationRequest); 943 m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, but can't process it", startLocationRequest);
944 } 944 }
945 else 945 else
946 { 946 {
947 string region = uriMatch.Groups["region"].ToString(); 947 string region = uriMatch.Groups["region"].ToString();
948 regionInfo = RequestClosestRegion(region); 948 regionInfo = RequestClosestRegion(region);
949 if (regionInfo == null) 949 if (regionInfo == null)
950 { 950 {
951 m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region); 951 m_log.InfoFormat("[LOGIN]: Got Custom Login URL {0}, can't locate region {1}", startLocationRequest, region);
952 } 952 }
953 else 953 else
954 { 954 {
955 theUser.CurrentAgent.Position = new Vector3(float.Parse(uriMatch.Groups["x"].Value), 955 theUser.CurrentAgent.Position = new Vector3(float.Parse(uriMatch.Groups["x"].Value),
956 float.Parse(uriMatch.Groups["y"].Value), float.Parse(uriMatch.Groups["z"].Value)); 956 float.Parse(uriMatch.Groups["y"].Value), float.Parse(uriMatch.Groups["z"].Value));
957 } 957 }
958 } 958 }
959 response.LookAt = "[r0,r1,r0]"; 959 response.LookAt = "[r0,r1,r0]";
960 // can be: last, home, safe, url 960 // can be: last, home, safe, url
961 response.StartLocation = "url"; 961 response.StartLocation = "url";
962 } 962 }
963 963
964 if ((regionInfo != null) && (PrepareLoginToRegion(regionInfo, theUser, response))) 964 if ((regionInfo != null) && (PrepareLoginToRegion(regionInfo, theUser, response)))
965 { 965 {
966 return true; 966 return true;
967 } 967 }
968 968
969 // StartLocation not available, send him to a nearby region instead 969 // StartLocation not available, send him to a nearby region instead
970 // regionInfo = m_gridService.RequestClosestRegion(""); 970 // regionInfo = m_gridService.RequestClosestRegion("");
971 //m_log.InfoFormat("[LOGIN]: StartLocation not available sending to region {0}", regionInfo.regionName); 971 //m_log.InfoFormat("[LOGIN]: StartLocation not available sending to region {0}", regionInfo.regionName);
972 972
973 // Send him to default region instead 973 // Send him to default region instead
974 ulong defaultHandle = (((ulong)m_defaultHomeX * Constants.RegionSize) << 32) | 974 ulong defaultHandle = (((ulong)m_defaultHomeX * Constants.RegionSize) << 32) |
975 ((ulong)m_defaultHomeY * Constants.RegionSize); 975 ((ulong)m_defaultHomeY * Constants.RegionSize);
976 976
977 if ((regionInfo != null) && (defaultHandle == regionInfo.RegionHandle)) 977 if ((regionInfo != null) && (defaultHandle == regionInfo.RegionHandle))
978 { 978 {
979 m_log.ErrorFormat("[LOGIN]: Not trying the default region since this is the same as the selected region"); 979 m_log.ErrorFormat("[LOGIN]: Not trying the default region since this is the same as the selected region");
980 return false; 980 return false;
981 } 981 }
982 982
983 m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead"); 983 m_log.Error("[LOGIN]: Sending user to default region " + defaultHandle + " instead");
984 regionInfo = GetRegionInfo(defaultHandle); 984 regionInfo = GetRegionInfo(defaultHandle);
985 985
986 if (regionInfo == null) 986 if (regionInfo == null)
987 { 987 {
988 m_log.ErrorFormat("[LOGIN]: No default region available. Aborting."); 988 m_log.ErrorFormat("[LOGIN]: No default region available. Aborting.");
989 return false; 989 return false;
990 } 990 }
991 991
992 theUser.CurrentAgent.Position = new Vector3(128, 128, 0); 992 theUser.CurrentAgent.Position = new Vector3(128, 128, 0);
993 response.StartLocation = "safe"; 993 response.StartLocation = "safe";
994 994
995 return PrepareLoginToRegion(regionInfo, theUser, response); 995 return PrepareLoginToRegion(regionInfo, theUser, response);
996 } 996 }
997 997
998 protected abstract RegionInfo RequestClosestRegion(string region); 998 protected abstract RegionInfo RequestClosestRegion(string region);
999 protected abstract RegionInfo GetRegionInfo(ulong homeRegionHandle); 999 protected abstract RegionInfo GetRegionInfo(ulong homeRegionHandle);
1000 protected abstract RegionInfo GetRegionInfo(UUID homeRegionId); 1000 protected abstract RegionInfo GetRegionInfo(UUID homeRegionId);
1001 protected abstract bool PrepareLoginToRegion(RegionInfo regionInfo, UserProfileData user, LoginResponse response); 1001 protected abstract bool PrepareLoginToRegion(RegionInfo regionInfo, UserProfileData user, LoginResponse response);
1002 1002
1003 /// <summary> 1003 /// <summary>
1004 /// Add active gestures of the user to the login response. 1004 /// Add active gestures of the user to the login response.
1005 /// </summary> 1005 /// </summary>
1006 /// <param name="response"> 1006 /// <param name="response">
1007 /// A <see cref="LoginResponse"/> 1007 /// A <see cref="LoginResponse"/>
1008 /// </param> 1008 /// </param>
1009 /// <param name="theUser"> 1009 /// <param name="theUser">
1010 /// A <see cref="UserProfileData"/> 1010 /// A <see cref="UserProfileData"/>
1011 /// </param> 1011 /// </param>
1012 protected void AddActiveGestures(LoginResponse response, UserProfileData theUser) 1012 protected void AddActiveGestures(LoginResponse response, UserProfileData theUser)
1013 { 1013 {
1014 List<InventoryItemBase> gestures = m_inventoryService.GetActiveGestures(theUser.ID); 1014 List<InventoryItemBase> gestures = m_inventoryService.GetActiveGestures(theUser.ID);
1015 //m_log.DebugFormat("[LOGIN]: AddActiveGestures, found {0}", gestures == null ? 0 : gestures.Count); 1015 //m_log.DebugFormat("[LOGIN]: AddActiveGestures, found {0}", gestures == null ? 0 : gestures.Count);
1016 ArrayList list = new ArrayList(); 1016 ArrayList list = new ArrayList();
1017 if (gestures != null) 1017 if (gestures != null)
1018 { 1018 {
1019 foreach (InventoryItemBase gesture in gestures) 1019 foreach (InventoryItemBase gesture in gestures)
1020 { 1020 {
1021 Hashtable item = new Hashtable(); 1021 Hashtable item = new Hashtable();
1022 item["item_id"] = gesture.ID.ToString(); 1022 item["item_id"] = gesture.ID.ToString();
1023 item["asset_id"] = gesture.AssetID.ToString(); 1023 item["asset_id"] = gesture.AssetID.ToString();
1024 list.Add(item); 1024 list.Add(item);
1025 } 1025 }
1026 } 1026 }
1027 response.ActiveGestures = list; 1027 response.ActiveGestures = list;
1028 } 1028 }
1029 1029
1030 /// <summary> 1030 /// <summary>
1031 /// Get the initial login inventory skeleton (in other words, the folder structure) for the given user. 1031 /// Get the initial login inventory skeleton (in other words, the folder structure) for the given user.
1032 /// </summary> 1032 /// </summary>
1033 /// <param name="userID"></param> 1033 /// <param name="userID"></param>
1034 /// <returns></returns> 1034 /// <returns></returns>
1035 /// <exception cref='System.Exception'>This will be thrown if there is a problem with the inventory service</exception> 1035 /// <exception cref='System.Exception'>This will be thrown if there is a problem with the inventory service</exception>
1036 protected InventoryData GetInventorySkeleton(UUID userID) 1036 protected InventoryData GetInventorySkeleton(UUID userID)
1037 { 1037 {
1038 List<InventoryFolderBase> folders = m_inventoryService.GetInventorySkeleton(userID); 1038 List<InventoryFolderBase> folders = m_inventoryService.GetInventorySkeleton(userID);
1039 1039
1040 // If we have user auth but no inventory folders for some reason, create a new set of folders. 1040 // If we have user auth but no inventory folders for some reason, create a new set of folders.
1041 if (folders == null || folders.Count == 0) 1041 if (folders == null || folders.Count == 0)
1042 { 1042 {
1043 m_log.InfoFormat( 1043 m_log.InfoFormat(
1044 "[LOGIN]: A root inventory folder for user {0} was not found. Requesting creation.", userID); 1044 "[LOGIN]: A root inventory folder for user {0} was not found. Requesting creation.", userID);
1045 1045
1046 // Although the create user function creates a new agent inventory along with a new user profile, some 1046 // Although the create user function creates a new agent inventory along with a new user profile, some
1047 // tools are creating the user profile directly in the database without creating the inventory. At 1047 // tools are creating the user profile directly in the database without creating the inventory. At
1048 // this time we'll accomodate them by lazily creating the user inventory now if it doesn't already 1048 // this time we'll accomodate them by lazily creating the user inventory now if it doesn't already
1049 // exist. 1049 // exist.
1050 if (!m_inventoryService.CreateNewUserInventory(userID)) 1050 if (!m_inventoryService.CreateNewUserInventory(userID))
1051 { 1051 {
1052 throw new Exception( 1052 throw new Exception(
1053 String.Format( 1053 String.Format(
1054 "The inventory creation request for user {0} did not succeed." 1054 "The inventory creation request for user {0} did not succeed."
1055 + " Please contact your inventory service provider for more information.", 1055 + " Please contact your inventory service provider for more information.",
1056 userID)); 1056 userID));
1057 } 1057 }
1058 1058
1059 m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID); 1059 m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID);
1060 1060
1061 folders = m_inventoryService.GetInventorySkeleton(userID); 1061 folders = m_inventoryService.GetInventorySkeleton(userID);
1062 1062
1063 if (folders == null || folders.Count == 0) 1063 if (folders == null || folders.Count == 0)
1064 { 1064 {
1065 throw new Exception( 1065 throw new Exception(
1066 String.Format( 1066 String.Format(
1067 "A root inventory folder for user {0} could not be retrieved from the inventory service", 1067 "A root inventory folder for user {0} could not be retrieved from the inventory service",
1068 userID)); 1068 userID));
1069 } 1069 }
1070 } 1070 }
1071 1071
1072 UUID rootID = UUID.Zero; 1072 UUID rootID = UUID.Zero;
1073 ArrayList AgentInventoryArray = new ArrayList(); 1073 ArrayList AgentInventoryArray = new ArrayList();
1074 Hashtable TempHash; 1074 Hashtable TempHash;
1075 foreach (InventoryFolderBase InvFolder in folders) 1075 foreach (InventoryFolderBase InvFolder in folders)
1076 { 1076 {
1077 if (InvFolder.ParentID == UUID.Zero) 1077 if (InvFolder.ParentID == UUID.Zero)
1078 { 1078 {
1079 rootID = InvFolder.ID; 1079 rootID = InvFolder.ID;
1080 } 1080 }
1081 TempHash = new Hashtable(); 1081 TempHash = new Hashtable();
1082 TempHash["name"] = InvFolder.Name; 1082 TempHash["name"] = InvFolder.Name;
1083 TempHash["parent_id"] = InvFolder.ParentID.ToString(); 1083 TempHash["parent_id"] = InvFolder.ParentID.ToString();
1084 TempHash["version"] = (Int32)InvFolder.Version; 1084 TempHash["version"] = (Int32)InvFolder.Version;
1085 TempHash["type_default"] = (Int32)InvFolder.Type; 1085 TempHash["type_default"] = (Int32)InvFolder.Type;
1086 TempHash["folder_id"] = InvFolder.ID.ToString(); 1086 TempHash["folder_id"] = InvFolder.ID.ToString();
1087 AgentInventoryArray.Add(TempHash); 1087 AgentInventoryArray.Add(TempHash);
1088 } 1088 }
1089 1089
1090 return new InventoryData(AgentInventoryArray, rootID); 1090 return new InventoryData(AgentInventoryArray, rootID);
1091 } 1091 }
1092 } 1092 }
1093} 1093}
diff --git a/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs b/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
index a910136..4811434 100644
--- a/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
+++ b/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
@@ -1,224 +1,224 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the 12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Reflection; 31using System.Reflection;
32using System.Text.RegularExpressions; 32using System.Text.RegularExpressions;
33using log4net; 33using log4net;
34using Nwc.XmlRpc; 34using Nwc.XmlRpc;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Data; 36using OpenSim.Data;
37using OpenSim.Framework; 37using OpenSim.Framework;
38using OpenSim.Framework.Communications; 38using OpenSim.Framework.Communications;
39using OpenSim.Framework.Communications.Services; 39using OpenSim.Framework.Communications.Services;
40using OpenSim.Framework.Communications.Cache; 40using OpenSim.Framework.Communications.Cache;
41using OpenSim.Framework.Communications.Capabilities; 41using OpenSim.Framework.Communications.Capabilities;
42using OpenSim.Framework.Servers; 42using OpenSim.Framework.Servers;
43 43
44namespace OpenSim.Grid.UserServer.Modules 44namespace OpenSim.Grid.UserServer.Modules
45{ 45{
46 46
47 /// <summary> 47 /// <summary>
48 /// Hypergrid login service used in grid mode. 48 /// Hypergrid login service used in grid mode.
49 /// </summary> 49 /// </summary>
50 public class UserLoginAuthService : HGLoginAuthService 50 public class UserLoginAuthService : HGLoginAuthService
51 { 51 {
52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53 53
54 public UserConfig m_config; 54 public UserConfig m_config;
55 private readonly IRegionProfileRouter m_regionProfileService; 55 private readonly IRegionProfileRouter m_regionProfileService;
56 56
57 protected BaseHttpServer m_httpServer; 57 protected BaseHttpServer m_httpServer;
58 58
59 public UserLoginAuthService( 59 public UserLoginAuthService(
60 UserManagerBase userManager, IInterServiceInventoryServices inventoryService, 60 UserManagerBase userManager, IInterServiceInventoryServices inventoryService,
61 LibraryRootFolder libraryRootFolder, 61 LibraryRootFolder libraryRootFolder,
62 UserConfig config, string welcomeMess, IRegionProfileRouter regionProfileService) 62 UserConfig config, string welcomeMess, IRegionProfileRouter regionProfileService)
63 : base(userManager, welcomeMess, inventoryService, null, true, libraryRootFolder, null) 63 : base(userManager, welcomeMess, inventoryService, null, true, libraryRootFolder, null)
64 { 64 {
65 m_config = config; 65 m_config = config;
66 m_defaultHomeX = m_config.DefaultX; 66 m_defaultHomeX = m_config.DefaultX;
67 m_defaultHomeY = m_config.DefaultY; 67 m_defaultHomeY = m_config.DefaultY;
68 m_inventoryService = inventoryService; 68 m_inventoryService = inventoryService;
69 m_regionProfileService = regionProfileService; 69 m_regionProfileService = regionProfileService;
70 70
71 NetworkServersInfo serversinfo = new NetworkServersInfo(1000, 1000); 71 NetworkServersInfo serversinfo = new NetworkServersInfo(1000, 1000);
72 serversinfo.GridRecvKey = m_config.GridRecvKey; 72 serversinfo.GridRecvKey = m_config.GridRecvKey;
73 serversinfo.GridSendKey = m_config.GridSendKey; 73 serversinfo.GridSendKey = m_config.GridSendKey;
74 serversinfo.GridURL = m_config.GridServerURL.ToString(); 74 serversinfo.GridURL = m_config.GridServerURL.ToString();
75 serversinfo.InventoryURL = m_config.InventoryUrl.ToString(); 75 serversinfo.InventoryURL = m_config.InventoryUrl.ToString();
76 serversinfo.UserURL = m_config.AuthUrl.ToString(); 76 serversinfo.UserURL = m_config.AuthUrl.ToString();
77 SetServersInfo(serversinfo); 77 SetServersInfo(serversinfo);
78 } 78 }
79 79
80 public void RegisterHandlers(BaseHttpServer httpServer) 80 public void RegisterHandlers(BaseHttpServer httpServer)
81 { 81 {
82 m_httpServer = httpServer; 82 m_httpServer = httpServer;
83 83
84 httpServer.AddXmlRPCHandler("hg_login", XmlRpcLoginMethod); 84 httpServer.AddXmlRPCHandler("hg_login", XmlRpcLoginMethod);
85 httpServer.AddXmlRPCHandler("hg_new_auth_key", XmlRpcGenerateKeyMethod); 85 httpServer.AddXmlRPCHandler("hg_new_auth_key", XmlRpcGenerateKeyMethod);
86 httpServer.AddXmlRPCHandler("hg_verify_auth_key", XmlRpcVerifyKeyMethod); 86 httpServer.AddXmlRPCHandler("hg_verify_auth_key", XmlRpcVerifyKeyMethod);
87 } 87 }
88 88
89 89
90 public override void LogOffUser(UserProfileData theUser, string message) 90 public override void LogOffUser(UserProfileData theUser, string message)
91 { 91 {
92 RegionProfileData SimInfo; 92 RegionProfileData SimInfo;
93 try 93 try
94 { 94 {
95 SimInfo = m_regionProfileService.RequestSimProfileData( 95 SimInfo = m_regionProfileService.RequestSimProfileData(
96 theUser.CurrentAgent.Handle, m_config.GridServerURL, 96 theUser.CurrentAgent.Handle, m_config.GridServerURL,
97 m_config.GridSendKey, m_config.GridRecvKey); 97 m_config.GridSendKey, m_config.GridRecvKey);
98 98
99 if (SimInfo == null) 99 if (SimInfo == null)
100 { 100 {
101 m_log.Error("[GRID]: Region user was in isn't currently logged in"); 101 m_log.Error("[GRID]: Region user was in isn't currently logged in");
102 return; 102 return;
103 } 103 }
104 } 104 }
105 catch (Exception) 105 catch (Exception)
106 { 106 {
107 m_log.Error("[GRID]: Unable to look up region to log user off"); 107 m_log.Error("[GRID]: Unable to look up region to log user off");
108 return; 108 return;
109 } 109 }
110 110
111 // Prepare notification 111 // Prepare notification
112 Hashtable SimParams = new Hashtable(); 112 Hashtable SimParams = new Hashtable();
113 SimParams["agent_id"] = theUser.ID.ToString(); 113 SimParams["agent_id"] = theUser.ID.ToString();
114 SimParams["region_secret"] = theUser.CurrentAgent.SecureSessionID.ToString(); 114 SimParams["region_secret"] = theUser.CurrentAgent.SecureSessionID.ToString();
115 SimParams["region_secret2"] = SimInfo.regionSecret; 115 SimParams["region_secret2"] = SimInfo.regionSecret;
116 //m_log.Info(SimInfo.regionSecret); 116 //m_log.Info(SimInfo.regionSecret);
117 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString(); 117 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
118 SimParams["message"] = message; 118 SimParams["message"] = message;
119 ArrayList SendParams = new ArrayList(); 119 ArrayList SendParams = new ArrayList();
120 SendParams.Add(SimParams); 120 SendParams.Add(SimParams);
121 121
122 m_log.InfoFormat( 122 m_log.InfoFormat(
123 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}", 123 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
124 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI, 124 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
125 theUser.FirstName + " " + theUser.SurName); 125 theUser.FirstName + " " + theUser.SurName);
126 126
127 try 127 try
128 { 128 {
129 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams); 129 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
130 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000); 130 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
131 131
132 if (GridResp.IsFault) 132 if (GridResp.IsFault)
133 { 133 {
134 m_log.ErrorFormat( 134 m_log.ErrorFormat(
135 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.", 135 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
136 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString); 136 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
137 } 137 }
138 } 138 }
139 catch (Exception) 139 catch (Exception)
140 { 140 {
141 m_log.Error("[LOGIN]: Error telling region to logout user!"); 141 m_log.Error("[LOGIN]: Error telling region to logout user!");
142 } 142 }
143 143
144 // Prepare notification 144 // Prepare notification
145 SimParams = new Hashtable(); 145 SimParams = new Hashtable();
146 SimParams["agent_id"] = theUser.ID.ToString(); 146 SimParams["agent_id"] = theUser.ID.ToString();
147 SimParams["region_secret"] = SimInfo.regionSecret; 147 SimParams["region_secret"] = SimInfo.regionSecret;
148 //m_log.Info(SimInfo.regionSecret); 148 //m_log.Info(SimInfo.regionSecret);
149 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString(); 149 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
150 SimParams["message"] = message; 150 SimParams["message"] = message;
151 SendParams = new ArrayList(); 151 SendParams = new ArrayList();
152 SendParams.Add(SimParams); 152 SendParams.Add(SimParams);
153 153
154 m_log.InfoFormat( 154 m_log.InfoFormat(
155 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}", 155 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
156 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI, 156 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
157 theUser.FirstName + " " + theUser.SurName); 157 theUser.FirstName + " " + theUser.SurName);
158 158
159 try 159 try
160 { 160 {
161 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams); 161 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
162 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000); 162 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
163 163
164 if (GridResp.IsFault) 164 if (GridResp.IsFault)
165 { 165 {
166 m_log.ErrorFormat( 166 m_log.ErrorFormat(
167 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.", 167 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
168 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString); 168 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
169 } 169 }
170 } 170 }
171 catch (Exception) 171 catch (Exception)
172 { 172 {
173 m_log.Error("[LOGIN]: Error telling region to logout user!"); 173 m_log.Error("[LOGIN]: Error telling region to logout user!");
174 } 174 }
175 //base.LogOffUser(theUser); 175 //base.LogOffUser(theUser);
176 } 176 }
177 177
178 protected override RegionInfo RequestClosestRegion(string region) 178 protected override RegionInfo RequestClosestRegion(string region)
179 { 179 {
180 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region, 180 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region,
181 m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey); 181 m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey);
182 182
183 if (profileData != null) 183 if (profileData != null)
184 { 184 {
185 return profileData.ToRegionInfo(); 185 return profileData.ToRegionInfo();
186 } 186 }
187 else 187 else
188 { 188 {
189 return null; 189 return null;
190 } 190 }
191 } 191 }
192 192
193 protected override RegionInfo GetRegionInfo(ulong homeRegionHandle) 193 protected override RegionInfo GetRegionInfo(ulong homeRegionHandle)
194 { 194 {
195 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle, 195 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle,
196 m_config.GridServerURL, m_config.GridSendKey, 196 m_config.GridServerURL, m_config.GridSendKey,
197 m_config.GridRecvKey); 197 m_config.GridRecvKey);
198 if (profileData != null) 198 if (profileData != null)
199 { 199 {
200 return profileData.ToRegionInfo(); 200 return profileData.ToRegionInfo();
201 } 201 }
202 else 202 else
203 { 203 {
204 return null; 204 return null;
205 } 205 }
206 } 206 }
207 207
208 protected override RegionInfo GetRegionInfo(UUID homeRegionId) 208 protected override RegionInfo GetRegionInfo(UUID homeRegionId)
209 { 209 {
210 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId, 210 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId,
211 m_config.GridServerURL, m_config.GridSendKey, 211 m_config.GridServerURL, m_config.GridSendKey,
212 m_config.GridRecvKey); 212 m_config.GridRecvKey);
213 if (profileData != null) 213 if (profileData != null)
214 { 214 {
215 return profileData.ToRegionInfo(); 215 return profileData.ToRegionInfo();
216 } 216 }
217 else 217 else
218 { 218 {
219 return null; 219 return null;
220 } 220 }
221 } 221 }
222 222
223 } 223 }
224} 224}
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
index 56eb508..a521ead 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs
@@ -184,7 +184,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
184 bool success = SynchronousRestObjectPoster.BeginPostObject<GridInstantMessage, bool>( 184 bool success = SynchronousRestObjectPoster.BeginPostObject<GridInstantMessage, bool>(
185 "POST", m_RestURL+"/SaveMessage/", im); 185 "POST", m_RestURL+"/SaveMessage/", im);
186 186
187 if(im.dialog == (byte)InstantMessageDialog.MessageFromAgent) 187 if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
188 { 188 {
189 IClientAPI client = FindClient(new UUID(im.fromAgentID)); 189 IClientAPI client = FindClient(new UUID(im.fromAgentID));
190 if (client == null) 190 if (client == null)
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs
index 525dda7..a1306cd 100644
--- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs
+++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneInventoryModule.cs
@@ -1,165 +1,165 @@
1/** 1/**
2 * Copyright (c) 2008, Contributors. All rights reserved. 2 * Copyright (c) 2008, Contributors. All rights reserved.
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without modification, 5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met: 6 * are permitted provided that the following conditions are met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright notice, 8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright notice, 10 * * Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation 11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution. 12 * and/or other materials provided with the distribution.
13 * * Neither the name of the Organizations nor the names of Individual 13 * * Neither the name of the Organizations nor the names of Individual
14 * Contributors may be used to endorse or promote products derived from 14 * Contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission. 15 * this software without specific prior written permission.
16 * 16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
20 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
22 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 22 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25 * OF THE POSSIBILITY OF SUCH DAMAGE. 25 * OF THE POSSIBILITY OF SUCH DAMAGE.
26 * 26 *
27 */ 27 */
28 28
29using System; 29using System;
30using System.Collections; 30using System.Collections;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using System.Reflection; 32using System.Reflection;
33using log4net; 33using log4net;
34using Nini.Config; 34using Nini.Config;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Data; 36using OpenSim.Data;
37using OpenSim.Framework; 37using OpenSim.Framework;
38using OpenSim.Framework.Communications; 38using OpenSim.Framework.Communications;
39using OpenSim.Framework.Communications.Cache; 39using OpenSim.Framework.Communications.Cache;
40using OpenSim.Framework.Communications.Services; 40using OpenSim.Framework.Communications.Services;
41using Caps = OpenSim.Framework.Communications.Capabilities.Caps; 41using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
42using LLSDHelpers = OpenSim.Framework.Communications.Capabilities.LLSDHelpers; 42using LLSDHelpers = OpenSim.Framework.Communications.Capabilities.LLSDHelpers;
43using OpenSim.Framework.Servers; 43using OpenSim.Framework.Servers;
44using OpenSim.Framework.Servers.Interfaces; 44using OpenSim.Framework.Servers.Interfaces;
45using OpenSim.Region.Framework.Interfaces; 45using OpenSim.Region.Framework.Interfaces;
46using OpenSim.Region.Framework.Scenes; 46using OpenSim.Region.Framework.Scenes;
47using OpenSim.Region.CoreModules.Communications.REST; 47using OpenSim.Region.CoreModules.Communications.REST;
48 48
49using OpenMetaverse.StructuredData; 49using OpenMetaverse.StructuredData;
50 50
51namespace OpenSim.Region.CoreModules.Hypergrid 51namespace OpenSim.Region.CoreModules.Hypergrid
52{ 52{
53 public class HGStandaloneInventoryModule : IRegionModule 53 public class HGStandaloneInventoryModule : IRegionModule
54 { 54 {
55 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 55 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
56 private static bool initialized = false; 56 private static bool initialized = false;
57 private static bool enabled = false; 57 private static bool enabled = false;
58 58
59 private bool m_doLookup = false; 59 private bool m_doLookup = false;
60 Scene m_scene; 60 Scene m_scene;
61 HGInventoryService m_inventoryService; 61 HGInventoryService m_inventoryService;
62 InventoryServiceBase m_inventoryBase; 62 InventoryServiceBase m_inventoryBase;
63 63
64 public bool DoLookup 64 public bool DoLookup
65 { 65 {
66 get { return m_doLookup; } 66 get { return m_doLookup; }
67 set { m_doLookup = value; } 67 set { m_doLookup = value; }
68 } 68 }
69 69
70 #region IRegionModule interface 70 #region IRegionModule interface
71 71
72 public void Initialise(Scene scene, IConfigSource config) 72 public void Initialise(Scene scene, IConfigSource config)
73 { 73 {
74 if (!initialized) 74 if (!initialized)
75 { 75 {
76 initialized = true; 76 initialized = true;
77 m_scene = scene; 77 m_scene = scene;
78 78
79 // This module is only on for standalones 79 // This module is only on for standalones
80 enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false); 80 enabled = !config.Configs["Startup"].GetBoolean("gridmode", true) && config.Configs["Startup"].GetBoolean("hypergrid", false);
81 } 81 }
82 } 82 }
83 83
84 public void PostInitialise() 84 public void PostInitialise()
85 { 85 {
86 if (enabled) 86 if (enabled)
87 { 87 {
88 m_log.Info("[HGStandaloneInvModule]: Starting..."); 88 m_log.Info("[HGStandaloneInvModule]: Starting...");
89 //m_inventoryService = new InventoryService(m_scene); 89 //m_inventoryService = new InventoryService(m_scene);
90 m_inventoryBase = (InventoryServiceBase)m_scene.CommsManager.SecureInventoryService; 90 m_inventoryBase = (InventoryServiceBase)m_scene.CommsManager.SecureInventoryService;
91 91
92 m_inventoryService = new HGInventoryService(m_inventoryBase, 92 m_inventoryService = new HGInventoryService(m_inventoryBase,
93 ((AssetServerBase)m_scene.CommsManager.AssetCache.AssetServer).AssetProviderPlugin, 93 ((AssetServerBase)m_scene.CommsManager.AssetCache.AssetServer).AssetProviderPlugin,
94 (UserManagerBase)m_scene.CommsManager.UserService, m_scene.CommsManager.HttpServer, 94 (UserManagerBase)m_scene.CommsManager.UserService, m_scene.CommsManager.HttpServer,
95 m_scene.CommsManager.NetworkServersInfo.InventoryURL); 95 m_scene.CommsManager.NetworkServersInfo.InventoryURL);
96 96
97 AddHttpHandlers(m_scene.CommsManager.HttpServer); 97 AddHttpHandlers(m_scene.CommsManager.HttpServer);
98 m_inventoryService.AddHttpHandlers(); 98 m_inventoryService.AddHttpHandlers();
99 } 99 }
100 } 100 }
101 101
102 public void Close() 102 public void Close()
103 { 103 {
104 } 104 }
105 105
106 public string Name 106 public string Name
107 { 107 {
108 get { return "HGStandaloneInventoryModule"; } 108 get { return "HGStandaloneInventoryModule"; }
109 } 109 }
110 110
111 public bool IsSharedModule 111 public bool IsSharedModule
112 { 112 {
113 get { return true; } 113 get { return true; }
114 } 114 }
115 115
116 #endregion 116 #endregion
117 117
118 public virtual void AddHttpHandlers(IHttpServer httpServer) 118 public virtual void AddHttpHandlers(IHttpServer httpServer)
119 { 119 {
120 120
121 httpServer.AddStreamHandler( 121 httpServer.AddStreamHandler(
122 new RestDeserialiseSecureHandler<Guid, InventoryCollection>( 122 new RestDeserialiseSecureHandler<Guid, InventoryCollection>(
123 "POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession)); 123 "POST", "/GetInventory/", m_inventoryService.GetUserInventory, CheckAuthSession));
124 124
125 httpServer.AddStreamHandler( 125 httpServer.AddStreamHandler(
126 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( 126 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
127 "POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession)); 127 "POST", "/NewFolder/", m_inventoryBase.AddFolder, CheckAuthSession));
128 128
129 httpServer.AddStreamHandler( 129 httpServer.AddStreamHandler(
130 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( 130 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
131 "POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession)); 131 "POST", "/UpdateFolder/", m_inventoryBase.UpdateFolder, CheckAuthSession));
132 132
133 httpServer.AddStreamHandler( 133 httpServer.AddStreamHandler(
134 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( 134 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
135 "POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession)); 135 "POST", "/MoveFolder/", m_inventoryBase.MoveFolder, CheckAuthSession));
136 136
137 httpServer.AddStreamHandler( 137 httpServer.AddStreamHandler(
138 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>( 138 new RestDeserialiseSecureHandler<InventoryFolderBase, bool>(
139 "POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession)); 139 "POST", "/PurgeFolder/", m_inventoryBase.PurgeFolder, CheckAuthSession));
140 140
141 httpServer.AddStreamHandler( 141 httpServer.AddStreamHandler(
142 new RestDeserialiseSecureHandler<InventoryItemBase, bool>( 142 new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
143 "POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession)); 143 "POST", "/NewItem/", m_inventoryBase.AddItem, CheckAuthSession));
144 144
145 httpServer.AddStreamHandler( 145 httpServer.AddStreamHandler(
146 new RestDeserialiseSecureHandler<InventoryItemBase, bool>( 146 new RestDeserialiseSecureHandler<InventoryItemBase, bool>(
147 "POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession)); 147 "POST", "/DeleteItem/", m_inventoryBase.DeleteItem, CheckAuthSession));
148 148
149 } 149 }
150 150
151 /// <summary> 151 /// <summary>
152 /// Check that the source of an inventory request for a particular agent is a current session belonging to 152 /// Check that the source of an inventory request for a particular agent is a current session belonging to
153 /// that agent. 153 /// that agent.
154 /// </summary> 154 /// </summary>
155 /// <param name="session_id"></param> 155 /// <param name="session_id"></param>
156 /// <param name="avatar_id"></param> 156 /// <param name="avatar_id"></param>
157 /// <returns></returns> 157 /// <returns></returns>
158 public bool CheckAuthSession(string session_id, string avatar_id) 158 public bool CheckAuthSession(string session_id, string avatar_id)
159 { 159 {
160 return true; 160 return true;
161 } 161 }
162 162
163 } 163 }
164 164
165} 165}
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs
index 9e134be..f0e957b 100644
--- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs
+++ b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs
@@ -1,253 +1,253 @@
1/* 1/*
2 * Copyright (c) Contributors, http://opensimulator.org/ 2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders. 3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright 7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright 9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the 12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products 13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY 16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Net; 31using System.Net;
32using System.Reflection; 32using System.Reflection;
33using System.Text.RegularExpressions; 33using System.Text.RegularExpressions;
34using log4net; 34using log4net;
35using Nini.Config; 35using Nini.Config;
36using OpenMetaverse; 36using OpenMetaverse;
37using OpenSim.Framework; 37using OpenSim.Framework;
38using OpenSim.Framework.Communications; 38using OpenSim.Framework.Communications;
39using OpenSim.Framework.Communications.Services; 39using OpenSim.Framework.Communications.Services;
40using OpenSim.Framework.Communications.Cache; 40using OpenSim.Framework.Communications.Cache;
41using OpenSim.Framework.Communications.Capabilities; 41using OpenSim.Framework.Communications.Capabilities;
42using OpenSim.Framework.Servers.Interfaces; 42using OpenSim.Framework.Servers.Interfaces;
43using OpenSim.Region.Framework.Scenes; 43using OpenSim.Region.Framework.Scenes;
44using OpenSim.Region.Framework.Interfaces; 44using OpenSim.Region.Framework.Interfaces;
45 45
46namespace OpenSim.Region.CoreModules.Hypergrid 46namespace OpenSim.Region.CoreModules.Hypergrid
47{ 47{
48 public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector 48 public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector
49 { 49 {
50 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 50 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
51 51
52 protected List<Scene> m_scenes = new List<Scene>(); 52 protected List<Scene> m_scenes = new List<Scene>();
53 protected Scene m_firstScene; 53 protected Scene m_firstScene;
54 54
55 protected bool m_enabled = false; // Module is only enabled if running in standalone mode 55 protected bool m_enabled = false; // Module is only enabled if running in standalone mode
56 56
57 57
58 public bool RegionLoginsEnabled 58 public bool RegionLoginsEnabled
59 { 59 {
60 get 60 get
61 { 61 {
62 if (m_firstScene != null) 62 if (m_firstScene != null)
63 { 63 {
64 return m_firstScene.CommsManager.GridService.RegionLoginsEnabled; 64 return m_firstScene.CommsManager.GridService.RegionLoginsEnabled;
65 } 65 }
66 else 66 else
67 { 67 {
68 return false; 68 return false;
69 } 69 }
70 } 70 }
71 } 71 }
72 72
73 protected HGLoginAuthService m_loginService; 73 protected HGLoginAuthService m_loginService;
74 74
75 #region IRegionModule Members 75 #region IRegionModule Members
76 76
77 public void Initialise(Scene scene, IConfigSource source) 77 public void Initialise(Scene scene, IConfigSource source)
78 { 78 {
79 if (m_firstScene == null) 79 if (m_firstScene == null)
80 { 80 {
81 m_firstScene = scene; 81 m_firstScene = scene;
82 82
83 IConfig startupConfig = source.Configs["Startup"]; 83 IConfig startupConfig = source.Configs["Startup"];
84 if (startupConfig != null) 84 if (startupConfig != null)
85 { 85 {
86 m_enabled = !startupConfig.GetBoolean("gridmode", false); 86 m_enabled = !startupConfig.GetBoolean("gridmode", false);
87 } 87 }
88 88
89 if (m_enabled) 89 if (m_enabled)
90 { 90 {
91 m_log.Debug("[HGLogin] HGlogin module enabled"); 91 m_log.Debug("[HGLogin] HGlogin module enabled");
92 bool authenticate = true; 92 bool authenticate = true;
93 string welcomeMessage = "Welcome to OpenSim"; 93 string welcomeMessage = "Welcome to OpenSim";
94 IConfig standaloneConfig = source.Configs["StandAlone"]; 94 IConfig standaloneConfig = source.Configs["StandAlone"];
95 if (standaloneConfig != null) 95 if (standaloneConfig != null)
96 { 96 {
97 authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true); 97 authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true);
98 welcomeMessage = standaloneConfig.GetString("welcome_message"); 98 welcomeMessage = standaloneConfig.GetString("welcome_message");
99 } 99 }
100 100
101 //TODO: fix casting. 101 //TODO: fix casting.
102 LibraryRootFolder rootFolder = m_firstScene.CommsManager.UserProfileCacheService.LibraryRoot as LibraryRootFolder; 102 LibraryRootFolder rootFolder = m_firstScene.CommsManager.UserProfileCacheService.LibraryRoot as LibraryRootFolder;
103 103
104 IHttpServer httpServer = m_firstScene.CommsManager.HttpServer; 104 IHttpServer httpServer = m_firstScene.CommsManager.HttpServer;
105 105
106 //TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference 106 //TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference
107 m_loginService = new HGLoginAuthService((UserManagerBase)m_firstScene.CommsManager.UserService, welcomeMessage, m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.NetworkServersInfo, authenticate, rootFolder, this); 107 m_loginService = new HGLoginAuthService((UserManagerBase)m_firstScene.CommsManager.UserService, welcomeMessage, m_firstScene.CommsManager.InterServiceInventoryService, m_firstScene.CommsManager.NetworkServersInfo, authenticate, rootFolder, this);
108 108
109 httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod); 109 httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod);
110 httpServer.AddXmlRPCHandler("hg_new_auth_key", m_loginService.XmlRpcGenerateKeyMethod); 110 httpServer.AddXmlRPCHandler("hg_new_auth_key", m_loginService.XmlRpcGenerateKeyMethod);
111 httpServer.AddXmlRPCHandler("hg_verify_auth_key", m_loginService.XmlRpcVerifyKeyMethod); 111 httpServer.AddXmlRPCHandler("hg_verify_auth_key", m_loginService.XmlRpcVerifyKeyMethod);
112 112
113 } 113 }
114 } 114 }
115 115
116 if (m_enabled) 116 if (m_enabled)
117 { 117 {
118 AddScene(scene); 118 AddScene(scene);
119 } 119 }
120 } 120 }
121 121
122 public void PostInitialise() 122 public void PostInitialise()
123 { 123 {
124 124
125 } 125 }
126 126
127 public void Close() 127 public void Close()
128 { 128 {
129 129
130 } 130 }
131 131
132 public string Name 132 public string Name
133 { 133 {
134 get { return "HGStandaloneLoginModule"; } 134 get { return "HGStandaloneLoginModule"; }
135 } 135 }
136 136
137 public bool IsSharedModule 137 public bool IsSharedModule
138 { 138 {
139 get { return true; } 139 get { return true; }
140 } 140 }
141 141
142 #endregion 142 #endregion
143 143
144 protected void AddScene(Scene scene) 144 protected void AddScene(Scene scene)
145 { 145 {
146 lock (m_scenes) 146 lock (m_scenes)
147 { 147 {
148 if (!m_scenes.Contains(scene)) 148 if (!m_scenes.Contains(scene))
149 { 149 {
150 m_scenes.Add(scene); 150 m_scenes.Add(scene);
151 } 151 }
152 } 152 }
153 } 153 }
154 154
155 public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent) 155 public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent)
156 { 156 {
157 return true; 157 return true;
158 } 158 }
159 159
160 public void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message) 160 public void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message)
161 { 161 {
162 Scene scene; 162 Scene scene;
163 if (TryGetRegion(regionHandle, out scene)) 163 if (TryGetRegion(regionHandle, out scene))
164 { 164 {
165 scene.HandleLogOffUserFromGrid(AvatarID, RegionSecret, message); 165 scene.HandleLogOffUserFromGrid(AvatarID, RegionSecret, message);
166 } 166 }
167 } 167 }
168 168
169 public RegionInfo RequestNeighbourInfo(ulong regionhandle) 169 public RegionInfo RequestNeighbourInfo(ulong regionhandle)
170 { 170 {
171 Scene scene; 171 Scene scene;
172 if (TryGetRegion(regionhandle, out scene)) 172 if (TryGetRegion(regionhandle, out scene))
173 { 173 {
174 return scene.RegionInfo; 174 return scene.RegionInfo;
175 } 175 }
176 return null; 176 return null;
177 } 177 }
178 178
179 public RegionInfo RequestClosestRegion(string region) 179 public RegionInfo RequestClosestRegion(string region)
180 { 180 {
181 Scene scene; 181 Scene scene;
182 if (TryGetRegion(region, out scene)) 182 if (TryGetRegion(region, out scene))
183 { 183 {
184 return scene.RegionInfo; 184 return scene.RegionInfo;
185 } 185 }
186 return null; 186 return null;
187 } 187 }
188 188
189 public RegionInfo RequestNeighbourInfo(UUID regionID) 189 public RegionInfo RequestNeighbourInfo(UUID regionID)
190 { 190 {
191 Scene scene; 191 Scene scene;
192 if (TryGetRegion(regionID, out scene)) 192 if (TryGetRegion(regionID, out scene))
193 { 193 {
194 return scene.RegionInfo; 194 return scene.RegionInfo;
195 } 195 }
196 return null; 196 return null;
197 } 197 }
198 198
199 protected bool TryGetRegion(ulong regionHandle, out Scene scene) 199 protected bool TryGetRegion(ulong regionHandle, out Scene scene)
200 { 200 {
201 lock (m_scenes) 201 lock (m_scenes)
202 { 202 {
203 foreach (Scene nextScene in m_scenes) 203 foreach (Scene nextScene in m_scenes)
204 { 204 {
205 if (nextScene.RegionInfo.RegionHandle == regionHandle) 205 if (nextScene.RegionInfo.RegionHandle == regionHandle)
206 { 206 {
207 scene = nextScene; 207 scene = nextScene;
208 return true; 208 return true;
209 } 209 }
210 } 210 }
211 } 211 }
212 212
213 scene = null; 213 scene = null;
214 return false; 214 return false;
215 } 215 }
216 216
217 protected bool TryGetRegion(UUID regionID, out Scene scene) 217 protected bool TryGetRegion(UUID regionID, out Scene scene)
218 { 218 {
219 lock (m_scenes) 219 lock (m_scenes)
220 { 220 {
221 foreach (Scene nextScene in m_scenes) 221 foreach (Scene nextScene in m_scenes)
222 { 222 {
223 if (nextScene.RegionInfo.RegionID == regionID) 223 if (nextScene.RegionInfo.RegionID == regionID)
224 { 224 {
225 scene = nextScene; 225 scene = nextScene;
226 return true; 226 return true;
227 } 227 }
228 } 228 }
229 } 229 }
230 230
231 scene = null; 231 scene = null;
232 return false; 232 return false;
233 } 233 }
234 234
235 protected bool TryGetRegion(string regionName, out Scene scene) 235 protected bool TryGetRegion(string regionName, out Scene scene)
236 { 236 {
237 lock (m_scenes) 237 lock (m_scenes)
238 { 238 {
239 foreach (Scene nextScene in m_scenes) 239 foreach (Scene nextScene in m_scenes)
240 { 240 {
241 if (nextScene.RegionInfo.RegionName == regionName) 241 if (nextScene.RegionInfo.RegionName == regionName)
242 { 242 {
243 scene = nextScene; 243 scene = nextScene;
244 return true; 244 return true;
245 } 245 }
246 } 246 }
247 } 247 }
248 248
249 scene = null; 249 scene = null;
250 return false; 250 return false;
251 } 251 }
252 } 252 }
253} 253}
diff --git a/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs b/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
index dedd37f..f9059e0 100644
--- a/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/DynamicTexture/DynamicTextureModule.cs
@@ -66,18 +66,17 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
66 /// <param name="data"></param> 66 /// <param name="data"></param>
67 public void ReturnData(UUID id, byte[] data) 67 public void ReturnData(UUID id, byte[] data)
68 { 68 {
69 DynamicTextureUpdater updater = null;
69 70
70 DynamicTextureUpdater updater = null; 71 lock (Updaters)
71
72 lock(Updaters)
73 { 72 {
74 if (Updaters.ContainsKey(id)) 73 if (Updaters.ContainsKey(id))
75 { 74 {
76 updater = Updaters[id]; 75 updater = Updaters[id];
77 } 76 }
78 } 77 }
79 78
80 if(updater != null) 79 if (updater != null)
81 { 80 {
82 if (RegisteredScenes.ContainsKey(updater.SimUUID)) 81 if (RegisteredScenes.ContainsKey(updater.SimUUID))
83 { 82 {
@@ -86,27 +85,26 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
86 } 85 }
87 } 86 }
88 87
89 if(updater.UpdateTimer == 0) 88 if (updater.UpdateTimer == 0)
90 { 89 {
91 lock(Updaters) 90 lock (Updaters)
92 { 91 {
93 if (!Updaters.ContainsKey(updater.UpdaterID)) 92 if (!Updaters.ContainsKey(updater.UpdaterID))
94 { 93 {
95 Updaters.Remove(updater.UpdaterID); 94 Updaters.Remove(updater.UpdaterID);
96 } 95 }
97 } 96 }
98 } 97 }
99
100 } 98 }
101 99
102 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url, 100 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
103 string extraParams, int updateTimer) 101 string extraParams, int updateTimer)
104 { 102 {
105 return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, updateTimer, false, 255); 103 return AddDynamicTextureURL(simID, primID, contentType, url, extraParams, updateTimer, false, 255);
106 } 104 }
107 105
108 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url, 106 public UUID AddDynamicTextureURL(UUID simID, UUID primID, string contentType, string url,
109 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue) 107 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
110 { 108 {
111 if (RenderPlugins.ContainsKey(contentType)) 109 if (RenderPlugins.ContainsKey(contentType))
112 { 110 {
@@ -123,12 +121,12 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
123 updater.BlendWithOldTexture = SetBlending; 121 updater.BlendWithOldTexture = SetBlending;
124 updater.FrontAlpha = AlphaValue; 122 updater.FrontAlpha = AlphaValue;
125 123
126 lock(Updaters) 124 lock (Updaters)
127 { 125 {
128 if (!Updaters.ContainsKey(updater.UpdaterID)) 126 if (!Updaters.ContainsKey(updater.UpdaterID))
129 { 127 {
130 Updaters.Add(updater.UpdaterID, updater); 128 Updaters.Add(updater.UpdaterID, updater);
131 } 129 }
132 } 130 }
133 131
134 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams); 132 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
@@ -138,13 +136,13 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
138 } 136 }
139 137
140 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data, 138 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
141 string extraParams, int updateTimer) 139 string extraParams, int updateTimer)
142 { 140 {
143 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, false, 255); 141 return AddDynamicTextureData(simID, primID, contentType, data, extraParams, updateTimer, false, 255);
144 } 142 }
145 143
146 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data, 144 public UUID AddDynamicTextureData(UUID simID, UUID primID, string contentType, string data,
147 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue) 145 string extraParams, int updateTimer, bool SetBlending, byte AlphaValue)
148 { 146 {
149 if (RenderPlugins.ContainsKey(contentType)) 147 if (RenderPlugins.ContainsKey(contentType))
150 { 148 {
@@ -159,12 +157,12 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
159 updater.BlendWithOldTexture = SetBlending; 157 updater.BlendWithOldTexture = SetBlending;
160 updater.FrontAlpha = AlphaValue; 158 updater.FrontAlpha = AlphaValue;
161 159
162 lock(Updaters) 160 lock (Updaters)
163 { 161 {
164 if (!Updaters.ContainsKey(updater.UpdaterID)) 162 if (!Updaters.ContainsKey(updater.UpdaterID))
165 { 163 {
166 Updaters.Add(updater.UpdaterID, updater); 164 Updaters.Add(updater.UpdaterID, updater);
167 } 165 }
168 } 166 }
169 167
170 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams); 168 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
@@ -173,7 +171,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
173 return UUID.Zero; 171 return UUID.Zero;
174 } 172 }
175 173
176
177 public void GetDrawStringSize(string contentType, string text, string fontName, int fontSize, 174 public void GetDrawStringSize(string contentType, string text, string fontName, int fontSize,
178 out double xSize, out double ySize) 175 out double xSize, out double ySize)
179 { 176 {
@@ -307,7 +304,6 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
307 part.ScheduleFullUpdate(); 304 part.ScheduleFullUpdate();
308 305
309 scene.CommsManager.AssetCache.ExpireAsset(oldID); 306 scene.CommsManager.AssetCache.ExpireAsset(oldID);
310
311 } 307 }
312 308
313 private byte[] BlendTextures(byte[] frontImage, byte[] backImage, bool setNewAlpha, byte newAlpha) 309 private byte[] BlendTextures(byte[] frontImage, byte[] backImage, bool setNewAlpha, byte newAlpha)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 3c1b87f..e32f1b4 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4998,29 +4998,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4998 4998
4999 if (dir.x == 0) 4999 if (dir.x == 0)
5000 { 5000 {
5001 if (dir.y == 0) 5001 if (dir.y == 0)
5002 { 5002 {
5003 // Direction vector is 0,0 so return 5003 // Direction vector is 0,0 so return
5004 // false since we're staying in the sim 5004 // false since we're staying in the sim
5005 return 0; 5005 return 0;
5006 } 5006 }
5007 else 5007 else
5008 { 5008 {
5009 // Y is the only valid direction 5009 // Y is the only valid direction
5010 edge.y = dir.y / Math.Abs(dir.y); 5010 edge.y = dir.y / Math.Abs(dir.y);
5011 } 5011 }
5012 } 5012 }
5013 else 5013 else
5014 { 5014 {
5015 LSL_Float mag; 5015 LSL_Float mag;
5016 if (dir.x > 0) 5016 if (dir.x > 0)
5017 { 5017 {
5018 mag = (Constants.RegionSize - pos.x) / dir.x; 5018 mag = (Constants.RegionSize - pos.x) / dir.x;
5019 } 5019 }
5020 else 5020 else
5021 { 5021 {
5022 mag = (pos.x/dir.x); 5022 mag = (pos.x/dir.x);
5023 } 5023 }
5024 5024
5025 mag = Math.Abs(mag); 5025 mag = Math.Abs(mag);
5026 5026
@@ -5028,7 +5028,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
5028 5028
5029 if (edge.y > Constants.RegionSize || edge.y < 0) 5029 if (edge.y > Constants.RegionSize || edge.y < 0)
5030 { 5030 {
5031 // Y goes out of bounds first 5031 // Y goes out of bounds first
5032 edge.y = dir.y / Math.Abs(dir.y); 5032 edge.y = dir.y / Math.Abs(dir.y);
5033 } 5033 }
5034 else 5034 else
@@ -5039,18 +5039,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
5039 } 5039 }
5040 } 5040 }
5041 5041
5042 List<SimpleRegionInfo> neighbors = World.CommsManager.GridService.RequestNeighbours(World.RegionInfo.RegionLocX, World.RegionInfo.RegionLocY); 5042 List<SimpleRegionInfo> neighbors = World.CommsManager.GridService.RequestNeighbours(World.RegionInfo.RegionLocX, World.RegionInfo.RegionLocY);
5043 5043
5044 uint neighborX = World.RegionInfo.RegionLocX + (uint)dir.x; 5044 uint neighborX = World.RegionInfo.RegionLocX + (uint)dir.x;
5045 uint neighborY = World.RegionInfo.RegionLocY + (uint)dir.y; 5045 uint neighborY = World.RegionInfo.RegionLocY + (uint)dir.y;
5046 5046
5047 foreach (SimpleRegionInfo sri in neighbors) 5047 foreach (SimpleRegionInfo sri in neighbors)
5048 { 5048 {
5049 if (sri.RegionLocX == neighborX && sri.RegionLocY == neighborY) 5049 if (sri.RegionLocX == neighborX && sri.RegionLocY == neighborY)
5050 return 0; 5050 return 0;
5051 } 5051 }
5052 5052
5053 return 1; 5053 return 1;
5054 } 5054 }
5055 5055
5056 /// <summary> 5056 /// <summary>
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
index 09351fd..5353fc9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
@@ -49,7 +49,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
49 { 49 {
50 return localID.ToString() + itemID.ToString(); 50 return localID.ToString() + itemID.ToString();
51 } 51 }
52
53 52
54 private class TimerClass 53 private class TimerClass
55 { 54 {
diff --git a/bin/HttpServer_OpenSim.xml b/bin/HttpServer_OpenSim.xml
index a9ac538..747f35d 100644
--- a/bin/HttpServer_OpenSim.xml
+++ b/bin/HttpServer_OpenSim.xml
@@ -1,7019 +1,7019 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<doc> 2<doc>
3 <assembly> 3 <assembly>
4 <name>HttpServer_OpenSim</name> 4 <name>HttpServer_OpenSim</name>
5 </assembly> 5 </assembly>
6 <members> 6 <members>
7 <member name="T:HttpServer.ResponseCookies"> 7 <member name="T:HttpServer.ResponseCookies">
8 <summary> 8 <summary>
9 Cookies that should be set. 9 Cookies that should be set.
10 </summary> 10 </summary>
11 </member> 11 </member>
12 <member name="M:HttpServer.ResponseCookies.Add(HttpServer.ResponseCookie)"> 12 <member name="M:HttpServer.ResponseCookies.Add(HttpServer.ResponseCookie)">
13 <summary> 13 <summary>
14 Adds a cookie in the collection. 14 Adds a cookie in the collection.
15 </summary> 15 </summary>
16 <param name="cookie">cookie to add</param> 16 <param name="cookie">cookie to add</param>
17 <exception cref="T:System.ArgumentNullException">cookie is null</exception> 17 <exception cref="T:System.ArgumentNullException">cookie is null</exception>
18 </member> 18 </member>
19 <member name="M:HttpServer.ResponseCookies.Add(HttpServer.RequestCookie,System.DateTime)"> 19 <member name="M:HttpServer.ResponseCookies.Add(HttpServer.RequestCookie,System.DateTime)">
20 <summary> 20 <summary>
21 Copy a request cookie 21 Copy a request cookie
22 </summary> 22 </summary>
23 <param name="cookie"></param> 23 <param name="cookie"></param>
24 <param name="expires">When the cookie should expire</param> 24 <param name="expires">When the cookie should expire</param>
25 </member> 25 </member>
26 <member name="M:HttpServer.ResponseCookies.GetEnumerator"> 26 <member name="M:HttpServer.ResponseCookies.GetEnumerator">
27 <summary> 27 <summary>
28 Gets a collection enumerator on the cookie list. 28 Gets a collection enumerator on the cookie list.
29 </summary> 29 </summary>
30 <returns>collection enumerator</returns> 30 <returns>collection enumerator</returns>
31 </member> 31 </member>
32 <member name="M:HttpServer.ResponseCookies.Clear"> 32 <member name="M:HttpServer.ResponseCookies.Clear">
33 <summary> 33 <summary>
34 Remove all cookies 34 Remove all cookies
35 </summary> 35 </summary>
36 </member> 36 </member>
37 <member name="M:HttpServer.ResponseCookies.System#Collections#Generic#IEnumerable{HttpServer#ResponseCookie}#GetEnumerator"> 37 <member name="M:HttpServer.ResponseCookies.System#Collections#Generic#IEnumerable{HttpServer#ResponseCookie}#GetEnumerator">
38 <summary> 38 <summary>
39 Returns an enumerator that iterates through the collection. 39 Returns an enumerator that iterates through the collection.
40 </summary> 40 </summary>
41 41
42 <returns> 42 <returns>
43 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection. 43 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
44 </returns> 44 </returns>
45 <filterpriority>1</filterpriority> 45 <filterpriority>1</filterpriority>
46 </member> 46 </member>
47 <member name="P:HttpServer.ResponseCookies.Count"> 47 <member name="P:HttpServer.ResponseCookies.Count">
48 <summary> 48 <summary>
49 Gets the count of cookies in the collection. 49 Gets the count of cookies in the collection.
50 </summary> 50 </summary>
51 </member> 51 </member>
52 <member name="P:HttpServer.ResponseCookies.Item(System.String)"> 52 <member name="P:HttpServer.ResponseCookies.Item(System.String)">
53 <summary> 53 <summary>
54 Gets the cookie of a given identifier (null if not existing). 54 Gets the cookie of a given identifier (null if not existing).
55 </summary> 55 </summary>
56 </member> 56 </member>
57 <member name="T:HttpServer.Rendering.Haml.HamlGenerator"> 57 <member name="T:HttpServer.Rendering.Haml.HamlGenerator">
58 <summary> 58 <summary>
59 Generates C#/HTML from HAML code. 59 Generates C#/HTML from HAML code.
60 </summary> 60 </summary>
61 <remarks>HAML documentation: http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html</remarks> 61 <remarks>HAML documentation: http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html</remarks>
62 </member> 62 </member>
63 <member name="T:HttpServer.Rendering.ITemplateGenerator"> 63 <member name="T:HttpServer.Rendering.ITemplateGenerator">
64 <summary> 64 <summary>
65 A code generator is used to convert template code to something that we can 65 A code generator is used to convert template code to something that we can
66 work with, as HTML or c# code. 66 work with, as HTML or c# code.
67 </summary> 67 </summary>
68 <seealso cref="T:HttpServer.Rendering.TemplateManager"/> 68 <seealso cref="T:HttpServer.Rendering.TemplateManager"/>
69 </member> 69 </member>
70 <member name="M:HttpServer.Rendering.ITemplateGenerator.GenerateCode(System.IO.TextWriter)"> 70 <member name="M:HttpServer.Rendering.ITemplateGenerator.GenerateCode(System.IO.TextWriter)">
71 <summary> 71 <summary>
72 Generate C# code from the template. 72 Generate C# code from the template.
73 </summary> 73 </summary>
74 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param> 74 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param>
75 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception> 75 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception>
76 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception> 76 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception>
77 </member> 77 </member>
78 <member name="M:HttpServer.Rendering.ITemplateGenerator.Parse(System.String)"> 78 <member name="M:HttpServer.Rendering.ITemplateGenerator.Parse(System.String)">
79 <summary> 79 <summary>
80 Parse a file and convert into to our own template object code. 80 Parse a file and convert into to our own template object code.
81 </summary> 81 </summary>
82 <param name="fullPath">Path and filename to a template</param> 82 <param name="fullPath">Path and filename to a template</param>
83 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 83 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
84 <exception cref="T:System.IO.FileNotFoundException"></exception> 84 <exception cref="T:System.IO.FileNotFoundException"></exception>
85 <exception cref="T:System.IO.DirectoryNotFoundException"></exception> 85 <exception cref="T:System.IO.DirectoryNotFoundException"></exception>
86 <exception cref="T:System.UnauthorizedAccessException"></exception> 86 <exception cref="T:System.UnauthorizedAccessException"></exception>
87 <exception cref="T:System.IO.PathTooLongException"></exception> 87 <exception cref="T:System.IO.PathTooLongException"></exception>
88 <exception cref="T:System.NotSupportedException"></exception> 88 <exception cref="T:System.NotSupportedException"></exception>
89 </member> 89 </member>
90 <member name="M:HttpServer.Rendering.ITemplateGenerator.Parse(System.IO.TextReader)"> 90 <member name="M:HttpServer.Rendering.ITemplateGenerator.Parse(System.IO.TextReader)">
91 <summary> 91 <summary>
92 Parse a file and convert into to our own template object code. 92 Parse a file and convert into to our own template object code.
93 </summary> 93 </summary>
94 <param name="reader">A <see cref="T:System.IO.TextReader"/> containing our template</param> 94 <param name="reader">A <see cref="T:System.IO.TextReader"/> containing our template</param>
95 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 95 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
96 </member> 96 </member>
97 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.#ctor"> 97 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.#ctor">
98 <summary> 98 <summary>
99 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.HamlGenerator"/> class. 99 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.HamlGenerator"/> class.
100 </summary> 100 </summary>
101 </member> 101 </member>
102 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.#ctor(HttpServer.ILogWriter)"> 102 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.#ctor(HttpServer.ILogWriter)">
103 <summary> 103 <summary>
104 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.HamlGenerator"/> class. 104 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.HamlGenerator"/> class.
105 </summary> 105 </summary>
106 <param name="logWriter">The log writer.</param> 106 <param name="logWriter">The log writer.</param>
107 </member> 107 </member>
108 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckIntendation(HttpServer.Rendering.Haml.LineInfo,System.Int32@,System.Int32@)"> 108 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckIntendation(HttpServer.Rendering.Haml.LineInfo,System.Int32@,System.Int32@)">
109 <summary> 109 <summary>
110 Check and validate indentation 110 Check and validate indentation
111 </summary> 111 </summary>
112 <param name="line">line to check</param> 112 <param name="line">line to check</param>
113 <param name="ws">number of white spaces</param> 113 <param name="ws">number of white spaces</param>
114 <param name="intendation">number of indentations (2 white spaces = 1 intend, 1 tab = 1 intend)</param> 114 <param name="intendation">number of indentations (2 white spaces = 1 intend, 1 tab = 1 intend)</param>
115 </member> 115 </member>
116 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckIntendation(HttpServer.Rendering.Haml.LineInfo)"> 116 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckIntendation(HttpServer.Rendering.Haml.LineInfo)">
117 <summary> 117 <summary>
118 Check indentation 118 Check indentation
119 </summary> 119 </summary>
120 <param name="line">fills line with intend info</param> 120 <param name="line">fills line with intend info</param>
121 </member> 121 </member>
122 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckMultiLine(HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.LineInfo)"> 122 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.CheckMultiLine(HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.LineInfo)">
123 <summary> 123 <summary>
124 check if current line is a multi line 124 check if current line is a multi line
125 </summary> 125 </summary>
126 <param name="prevLine">previous line</param> 126 <param name="prevLine">previous line</param>
127 <param name="line">current line</param> 127 <param name="line">current line</param>
128 </member> 128 </member>
129 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GenerateHtml(System.IO.TextWriter)"> 129 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GenerateHtml(System.IO.TextWriter)">
130 <summary> 130 <summary>
131 Generate HTML code from the template. 131 Generate HTML code from the template.
132 Code is encapsulated in &lt;% and &lt;%= 132 Code is encapsulated in &lt;% and &lt;%=
133 </summary> 133 </summary>
134 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param> 134 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param>
135 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception> 135 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception>
136 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception> 136 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception>
137 </member> 137 </member>
138 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GetWord(System.String,System.Int32)"> 138 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GetWord(System.String,System.Int32)">
139 <summary> 139 <summary>
140 Get the first word (letters and digits only) from the specified offset. 140 Get the first word (letters and digits only) from the specified offset.
141 </summary> 141 </summary>
142 <param name="data"></param> 142 <param name="data"></param>
143 <param name="offset"></param> 143 <param name="offset"></param>
144 <returns></returns> 144 <returns></returns>
145 </member> 145 </member>
146 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.HandlePlacement"> 146 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.HandlePlacement">
147 <summary> 147 <summary>
148 Check indentation / node placement 148 Check indentation / node placement
149 </summary> 149 </summary>
150 </member> 150 </member>
151 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.ParseNode(HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.Nodes.TextNode)"> 151 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.ParseNode(HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.Nodes.TextNode)">
152 <summary> 152 <summary>
153 Parse a node 153 Parse a node
154 todo: improve doc 154 todo: improve doc
155 </summary> 155 </summary>
156 <param name="theLine"></param> 156 <param name="theLine"></param>
157 <param name="prototypes"></param> 157 <param name="prototypes"></param>
158 <param name="parent"></param> 158 <param name="parent"></param>
159 <param name="textNode"></param> 159 <param name="textNode"></param>
160 </member> 160 </member>
161 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PreParse(System.IO.TextReader)"> 161 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PreParse(System.IO.TextReader)">
162 <summary> 162 <summary>
163 PreParse goes through the text add handles indentation 163 PreParse goes through the text add handles indentation
164 and all multi line cases. 164 and all multi line cases.
165 </summary> 165 </summary>
166 <param name="reader">Reader containing the text</param> 166 <param name="reader">Reader containing the text</param>
167 </member> 167 </member>
168 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PrintDocument"> 168 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PrintDocument">
169 <summary> 169 <summary>
170 print the entire document 170 print the entire document
171 </summary> 171 </summary>
172 </member> 172 </member>
173 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PrintNode(HttpServer.Rendering.Haml.LineInfo)"> 173 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.PrintNode(HttpServer.Rendering.Haml.LineInfo)">
174 <summary> 174 <summary>
175 Print line information to the console 175 Print line information to the console
176 </summary> 176 </summary>
177 <param name="line"></param> 177 <param name="line"></param>
178 </member> 178 </member>
179 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.ReadLine"> 179 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.ReadLine">
180 <summary> 180 <summary>
181 Read next line from file 181 Read next line from file
182 </summary> 182 </summary>
183 <returns>true if line could be read; false if EOF.</returns> 183 <returns>true if line could be read; false if EOF.</returns>
184 </member> 184 </member>
185 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Spaces(System.Int32)"> 185 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Spaces(System.Int32)">
186 <summary> 186 <summary>
187 Generates a string with spaces. 187 Generates a string with spaces.
188 </summary> 188 </summary>
189 <param name="count">number of spaces.</param> 189 <param name="count">number of spaces.</param>
190 <returns>string of spaces.</returns> 190 <returns>string of spaces.</returns>
191 </member> 191 </member>
192 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Parse(System.String)"> 192 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Parse(System.String)">
193 <summary> 193 <summary>
194 Parse a file and convert into to our own template object code. 194 Parse a file and convert into to our own template object code.
195 </summary> 195 </summary>
196 <param name="fullPath">Path and filename to a template</param> 196 <param name="fullPath">Path and filename to a template</param>
197 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 197 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
198 <exception cref="T:System.IO.FileNotFoundException"></exception> 198 <exception cref="T:System.IO.FileNotFoundException"></exception>
199 <exception cref="T:System.IO.DirectoryNotFoundException"></exception> 199 <exception cref="T:System.IO.DirectoryNotFoundException"></exception>
200 <exception cref="T:System.UnauthorizedAccessException"></exception> 200 <exception cref="T:System.UnauthorizedAccessException"></exception>
201 <exception cref="T:System.IO.PathTooLongException"></exception> 201 <exception cref="T:System.IO.PathTooLongException"></exception>
202 <exception cref="T:System.NotSupportedException"></exception> 202 <exception cref="T:System.NotSupportedException"></exception>
203 <exception cref="T:System.ArgumentException"></exception> 203 <exception cref="T:System.ArgumentException"></exception>
204 </member> 204 </member>
205 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Parse(System.IO.TextReader)"> 205 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.Parse(System.IO.TextReader)">
206 <summary> 206 <summary>
207 Parse a file and convert into to our own template object code. 207 Parse a file and convert into to our own template object code.
208 </summary> 208 </summary>
209 <param name="reader">A <see cref="T:System.IO.TextReader"/> containing our template</param> 209 <param name="reader">A <see cref="T:System.IO.TextReader"/> containing our template</param>
210 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 210 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
211 </member> 211 </member>
212 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GenerateCode(System.IO.TextWriter)"> 212 <member name="M:HttpServer.Rendering.Haml.HamlGenerator.GenerateCode(System.IO.TextWriter)">
213 <summary> 213 <summary>
214 Generate C# code from the template. 214 Generate C# code from the template.
215 </summary> 215 </summary>
216 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param> 216 <param name="writer">A <see cref="T:System.IO.TextWriter"/> that the generated code will be written to.</param>
217 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception> 217 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception>
218 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception> 218 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception>
219 </member> 219 </member>
220 <member name="P:HttpServer.Rendering.Haml.HamlGenerator.RootNode"> 220 <member name="P:HttpServer.Rendering.Haml.HamlGenerator.RootNode">
221 <summary> 221 <summary>
222 Property to retrieve the root node for the latest parsed document 222 Property to retrieve the root node for the latest parsed document
223 </summary> 223 </summary>
224 </member> 224 </member>
225 <member name="T:HttpServer.Rules.RegexRedirectRule"> 225 <member name="T:HttpServer.Rules.RegexRedirectRule">
226 <summary> 226 <summary>
227 Class to make dynamic binding of redirects. Instead of having to specify a number of similar redirect rules 227 Class to make dynamic binding of redirects. Instead of having to specify a number of similar redirect rules
228 a regular expression can be used to identify redirect urls and thier targets. 228 a regular expression can be used to identify redirect urls and thier targets.
229 </summary> 229 </summary>
230 <example> 230 <example>
231 <![CDATA[ 231 <![CDATA[
232 new RegexRedirectRule("/(?<target>[a-z0-9]+)", "/users/${target}?find=true", RegexOptions.IgnoreCase) 232 new RegexRedirectRule("/(?<target>[a-z0-9]+)", "/users/${target}?find=true", RegexOptions.IgnoreCase)
233 ]]> 233 ]]>
234 </example> 234 </example>
235 </member> 235 </member>
236 <member name="T:HttpServer.Rules.RedirectRule"> 236 <member name="T:HttpServer.Rules.RedirectRule">
237 <summary> 237 <summary>
238 redirects from one url to another. 238 redirects from one url to another.
239 </summary> 239 </summary>
240 </member> 240 </member>
241 <member name="T:HttpServer.Rules.IRule"> 241 <member name="T:HttpServer.Rules.IRule">
242 <summary> 242 <summary>
243 Rules are used to perform operations before a request is being handled. 243 Rules are used to perform operations before a request is being handled.
244 Rules can be used to create routing etc. 244 Rules can be used to create routing etc.
245 </summary> 245 </summary>
246 </member> 246 </member>
247 <member name="M:HttpServer.Rules.IRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)"> 247 <member name="M:HttpServer.Rules.IRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
248 <summary> 248 <summary>
249 Process the incoming request. 249 Process the incoming request.
250 </summary> 250 </summary>
251 <param name="request">incoming http request</param> 251 <param name="request">incoming http request</param>
252 <param name="response">outgoing http response</param> 252 <param name="response">outgoing http response</param>
253 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns> 253 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
254 <remarks> 254 <remarks>
255 returning true means that no modules will get the request. Returning true is typically being done 255 returning true means that no modules will get the request. Returning true is typically being done
256 for redirects. 256 for redirects.
257 </remarks> 257 </remarks>
258 <exception cref="T:System.ArgumentNullException">If request or response is null.</exception> 258 <exception cref="T:System.ArgumentNullException">If request or response is null.</exception>
259 </member> 259 </member>
260 <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String)"> 260 <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String)">
261 <summary> 261 <summary>
262 Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class. 262 Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class.
263 </summary> 263 </summary>
264 <param name="fromUrl">Absolute path (no servername)</param> 264 <param name="fromUrl">Absolute path (no servername)</param>
265 <param name="toUrl">Absolute path (no servername)</param> 265 <param name="toUrl">Absolute path (no servername)</param>
266 <example> 266 <example>
267 server.Add(new RedirectRule("/", "/user/index")); 267 server.Add(new RedirectRule("/", "/user/index"));
268 </example> 268 </example>
269 </member> 269 </member>
270 <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String,System.Boolean)"> 270 <member name="M:HttpServer.Rules.RedirectRule.#ctor(System.String,System.String,System.Boolean)">
271 <summary> 271 <summary>
272 Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class. 272 Initializes a new instance of the <see cref="T:HttpServer.Rules.RedirectRule"/> class.
273 </summary> 273 </summary>
274 <param name="fromUrl">Absolute path (no servername)</param> 274 <param name="fromUrl">Absolute path (no servername)</param>
275 <param name="toUrl">Absolute path (no servername)</param> 275 <param name="toUrl">Absolute path (no servername)</param>
276 <param name="shouldRedirect">true if request should be redirected, false if the request uri should be replaced.</param> 276 <param name="shouldRedirect">true if request should be redirected, false if the request uri should be replaced.</param>
277 <example> 277 <example>
278 server.Add(new RedirectRule("/", "/user/index")); 278 server.Add(new RedirectRule("/", "/user/index"));
279 </example> 279 </example>
280 </member> 280 </member>
281 <member name="M:HttpServer.Rules.RedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)"> 281 <member name="M:HttpServer.Rules.RedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
282 <summary> 282 <summary>
283 Process the incoming request. 283 Process the incoming request.
284 </summary> 284 </summary>
285 <param name="request">incoming http request</param> 285 <param name="request">incoming http request</param>
286 <param name="response">outgoing http response</param> 286 <param name="response">outgoing http response</param>
287 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns> 287 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
288 <remarks> 288 <remarks>
289 returning true means that no modules will get the request. Returning true is typically being done 289 returning true means that no modules will get the request. Returning true is typically being done
290 for redirects. 290 for redirects.
291 </remarks> 291 </remarks>
292 </member> 292 </member>
293 <member name="P:HttpServer.Rules.RedirectRule.FromUrl"> 293 <member name="P:HttpServer.Rules.RedirectRule.FromUrl">
294 <summary> 294 <summary>
295 string to match request url with. 295 string to match request url with.
296 </summary> 296 </summary>
297 <remarks>Is compared to request.Uri.AbsolutePath</remarks> 297 <remarks>Is compared to request.Uri.AbsolutePath</remarks>
298 </member> 298 </member>
299 <member name="P:HttpServer.Rules.RedirectRule.ToUrl"> 299 <member name="P:HttpServer.Rules.RedirectRule.ToUrl">
300 <summary> 300 <summary>
301 Where to redirect. 301 Where to redirect.
302 </summary> 302 </summary>
303 </member> 303 </member>
304 <member name="P:HttpServer.Rules.RedirectRule.ShouldRedirect"> 304 <member name="P:HttpServer.Rules.RedirectRule.ShouldRedirect">
305 <summary> 305 <summary>
306 true if we should redirect. 306 true if we should redirect.
307 </summary> 307 </summary>
308 <remarks> 308 <remarks>
309 false means that the rule will replace 309 false means that the rule will replace
310 the current request uri with the new one from this class. 310 the current request uri with the new one from this class.
311 </remarks> 311 </remarks>
312 </member> 312 </member>
313 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String)"> 313 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String)">
314 <summary> 314 <summary>
315 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class. 315 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
316 </summary> 316 </summary>
317 <param name="fromUrlExpression">Expression to match url</param> 317 <param name="fromUrlExpression">Expression to match url</param>
318 <param name="toUrlExpression">Expression to generate url</param> 318 <param name="toUrlExpression">Expression to generate url</param>
319 <example> 319 <example>
320 <![CDATA[ 320 <![CDATA[
321 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}")); 321 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}"));
322 Result of ie. /employee1 will then be /user/employee1 322 Result of ie. /employee1 will then be /user/employee1
323 ]]> 323 ]]>
324 </example> 324 </example>
325 </member> 325 </member>
326 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions)"> 326 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions)">
327 <summary> 327 <summary>
328 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class. 328 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
329 </summary> 329 </summary>
330 <param name="fromUrlExpression">Expression to match url</param> 330 <param name="fromUrlExpression">Expression to match url</param>
331 <param name="toUrlExpression">Expression to generate url</param> 331 <param name="toUrlExpression">Expression to generate url</param>
332 <param name="options">Regular expression options to use, can be null</param> 332 <param name="options">Regular expression options to use, can be null</param>
333 <example> 333 <example>
334 <![CDATA[ 334 <![CDATA[
335 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/{first}", RegexOptions.IgnoreCase)); 335 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/{first}", RegexOptions.IgnoreCase));
336 Result of ie. /employee1 will then be /user/employee1 336 Result of ie. /employee1 will then be /user/employee1
337 ]]> 337 ]]>
338 </example> 338 </example>
339 </member> 339 </member>
340 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.Boolean)"> 340 <member name="M:HttpServer.Rules.RegexRedirectRule.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.Boolean)">
341 <summary> 341 <summary>
342 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class. 342 Initializes a new instance of the <see cref="T:HttpServer.Rules.RegexRedirectRule"/> class.
343 </summary> 343 </summary>
344 <param name="fromUrlExpression">Expression to match url</param> 344 <param name="fromUrlExpression">Expression to match url</param>
345 <param name="toUrlExpression">Expression to generate url</param> 345 <param name="toUrlExpression">Expression to generate url</param>
346 <param name="options">Regular expression options to apply</param> 346 <param name="options">Regular expression options to apply</param>
347 <param name="shouldRedirect">true if request should be redirected, false if the request uri should be replaced.</param> 347 <param name="shouldRedirect">true if request should be redirected, false if the request uri should be replaced.</param>
348 <example> 348 <example>
349 <![CDATA[ 349 <![CDATA[
350 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}", RegexOptions.None)); 350 server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}", RegexOptions.None));
351 Result of ie. /employee1 will then be /user/employee1 351 Result of ie. /employee1 will then be /user/employee1
352 ]]> 352 ]]>
353 </example> 353 </example>
354 </member> 354 </member>
355 <member name="M:HttpServer.Rules.RegexRedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)"> 355 <member name="M:HttpServer.Rules.RegexRedirectRule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
356 <summary> 356 <summary>
357 Process the incoming request. 357 Process the incoming request.
358 </summary> 358 </summary>
359 <param name="request">incoming http request</param> 359 <param name="request">incoming http request</param>
360 <param name="response">outgoing http response</param> 360 <param name="response">outgoing http response</param>
361 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns> 361 <returns>true if response should be sent to the browser directly (no other rules or modules will be processed).</returns>
362 <remarks> 362 <remarks>
363 returning true means that no modules will get the request. Returning true is typically being done 363 returning true means that no modules will get the request. Returning true is typically being done
364 for redirects. 364 for redirects.
365 </remarks> 365 </remarks>
366 <exception cref="T:System.ArgumentNullException">If request or response is null</exception> 366 <exception cref="T:System.ArgumentNullException">If request or response is null</exception>
367 </member> 367 </member>
368 <member name="T:HttpServer.Rendering.ITemplateLoader"> 368 <member name="T:HttpServer.Rendering.ITemplateLoader">
369 <summary> 369 <summary>
370 Interface used to load templates from different sources. 370 Interface used to load templates from different sources.
371 </summary> 371 </summary>
372 </member> 372 </member>
373 <member name="M:HttpServer.Rendering.ITemplateLoader.LoadTemplate(System.String)"> 373 <member name="M:HttpServer.Rendering.ITemplateLoader.LoadTemplate(System.String)">
374 <summary> 374 <summary>
375 Load a template into a <see cref="T:System.IO.TextReader"/> and return it. 375 Load a template into a <see cref="T:System.IO.TextReader"/> and return it.
376 </summary> 376 </summary>
377 <param name="path">Relative path (and filename) to template.</param> 377 <param name="path">Relative path (and filename) to template.</param>
378 <returns>a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null.</returns> 378 <returns>a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null.</returns>
379 </member> 379 </member>
380 <member name="M:HttpServer.Rendering.ITemplateLoader.GetFiles(System.String,System.String)"> 380 <member name="M:HttpServer.Rendering.ITemplateLoader.GetFiles(System.String,System.String)">
381 <summary> 381 <summary>
382 Fetch all files from the resource that matches the specified arguments. 382 Fetch all files from the resource that matches the specified arguments.
383 </summary> 383 </summary>
384 <param name="path">Where the file should reside.</param> 384 <param name="path">Where the file should reside.</param>
385 <param name="filename">Files to check</param> 385 <param name="filename">Files to check</param>
386 <returns>a list of files if found; or an empty array if no files are found.</returns> 386 <returns>a list of files if found; or an empty array if no files are found.</returns>
387 </member> 387 </member>
388 <member name="M:HttpServer.Rendering.ITemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)"> 388 <member name="M:HttpServer.Rendering.ITemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)">
389 <summary> 389 <summary>
390 Check's whether a template should be reloaded or not. 390 Check's whether a template should be reloaded or not.
391 </summary> 391 </summary>
392 <param name="info">template information</param> 392 <param name="info">template information</param>
393 <returns>true if template is OK; false if it do not exist or are old.</returns> 393 <returns>true if template is OK; false if it do not exist or are old.</returns>
394 </member> 394 </member>
395 <member name="M:HttpServer.Rendering.ITemplateLoader.HasTemplate(System.String)"> 395 <member name="M:HttpServer.Rendering.ITemplateLoader.HasTemplate(System.String)">
396 <summary> 396 <summary>
397 Returns whether or not the loader has an instance of the file requested 397 Returns whether or not the loader has an instance of the file requested
398 </summary> 398 </summary>
399 <param name="filename">The name of the template/file</param> 399 <param name="filename">The name of the template/file</param>
400 <returns>True if the loader can provide the file</returns> 400 <returns>True if the loader can provide the file</returns>
401 </member> 401 </member>
402 <member name="T:HttpServer.Helpers.WebHelper"> 402 <member name="T:HttpServer.Helpers.WebHelper">
403 <summary> 403 <summary>
404 Webhelper provides helpers for common tasks in HTML. 404 Webhelper provides helpers for common tasks in HTML.
405 </summary> 405 </summary>
406 </member> 406 </member>
407 <member name="F:HttpServer.Helpers.WebHelper.JSImplementation"> 407 <member name="F:HttpServer.Helpers.WebHelper.JSImplementation">
408 <summary> 408 <summary>
409 Used to let the website use different javascript libraries. 409 Used to let the website use different javascript libraries.
410 Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/> 410 Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/>
411 </summary> 411 </summary>
412 </member> 412 </member>
413 <member name="M:HttpServer.Helpers.WebHelper.AjaxRequest(System.String,System.String,System.String[])"> 413 <member name="M:HttpServer.Helpers.WebHelper.AjaxRequest(System.String,System.String,System.String[])">
414 <summary> 414 <summary>
415 Creates a link that invokes through ajax. 415 Creates a link that invokes through ajax.
416 </summary> 416 </summary>
417 <param name="url">url to fetch</param> 417 <param name="url">url to fetch</param>
418 <param name="title">link title</param> 418 <param name="title">link title</param>
419 <param name="options"> 419 <param name="options">
420 optional options in format "key, value, key, value". 420 optional options in format "key, value, key, value".
421 Javascript options starts with ':'. 421 Javascript options starts with ':'.
422 </param> 422 </param>
423 <returns>a link tag</returns> 423 <returns>a link tag</returns>
424 <example> 424 <example>
425 WebHelper.AjaxRequest("/users/add/", "Add user", "method:", "post", "onclick", "validate('this');"); 425 WebHelper.AjaxRequest("/users/add/", "Add user", "method:", "post", "onclick", "validate('this');");
426 </example> 426 </example>
427 </member> 427 </member>
428 <member name="M:HttpServer.Helpers.WebHelper.AjaxUpdater(System.String,System.String,System.String,System.String[])"> 428 <member name="M:HttpServer.Helpers.WebHelper.AjaxUpdater(System.String,System.String,System.String,System.String[])">
429 <summary> 429 <summary>
430 Builds a link that updates an element with the fetched ajax content. 430 Builds a link that updates an element with the fetched ajax content.
431 </summary> 431 </summary>
432 <param name="url">Url to fetch content from</param> 432 <param name="url">Url to fetch content from</param>
433 <param name="title">link title</param> 433 <param name="title">link title</param>
434 <param name="targetId">html element to update with the results of the ajax request.</param> 434 <param name="targetId">html element to update with the results of the ajax request.</param>
435 <param name="options">optional options in format "key, value, key, value"</param> 435 <param name="options">optional options in format "key, value, key, value"</param>
436 <returns>A link tag.</returns> 436 <returns>A link tag.</returns>
437 </member> 437 </member>
438 <member name="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])"> 438 <member name="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])">
439 <summary> 439 <summary>
440 A link that pop ups a Dialog (overlay div) 440 A link that pop ups a Dialog (overlay div)
441 </summary> 441 </summary>
442 <param name="url">url to contents of dialog</param> 442 <param name="url">url to contents of dialog</param>
443 <param name="title">link title</param> 443 <param name="title">link title</param>
444 <param name="htmlAttributes">name/value of html attributes.</param> 444 <param name="htmlAttributes">name/value of html attributes.</param>
445 <returns>A "a"-tag that popups a dialog when clicked</returns> 445 <returns>A "a"-tag that popups a dialog when clicked</returns>
446 <example> 446 <example>
447 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');"); 447 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
448 </example> 448 </example>
449 </member> 449 </member>
450 <member name="M:HttpServer.Helpers.WebHelper.CreateDialog(System.String,System.String,System.String[])"> 450 <member name="M:HttpServer.Helpers.WebHelper.CreateDialog(System.String,System.String,System.String[])">
451 <summary> 451 <summary>
452 Create/Open a dialog box using ajax 452 Create/Open a dialog box using ajax
453 </summary> 453 </summary>
454 <param name="url"></param> 454 <param name="url"></param>
455 <param name="title"></param> 455 <param name="title"></param>
456 <param name="parameters"></param> 456 <param name="parameters"></param>
457 <returns></returns> 457 <returns></returns>
458 </member> 458 </member>
459 <member name="M:HttpServer.Helpers.WebHelper.CloseDialog"> 459 <member name="M:HttpServer.Helpers.WebHelper.CloseDialog">
460 <summary> 460 <summary>
461 Close a javascript dialog window/div. 461 Close a javascript dialog window/div.
462 </summary> 462 </summary>
463 <returns>javascript for closing a dialog.</returns> 463 <returns>javascript for closing a dialog.</returns>
464 <see cref="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])"/> 464 <see cref="M:HttpServer.Helpers.WebHelper.DialogLink(System.String,System.String,System.String[])"/>
465 </member> 465 </member>
466 <member name="M:HttpServer.Helpers.WebHelper.FormStart(System.String,System.String,System.Boolean)"> 466 <member name="M:HttpServer.Helpers.WebHelper.FormStart(System.String,System.String,System.Boolean)">
467 <summary> 467 <summary>
468 Create a &lt;form&gt; tag. 468 Create a &lt;form&gt; tag.
469 </summary> 469 </summary>
470 <param name="name">name of form</param> 470 <param name="name">name of form</param>
471 <param name="action">action to invoke on submit</param> 471 <param name="action">action to invoke on submit</param>
472 <param name="isAjax">form should be posted as ajax</param> 472 <param name="isAjax">form should be posted as ajax</param>
473 <returns>html code</returns> 473 <returns>html code</returns>
474 <example> 474 <example>
475 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax); 475 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax);
476 </example> 476 </example>
477 </member> 477 </member>
478 <member name="M:HttpServer.Helpers.WebHelper.Link(System.String,System.String,System.String[])"> 478 <member name="M:HttpServer.Helpers.WebHelper.Link(System.String,System.String,System.String[])">
479 <summary> 479 <summary>
480 Create a link tag. 480 Create a link tag.
481 </summary> 481 </summary>
482 <param name="url">url to go to</param> 482 <param name="url">url to go to</param>
483 <param name="title">link title (text that is displayed)</param> 483 <param name="title">link title (text that is displayed)</param>
484 <param name="htmlAttributes">html attributes, name, value, name, value</param> 484 <param name="htmlAttributes">html attributes, name, value, name, value</param>
485 <returns>html code</returns> 485 <returns>html code</returns>
486 <example> 486 <example>
487 WebHelper.Link("/user/show/1", "Show user", "id", "showUser", "onclick", "return confirm('Are you shure?');"); 487 WebHelper.Link("/user/show/1", "Show user", "id", "showUser", "onclick", "return confirm('Are you shure?');");
488 </example> 488 </example>
489 </member> 489 </member>
490 <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[])"> 490 <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[])">
491 <summary> 491 <summary>
492 Build a link 492 Build a link
493 </summary> 493 </summary>
494 <param name="url">url to go to.</param> 494 <param name="url">url to go to.</param>
495 <param name="title">title of link (displayed text)</param> 495 <param name="title">title of link (displayed text)</param>
496 <param name="htmlAttributes">extra html attributes.</param> 496 <param name="htmlAttributes">extra html attributes.</param>
497 <returns>a complete link</returns> 497 <returns>a complete link</returns>
498 </member> 498 </member>
499 <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[],System.String[])"> 499 <member name="M:HttpServer.Helpers.WebHelper.BuildLink(System.String,System.String,System.String[],System.String[])">
500 <summary> 500 <summary>
501 Build a link 501 Build a link
502 </summary> 502 </summary>
503 <param name="url">url to go to.</param> 503 <param name="url">url to go to.</param>
504 <param name="title">title of link (displayed text)</param> 504 <param name="title">title of link (displayed text)</param>
505 <param name="htmlAttributes">extra html attributes.</param> 505 <param name="htmlAttributes">extra html attributes.</param>
506 <returns>a complete link</returns> 506 <returns>a complete link</returns>
507 <param name="options">more options</param> 507 <param name="options">more options</param>
508 </member> 508 </member>
509 <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"> 509 <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
510 <summary> 510 <summary>
511 Obsolete 511 Obsolete
512 </summary> 512 </summary>
513 <param name="name">Obsolete</param> 513 <param name="name">Obsolete</param>
514 <param name="collection">Obsolete</param> 514 <param name="collection">Obsolete</param>
515 <param name="getIdTitle">Obsolete</param> 515 <param name="getIdTitle">Obsolete</param>
516 <param name="selectedValue">Obsolete</param> 516 <param name="selectedValue">Obsolete</param>
517 <param name="firstEmpty">Obsolete</param> 517 <param name="firstEmpty">Obsolete</param>
518 <returns>Obsolete</returns> 518 <returns>Obsolete</returns>
519 </member> 519 </member>
520 <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"> 520 <member name="M:HttpServer.Helpers.WebHelper.Select(System.String,System.String,System.Collections.ICollection,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
521 <summary> 521 <summary>
522 Obsolete 522 Obsolete
523 </summary> 523 </summary>
524 <param name="name">Obsolete</param> 524 <param name="name">Obsolete</param>
525 <param name="id">Obsolete</param> 525 <param name="id">Obsolete</param>
526 <param name="collection">Obsolete</param> 526 <param name="collection">Obsolete</param>
527 <param name="getIdTitle">Obsolete</param> 527 <param name="getIdTitle">Obsolete</param>
528 <param name="selectedValue">Obsolete</param> 528 <param name="selectedValue">Obsolete</param>
529 <param name="firstEmpty">Obsolete</param> 529 <param name="firstEmpty">Obsolete</param>
530 <returns>Obsolete</returns> 530 <returns>Obsolete</returns>
531 </member> 531 </member>
532 <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Generic.IEnumerable{System.Object},System.String)"> 532 <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Generic.IEnumerable{System.Object},System.String)">
533 <summary> 533 <summary>
534 Render errors into a UL with class "errors" 534 Render errors into a UL with class "errors"
535 </summary> 535 </summary>
536 <param name="className">class used by UL-tag.</param> 536 <param name="className">class used by UL-tag.</param>
537 <param name="theList">items to list</param> 537 <param name="theList">items to list</param>
538 <returns>an unordered html list.</returns> 538 <returns>an unordered html list.</returns>
539 </member> 539 </member>
540 <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Specialized.NameValueCollection,System.String)"> 540 <member name="M:HttpServer.Helpers.WebHelper.List(System.Collections.Specialized.NameValueCollection,System.String)">
541 <summary> 541 <summary>
542 Render errors into a UL with class "errors" 542 Render errors into a UL with class "errors"
543 </summary> 543 </summary>
544 <param name="className">class used by UL-tag.</param> 544 <param name="className">class used by UL-tag.</param>
545 <param name="theList">items to list</param> 545 <param name="theList">items to list</param>
546 <returns>an unordered html list.</returns> 546 <returns>an unordered html list.</returns>
547 </member> 547 </member>
548 <member name="M:HttpServer.Helpers.WebHelper.Errors(System.Collections.Specialized.NameValueCollection)"> 548 <member name="M:HttpServer.Helpers.WebHelper.Errors(System.Collections.Specialized.NameValueCollection)">
549 <summary> 549 <summary>
550 Render errors into a UL with class "errors" 550 Render errors into a UL with class "errors"
551 </summary> 551 </summary>
552 <param name="errors"></param> 552 <param name="errors"></param>
553 <returns></returns> 553 <returns></returns>
554 </member> 554 </member>
555 <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[],System.String[])"> 555 <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[],System.String[])">
556 <summary> 556 <summary>
557 Generates a list with html attributes. 557 Generates a list with html attributes.
558 </summary> 558 </summary>
559 <param name="sb">StringBuilder that the options should be added to.</param> 559 <param name="sb">StringBuilder that the options should be added to.</param>
560 <param name="firstOptions">attributes set by user.</param> 560 <param name="firstOptions">attributes set by user.</param>
561 <param name="secondOptions">attributes set by any of the helper classes.</param> 561 <param name="secondOptions">attributes set by any of the helper classes.</param>
562 </member> 562 </member>
563 <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[])"> 563 <member name="M:HttpServer.Helpers.WebHelper.GenerateHtmlAttributes(System.Text.StringBuilder,System.String[])">
564 <summary> 564 <summary>
565 Generates a list with html attributes. 565 Generates a list with html attributes.
566 </summary> 566 </summary>
567 <param name="sb">StringBuilder that the options should be added to.</param> 567 <param name="sb">StringBuilder that the options should be added to.</param>
568 <param name="options"></param> 568 <param name="options"></param>
569 </member> 569 </member>
570 <member name="T:HttpServer.Helpers.JavascriptHelperImplementation"> 570 <member name="T:HttpServer.Helpers.JavascriptHelperImplementation">
571 <summary> 571 <summary>
572 Purpose of this class is to create a javascript toolkit independent javascript helper. 572 Purpose of this class is to create a javascript toolkit independent javascript helper.
573 </summary> 573 </summary>
574 </member> 574 </member>
575 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.GenerateOptions(System.Text.StringBuilder,System.String[],System.Boolean)"> 575 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.GenerateOptions(System.Text.StringBuilder,System.String[],System.Boolean)">
576 <summary> 576 <summary>
577 Generates a list with JS options. 577 Generates a list with JS options.
578 </summary> 578 </summary>
579 <param name="sb">StringBuilder that the options should be added to.</param> 579 <param name="sb">StringBuilder that the options should be added to.</param>
580 <param name="options">the javascript options. name, value pairs. each string value should be escaped by YOU!</param> 580 <param name="options">the javascript options. name, value pairs. each string value should be escaped by YOU!</param>
581 <param name="startWithComma">true if we should start with a comma.</param> 581 <param name="startWithComma">true if we should start with a comma.</param>
582 </member> 582 </member>
583 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.RemoveJavascriptOptions(System.String[])"> 583 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.RemoveJavascriptOptions(System.String[])">
584 <summary> 584 <summary>
585 Removes any javascript parameters from an array of parameters 585 Removes any javascript parameters from an array of parameters
586 </summary> 586 </summary>
587 <param name="options">The array of parameters to remove javascript params from</param> 587 <param name="options">The array of parameters to remove javascript params from</param>
588 <returns>An array of html parameters</returns> 588 <returns>An array of html parameters</returns>
589 </member> 589 </member>
590 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxFormOnSubmit(System.String[])"> 590 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxFormOnSubmit(System.String[])">
591 <summary> 591 <summary>
592 javascript action that should be added to the "onsubmit" event in the form tag. 592 javascript action that should be added to the "onsubmit" event in the form tag.
593 </summary> 593 </summary>
594 <returns></returns> 594 <returns></returns>
595 <remarks>All javascript option names should end with colon.</remarks> 595 <remarks>All javascript option names should end with colon.</remarks>
596 <example> 596 <example>
597 <code> 597 <code>
598 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);"); 598 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
599 </code> 599 </code>
600 </example> 600 </example>
601 </member> 601 </member>
602 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxRequest(System.String,System.String[])"> 602 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxRequest(System.String,System.String[])">
603 <summary> 603 <summary>
604 Requests a url through ajax 604 Requests a url through ajax
605 </summary> 605 </summary>
606 <param name="url">url to fetch</param> 606 <param name="url">url to fetch</param>
607 <param name="options">optional options in format "key, value, key, value", used in JS request object.</param> 607 <param name="options">optional options in format "key, value, key, value", used in JS request object.</param>
608 <returns>a link tag</returns> 608 <returns>a link tag</returns>
609 <remarks>All javascript option names should end with colon.</remarks> 609 <remarks>All javascript option names should end with colon.</remarks>
610 <example> 610 <example>
611 <code> 611 <code>
612 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);"); 612 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
613 </code> 613 </code>
614 </example> 614 </example>
615 </member> 615 </member>
616 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxUpdater(System.String,System.String,System.String[])"> 616 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.AjaxUpdater(System.String,System.String,System.String[])">
617 <summary> 617 <summary>
618 Ajax requests that updates an element with 618 Ajax requests that updates an element with
619 the fetched content 619 the fetched content
620 </summary> 620 </summary>
621 <param name="url">Url to fetch content from</param> 621 <param name="url">Url to fetch content from</param>
622 <param name="targetId">element to update</param> 622 <param name="targetId">element to update</param>
623 <param name="options">optional options in format "key, value, key, value", used in JS updater object.</param> 623 <param name="options">optional options in format "key, value, key, value", used in JS updater object.</param>
624 <returns>A link tag.</returns> 624 <returns>A link tag.</returns>
625 <remarks>All javascript option names should end with colon.</remarks> 625 <remarks>All javascript option names should end with colon.</remarks>
626 <example> 626 <example>
627 <code> 627 <code>
628 JSHelper.AjaxUpdater("/user/show/1", "userInfo", "onsuccess:", "alert('Successful!');"); 628 JSHelper.AjaxUpdater("/user/show/1", "userInfo", "onsuccess:", "alert('Successful!');");
629 </code> 629 </code>
630 </example> 630 </example>
631 </member> 631 </member>
632 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])"> 632 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])">
633 <summary> 633 <summary>
634 A link that pop ups a Dialog (overlay div) 634 A link that pop ups a Dialog (overlay div)
635 </summary> 635 </summary>
636 <param name="url">url to contents of dialog</param> 636 <param name="url">url to contents of dialog</param>
637 <param name="title">link title</param> 637 <param name="title">link title</param>
638 <returns>A "a"-tag that popups a dialog when clicked</returns> 638 <returns>A "a"-tag that popups a dialog when clicked</returns>
639 <param name="htmlAttributes">name/value of html attributes</param> 639 <param name="htmlAttributes">name/value of html attributes</param>
640 <example> 640 <example>
641 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');"); 641 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
642 </example> 642 </example>
643 </member> 643 </member>
644 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CloseDialog"> 644 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CloseDialog">
645 <summary> 645 <summary>
646 Close a javascript dialog window/div. 646 Close a javascript dialog window/div.
647 </summary> 647 </summary>
648 <returns>javascript for closing a dialog.</returns> 648 <returns>javascript for closing a dialog.</returns>
649 <see cref="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])"/> 649 <see cref="M:HttpServer.Helpers.JavascriptHelperImplementation.DialogLink(System.String,System.String,System.String[])"/>
650 </member> 650 </member>
651 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CreateDialog(System.String,System.String,System.String[])"> 651 <member name="M:HttpServer.Helpers.JavascriptHelperImplementation.CreateDialog(System.String,System.String,System.String[])">
652 <summary> 652 <summary>
653 Creates a new modal dialog window 653 Creates a new modal dialog window
654 </summary> 654 </summary>
655 <param name="url">url to open in window.</param> 655 <param name="url">url to open in window.</param>
656 <param name="title">window title (may not be supported by all js implementations)</param> 656 <param name="title">window title (may not be supported by all js implementations)</param>
657 <param name="options"></param> 657 <param name="options"></param>
658 <returns></returns> 658 <returns></returns>
659 </member> 659 </member>
660 <member name="T:HttpServer.HttpClientContextImp"> 660 <member name="T:HttpServer.HttpClientContextImp">
661 <summary> 661 <summary>
662 Contains a connection to a browser/client. 662 Contains a connection to a browser/client.
663 </summary> 663 </summary>
664 </member> 664 </member>
665 <member name="T:HttpServer.IHttpClientContext"> 665 <member name="T:HttpServer.IHttpClientContext">
666 <summary> 666 <summary>
667 Contains a connection to a browser/client. 667 Contains a connection to a browser/client.
668 </summary> 668 </summary>
669 </member> 669 </member>
670 <member name="M:HttpServer.IHttpClientContext.Disconnect(System.Net.Sockets.SocketError)"> 670 <member name="M:HttpServer.IHttpClientContext.Disconnect(System.Net.Sockets.SocketError)">
671 <summary> 671 <summary>
672 Disconnect from client 672 Disconnect from client
673 </summary> 673 </summary>
674 <param name="error">error to report in the <see cref="T:HttpServer.ClientDisconnectedHandler"/> delegate.</param> 674 <param name="error">error to report in the <see cref="T:HttpServer.ClientDisconnectedHandler"/> delegate.</param>
675 </member> 675 </member>
676 <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String)"> 676 <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String)">
677 <summary> 677 <summary>
678 Send a response. 678 Send a response.
679 </summary> 679 </summary>
680 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param> 680 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param>
681 <param name="statusCode">http status code</param> 681 <param name="statusCode">http status code</param>
682 <param name="reason">reason for the status code.</param> 682 <param name="reason">reason for the status code.</param>
683 <param name="body">html body contents, can be null or empty.</param> 683 <param name="body">html body contents, can be null or empty.</param>
684 <exception cref="T:System.ArgumentException">If httpVersion is invalid.</exception> 684 <exception cref="T:System.ArgumentException">If httpVersion is invalid.</exception>
685 </member> 685 </member>
686 <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String)"> 686 <member name="M:HttpServer.IHttpClientContext.Respond(System.String,System.Net.HttpStatusCode,System.String)">
687 <summary> 687 <summary>
688 Send a response. 688 Send a response.
689 </summary> 689 </summary>
690 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param> 690 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param>
691 <param name="statusCode">http status code</param> 691 <param name="statusCode">http status code</param>
692 <param name="reason">reason for the status code.</param> 692 <param name="reason">reason for the status code.</param>
693 </member> 693 </member>
694 <member name="M:HttpServer.IHttpClientContext.Respond(System.String)"> 694 <member name="M:HttpServer.IHttpClientContext.Respond(System.String)">
695 <summary> 695 <summary>
696 Send a response. 696 Send a response.
697 </summary> 697 </summary>
698 <exception cref="T:System.ArgumentNullException"></exception> 698 <exception cref="T:System.ArgumentNullException"></exception>
699 </member> 699 </member>
700 <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[])"> 700 <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[])">
701 <summary> 701 <summary>
702 send a whole buffer 702 send a whole buffer
703 </summary> 703 </summary>
704 <param name="buffer">buffer to send</param> 704 <param name="buffer">buffer to send</param>
705 <exception cref="T:System.ArgumentNullException"></exception> 705 <exception cref="T:System.ArgumentNullException"></exception>
706 </member> 706 </member>
707 <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[],System.Int32,System.Int32)"> 707 <member name="M:HttpServer.IHttpClientContext.Send(System.Byte[],System.Int32,System.Int32)">
708 <summary> 708 <summary>
709 Send data using the stream 709 Send data using the stream
710 </summary> 710 </summary>
711 <param name="buffer">Contains data to send</param> 711 <param name="buffer">Contains data to send</param>
712 <param name="offset">Start position in buffer</param> 712 <param name="offset">Start position in buffer</param>
713 <param name="size">number of bytes to send</param> 713 <param name="size">number of bytes to send</param>
714 <exception cref="T:System.ArgumentNullException"></exception> 714 <exception cref="T:System.ArgumentNullException"></exception>
715 <exception cref="T:System.ArgumentOutOfRangeException"></exception> 715 <exception cref="T:System.ArgumentOutOfRangeException"></exception>
716 </member> 716 </member>
717 <member name="P:HttpServer.IHttpClientContext.Secured"> 717 <member name="P:HttpServer.IHttpClientContext.Secured">
718 <summary> 718 <summary>
719 Using SSL or other encryption method. 719 Using SSL or other encryption method.
720 </summary> 720 </summary>
721 </member> 721 </member>
722 <member name="F:HttpServer.HttpClientContextImp.BufferSize"> 722 <member name="F:HttpServer.HttpClientContextImp.BufferSize">
723 <summary> 723 <summary>
724 Buffersize determines how large the HTTP header can be. 724 Buffersize determines how large the HTTP header can be.
725 </summary> 725 </summary>
726 </member> 726 </member>
727 <member name="M:HttpServer.HttpClientContextImp.#ctor(System.Boolean,System.Net.IPEndPoint,HttpServer.RequestReceivedHandler,HttpServer.ClientDisconnectedHandler,System.IO.Stream,HttpServer.ILogWriter,System.Net.Sockets.Socket)"> 727 <member name="M:HttpServer.HttpClientContextImp.#ctor(System.Boolean,System.Net.IPEndPoint,HttpServer.RequestReceivedHandler,HttpServer.ClientDisconnectedHandler,System.IO.Stream,HttpServer.ILogWriter,System.Net.Sockets.Socket)">
728 <summary> 728 <summary>
729 Initializes a new instance of the <see cref="T:HttpServer.HttpClientContextImp"/> class. 729 Initializes a new instance of the <see cref="T:HttpServer.HttpClientContextImp"/> class.
730 </summary> 730 </summary>
731 <param name="secured">true if the connection is secured (SSL/TLS)</param> 731 <param name="secured">true if the connection is secured (SSL/TLS)</param>
732 <param name="remoteEndPoint">client that connected.</param> 732 <param name="remoteEndPoint">client that connected.</param>
733 <param name="requestHandler">delegate handling incoming requests.</param> 733 <param name="requestHandler">delegate handling incoming requests.</param>
734 <param name="disconnectHandler">delegate being called when a client disconnectes</param> 734 <param name="disconnectHandler">delegate being called when a client disconnectes</param>
735 <param name="stream">Stream used for communication</param> 735 <param name="stream">Stream used for communication</param>
736 <exception cref="T:System.Net.Sockets.SocketException">If beginreceive fails</exception> 736 <exception cref="T:System.Net.Sockets.SocketException">If beginreceive fails</exception>
737 <param name="writer">delegate used to write log entries</param> 737 <param name="writer">delegate used to write log entries</param>
738 <see cref="T:HttpServer.RequestReceivedHandler"/> 738 <see cref="T:HttpServer.RequestReceivedHandler"/>
739 <see cref="T:HttpServer.ClientDisconnectedHandler"/> 739 <see cref="T:HttpServer.ClientDisconnectedHandler"/>
740 </member> 740 </member>
741 <member name="M:HttpServer.HttpClientContextImp.#ctor(System.Boolean,System.Net.IPEndPoint,System.IO.Stream,HttpServer.RequestReceivedHandler,System.Net.Sockets.Socket)"> 741 <member name="M:HttpServer.HttpClientContextImp.#ctor(System.Boolean,System.Net.IPEndPoint,System.IO.Stream,HttpServer.RequestReceivedHandler,System.Net.Sockets.Socket)">
742 <summary> 742 <summary>
743 Initializes a new instance of the <see cref="T:HttpServer.HttpClientContextImp"/> class. 743 Initializes a new instance of the <see cref="T:HttpServer.HttpClientContextImp"/> class.
744 </summary> 744 </summary>
745 <param name="secured">true if the connection is secured (SSL/TLS)</param> 745 <param name="secured">true if the connection is secured (SSL/TLS)</param>
746 <param name="requestHandler">delegate handling incoming requests.</param> 746 <param name="requestHandler">delegate handling incoming requests.</param>
747 <param name="remoteEndPoint">client that connected</param> 747 <param name="remoteEndPoint">client that connected</param>
748 <param name="stream">Stream used for communication</param> 748 <param name="stream">Stream used for communication</param>
749 <exception cref="T:System.Net.Sockets.SocketException">If beginreceive fails</exception> 749 <exception cref="T:System.Net.Sockets.SocketException">If beginreceive fails</exception>
750 <see cref="T:HttpServer.RequestReceivedHandler"/> 750 <see cref="T:HttpServer.RequestReceivedHandler"/>
751 <see cref="T:HttpServer.ClientDisconnectedHandler"/> 751 <see cref="T:HttpServer.ClientDisconnectedHandler"/>
752 </member> 752 </member>
753 <member name="M:HttpServer.HttpClientContextImp.Disconnect(System.Net.Sockets.SocketError)"> 753 <member name="M:HttpServer.HttpClientContextImp.Disconnect(System.Net.Sockets.SocketError)">
754 <summary> 754 <summary>
755 Disconnect from client 755 Disconnect from client
756 </summary> 756 </summary>
757 <param name="error">error to report in the <see cref="T:HttpServer.ClientDisconnectedHandler"/> delegate.</param> 757 <param name="error">error to report in the <see cref="T:HttpServer.ClientDisconnectedHandler"/> delegate.</param>
758 </member> 758 </member>
759 <member name="M:HttpServer.HttpClientContextImp.Check100Continue"> 759 <member name="M:HttpServer.HttpClientContextImp.Check100Continue">
760 <summary> 760 <summary>
761 This method checks the request if a responde to 100-continue should be sent. 761 This method checks the request if a responde to 100-continue should be sent.
762 </summary> 762 </summary>
763 <remarks> 763 <remarks>
764 100 continue is a value in the Expect header. 764 100 continue is a value in the Expect header.
765 It's used to let the webserver determine if a request can be handled. The client 765 It's used to let the webserver determine if a request can be handled. The client
766 waits for a reply before sending the body. 766 waits for a reply before sending the body.
767 </remarks> 767 </remarks>
768 </member> 768 </member>
769 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String)"> 769 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String,System.Net.HttpStatusCode,System.String,System.String)">
770 <summary> 770 <summary>
771 Send a response. 771 Send a response.
772 </summary> 772 </summary>
773 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param> 773 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param>
774 <param name="statusCode">http status code</param> 774 <param name="statusCode">http status code</param>
775 <param name="reason">reason for the status code.</param> 775 <param name="reason">reason for the status code.</param>
776 <param name="body">html body contents, can be null or empty.</param> 776 <param name="body">html body contents, can be null or empty.</param>
777 <exception cref="T:System.ArgumentException">If httpVersion is invalid.</exception> 777 <exception cref="T:System.ArgumentException">If httpVersion is invalid.</exception>
778 </member> 778 </member>
779 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String,System.Net.HttpStatusCode,System.String)"> 779 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String,System.Net.HttpStatusCode,System.String)">
780 <summary> 780 <summary>
781 Send a response. 781 Send a response.
782 </summary> 782 </summary>
783 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param> 783 <param name="httpVersion">Either HttpHelper.HTTP10 or HttpHelper.HTTP11</param>
784 <param name="statusCode">http status code</param> 784 <param name="statusCode">http status code</param>
785 <param name="reason">reason for the status code.</param> 785 <param name="reason">reason for the status code.</param>
786 </member> 786 </member>
787 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String)"> 787 <member name="M:HttpServer.HttpClientContextImp.Respond(System.String)">
788 <summary> 788 <summary>
789 Send a response. 789 Send a response.
790 </summary> 790 </summary>
791 <exception cref="T:System.ArgumentNullException"></exception> 791 <exception cref="T:System.ArgumentNullException"></exception>
792 </member> 792 </member>
793 <member name="M:HttpServer.HttpClientContextImp.Send(System.Byte[])"> 793 <member name="M:HttpServer.HttpClientContextImp.Send(System.Byte[])">
794 <summary> 794 <summary>
795 send a whole buffer 795 send a whole buffer
796 </summary> 796 </summary>
797 <param name="buffer">buffer to send</param> 797 <param name="buffer">buffer to send</param>
798 <exception cref="T:System.ArgumentNullException"></exception> 798 <exception cref="T:System.ArgumentNullException"></exception>
799 </member> 799 </member>
800 <member name="M:HttpServer.HttpClientContextImp.Send(System.Byte[],System.Int32,System.Int32)"> 800 <member name="M:HttpServer.HttpClientContextImp.Send(System.Byte[],System.Int32,System.Int32)">
801 <summary> 801 <summary>
802 Send data using the stream 802 Send data using the stream
803 </summary> 803 </summary>
804 <param name="buffer">Contains data to send</param> 804 <param name="buffer">Contains data to send</param>
805 <param name="offset">Start position in buffer</param> 805 <param name="offset">Start position in buffer</param>
806 <param name="size">number of bytes to send</param> 806 <param name="size">number of bytes to send</param>
807 <exception cref="T:System.ArgumentNullException"></exception> 807 <exception cref="T:System.ArgumentNullException"></exception>
808 <exception cref="T:System.ArgumentOutOfRangeException"></exception> 808 <exception cref="T:System.ArgumentOutOfRangeException"></exception>
809 </member> 809 </member>
810 <member name="P:HttpServer.HttpClientContextImp.Secured"> 810 <member name="P:HttpServer.HttpClientContextImp.Secured">
811 <summary> 811 <summary>
812 Using SSL or other encryption method. 812 Using SSL or other encryption method.
813 </summary> 813 </summary>
814 </member> 814 </member>
815 <member name="T:HttpServer.ClientDisconnectedHandler"> 815 <member name="T:HttpServer.ClientDisconnectedHandler">
816 <summary> 816 <summary>
817 Client have been disconnected. 817 Client have been disconnected.
818 </summary> 818 </summary>
819 <param name="client">Client that was disconnected.</param> 819 <param name="client">Client that was disconnected.</param>
820 <param name="error">Reason</param> 820 <param name="error">Reason</param>
821 <see cref="T:HttpServer.IHttpClientContext"/> 821 <see cref="T:HttpServer.IHttpClientContext"/>
822 </member> 822 </member>
823 <member name="T:HttpServer.RequestReceivedHandler"> 823 <member name="T:HttpServer.RequestReceivedHandler">
824 <summary> 824 <summary>
825 Invoked when a client context have received a new HTTP request 825 Invoked when a client context have received a new HTTP request
826 </summary> 826 </summary>
827 <param name="client">Client that received the request.</param> 827 <param name="client">Client that received the request.</param>
828 <param name="request">Request that was received.</param> 828 <param name="request">Request that was received.</param>
829 <see cref="T:HttpServer.IHttpClientContext"/> 829 <see cref="T:HttpServer.IHttpClientContext"/>
830 </member> 830 </member>
831 <member name="T:HttpServer.HttpModules.ControllerModule"> 831 <member name="T:HttpServer.HttpModules.ControllerModule">
832 <summary> 832 <summary>
833 A controller module is a part of the ModelViewController design pattern. 833 A controller module is a part of the ModelViewController design pattern.
834 It gives you a way to create user friendly URLs. 834 It gives you a way to create user friendly URLs.
835 </summary> 835 </summary>
836 <remarks> 836 <remarks>
837 The controller module uses the flyweight pattern which means that 837 The controller module uses the flyweight pattern which means that
838 the memory usage will continue to increase until the module have 838 the memory usage will continue to increase until the module have
839 enough objects in memory to serve all concurrent requests. The objects 839 enough objects in memory to serve all concurrent requests. The objects
840 are reused and will not be freed. 840 are reused and will not be freed.
841 </remarks> 841 </remarks>
842 <example> 842 <example>
843 <code> 843 <code>
844 ControllerModule module = new ControllerModule(); 844 ControllerModule module = new ControllerModule();
845 module.Add(new UserController()); 845 module.Add(new UserController());
846 module.Add(new SearchController()); 846 module.Add(new SearchController());
847 myWebsite.Add(module); 847 myWebsite.Add(module);
848 </code> 848 </code>
849 </example> 849 </example>
850 </member> 850 </member>
851 <member name="T:HttpServer.HttpModules.HttpModule"> 851 <member name="T:HttpServer.HttpModules.HttpModule">
852 <summary> 852 <summary>
853 A HttpModule can be used to serve urls. The module itself 853 A HttpModule can be used to serve urls. The module itself
854 decides if it should serve a url or not. In this way, you can 854 decides if it should serve a url or not. In this way, you can
855 get a very flexible http app since you can let multiple modules 855 get a very flexible http app since you can let multiple modules
856 serve almost similiar urls. 856 serve almost similiar urls.
857 </summary> 857 </summary>
858 <remarks> 858 <remarks>
859 Throw UnauthorizedException if you are using a AuthenticationModule and want to prompt for username/password. 859 Throw UnauthorizedException if you are using a AuthenticationModule and want to prompt for username/password.
860 </remarks> 860 </remarks>
861 </member> 861 </member>
862 <member name="M:HttpServer.HttpModules.HttpModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 862 <member name="M:HttpServer.HttpModules.HttpModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
863 <summary> 863 <summary>
864 Method that process the url 864 Method that process the url
865 </summary> 865 </summary>
866 <param name="request">Information sent by the browser about the request</param> 866 <param name="request">Information sent by the browser about the request</param>
867 <param name="response">Information that is being sent back to the client.</param> 867 <param name="response">Information that is being sent back to the client.</param>
868 <param name="session">Session used to </param> 868 <param name="session">Session used to </param>
869 <returns>true if this module handled the request.</returns> 869 <returns>true if this module handled the request.</returns>
870 </member> 870 </member>
871 <member name="M:HttpServer.HttpModules.HttpModule.SetLogWriter(HttpServer.ILogWriter)"> 871 <member name="M:HttpServer.HttpModules.HttpModule.SetLogWriter(HttpServer.ILogWriter)">
872 <summary> 872 <summary>
873 Set the log writer to use. 873 Set the log writer to use.
874 </summary> 874 </summary>
875 <param name="writer">logwriter to use.</param> 875 <param name="writer">logwriter to use.</param>
876 </member> 876 </member>
877 <member name="M:HttpServer.HttpModules.HttpModule.Write(HttpServer.LogPrio,System.String)"> 877 <member name="M:HttpServer.HttpModules.HttpModule.Write(HttpServer.LogPrio,System.String)">
878 <summary> 878 <summary>
879 Log something. 879 Log something.
880 </summary> 880 </summary>
881 <param name="prio">importance of log message</param> 881 <param name="prio">importance of log message</param>
882 <param name="message">message</param> 882 <param name="message">message</param>
883 </member> 883 </member>
884 <member name="P:HttpServer.HttpModules.HttpModule.AllowSecondaryProcessing"> 884 <member name="P:HttpServer.HttpModules.HttpModule.AllowSecondaryProcessing">
885 <summary> 885 <summary>
886 If true specifies that the module doesn't consume the processing of a request so that subsequent modules 886 If true specifies that the module doesn't consume the processing of a request so that subsequent modules
887 can continue processing afterwards. Default is false. 887 can continue processing afterwards. Default is false.
888 </summary> 888 </summary>
889 </member> 889 </member>
890 <member name="M:HttpServer.HttpModules.ControllerModule.Add(HttpServer.Controllers.RequestController)"> 890 <member name="M:HttpServer.HttpModules.ControllerModule.Add(HttpServer.Controllers.RequestController)">
891 <summary> 891 <summary>
892 The controller module uses the prototype design pattern 892 The controller module uses the prototype design pattern
893 to be able to create new controller objects for requests 893 to be able to create new controller objects for requests
894 if the stack is empty. 894 if the stack is empty.
895 </summary> 895 </summary>
896 <param name="prototype">A prototype which will be cloned for each request</param> 896 <param name="prototype">A prototype which will be cloned for each request</param>
897 <exception cref="T:System.ArgumentNullException"></exception> 897 <exception cref="T:System.ArgumentNullException"></exception>
898 <exception cref="T:System.InvalidProgramException">If a controller with that name have been added already.</exception> 898 <exception cref="T:System.InvalidProgramException">If a controller with that name have been added already.</exception>
899 </member> 899 </member>
900 <member name="M:HttpServer.HttpModules.ControllerModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 900 <member name="M:HttpServer.HttpModules.ControllerModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
901 <summary> 901 <summary>
902 Method that process the incoming request. 902 Method that process the incoming request.
903 </summary> 903 </summary>
904 <param name="request">Information sent by the browser about the request</param> 904 <param name="request">Information sent by the browser about the request</param>
905 <param name="response">Information that is being sent back to the client.</param> 905 <param name="response">Information that is being sent back to the client.</param>
906 <param name="session">Session used to </param> 906 <param name="session">Session used to </param>
907 </member> 907 </member>
908 <member name="P:HttpServer.HttpModules.ControllerModule.Item(System.String)"> 908 <member name="P:HttpServer.HttpModules.ControllerModule.Item(System.String)">
909 <summary> 909 <summary>
910 Get a prototype 910 Get a prototype
911 </summary> 911 </summary>
912 <param name="controllerName">in lowercase, without "Controller"</param> 912 <param name="controllerName">in lowercase, without "Controller"</param>
913 <returns>The controller if found; otherwise null.</returns> 913 <returns>The controller if found; otherwise null.</returns>
914 <example> 914 <example>
915 <code> 915 <code>
916 //fetches the class UserController 916 //fetches the class UserController
917 RequestController userController = controllerModule["user"]; 917 RequestController userController = controllerModule["user"];
918 </code> 918 </code>
919 </example> 919 </example>
920 </member> 920 </member>
921 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.#ctor(HttpServer.Controllers.RequestController)"> 921 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.#ctor(HttpServer.Controllers.RequestController)">
922 <summary> 922 <summary>
923 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ControllerModule.ControllerContext"/> class. 923 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ControllerModule.ControllerContext"/> class.
924 </summary> 924 </summary>
925 <param name="prototype">A controller used to handle certain URLs. Will be cloned for each parallel request.</param> 925 <param name="prototype">A controller used to handle certain URLs. Will be cloned for each parallel request.</param>
926 </member> 926 </member>
927 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.Pop"> 927 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.Pop">
928 <summary> 928 <summary>
929 Retrieve a previously created controller (or a new one if none exist). 929 Retrieve a previously created controller (or a new one if none exist).
930 </summary> 930 </summary>
931 <returns></returns> 931 <returns></returns>
932 </member> 932 </member>
933 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.Push(HttpServer.Controllers.RequestController)"> 933 <member name="M:HttpServer.HttpModules.ControllerModule.ControllerContext.Push(HttpServer.Controllers.RequestController)">
934 <summary> 934 <summary>
935 Add a controller 935 Add a controller
936 </summary> 936 </summary>
937 <param name="controller"></param> 937 <param name="controller"></param>
938 </member> 938 </member>
939 <member name="P:HttpServer.HttpModules.ControllerModule.ControllerContext.Prototype"> 939 <member name="P:HttpServer.HttpModules.ControllerModule.ControllerContext.Prototype">
940 <summary> 940 <summary>
941 Prototype controller used for cloning. 941 Prototype controller used for cloning.
942 </summary> 942 </summary>
943 <value>The prototype.</value> 943 <value>The prototype.</value>
944 </member> 944 </member>
945 <member name="T:HttpServer.Helpers.JSHelper"> 945 <member name="T:HttpServer.Helpers.JSHelper">
946 <summary> 946 <summary>
947 Will contain helper functions for javascript. 947 Will contain helper functions for javascript.
948 </summary> 948 </summary>
949 </member> 949 </member>
950 <member name="M:HttpServer.Helpers.JSHelper.AjaxRequest(System.String,System.String[])"> 950 <member name="M:HttpServer.Helpers.JSHelper.AjaxRequest(System.String,System.String[])">
951 <summary> 951 <summary>
952 Requests a url through ajax 952 Requests a url through ajax
953 </summary> 953 </summary>
954 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param> 954 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
955 <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param> 955 <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param>
956 <returns>a link tag</returns> 956 <returns>a link tag</returns>
957 <remarks>onclick attribute is used by this method.</remarks> 957 <remarks>onclick attribute is used by this method.</remarks>
958 <example> 958 <example>
959 <code> 959 <code>
960 // plain text 960 // plain text
961 JSHelper.AjaxRequest("'/user/show/1'"); 961 JSHelper.AjaxRequest("'/user/show/1'");
962 962
963 // ajax request using this.href 963 // ajax request using this.href
964 string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;"; 964 string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;";
965 </code> 965 </code>
966 </example> 966 </example>
967 </member> 967 </member>
968 <member name="M:HttpServer.Helpers.JSHelper.AjaxUpdater(System.String,System.String,System.String[])"> 968 <member name="M:HttpServer.Helpers.JSHelper.AjaxUpdater(System.String,System.String,System.String[])">
969 <summary> 969 <summary>
970 Ajax requests that updates an element with 970 Ajax requests that updates an element with
971 the fetched content 971 the fetched content
972 </summary> 972 </summary>
973 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param> 973 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
974 <param name="targetId">element to update</param> 974 <param name="targetId">element to update</param>
975 <param name="options">options in format "key, value, key, value". All keys should end with colon.</param> 975 <param name="options">options in format "key, value, key, value". All keys should end with colon.</param>
976 <returns>A link tag.</returns> 976 <returns>A link tag.</returns>
977 <example> 977 <example>
978 <code> 978 <code>
979 JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true"); 979 JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true");
980 </code> 980 </code>
981 </example> 981 </example>
982 </member> 982 </member>
983 <member name="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])"> 983 <member name="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])">
984 <summary> 984 <summary>
985 Opens contents in a dialog window. 985 Opens contents in a dialog window.
986 </summary> 986 </summary>
987 <param name="url">url to contents of dialog</param> 987 <param name="url">url to contents of dialog</param>
988 <param name="title">link title</param> 988 <param name="title">link title</param>
989 <param name="options">name, value, name, value, all parameter names should end with colon.</param> 989 <param name="options">name, value, name, value, all parameter names should end with colon.</param>
990 </member> 990 </member>
991 <member name="M:HttpServer.Helpers.JSHelper.CloseDialog"> 991 <member name="M:HttpServer.Helpers.JSHelper.CloseDialog">
992 <summary> 992 <summary>
993 Close a javascript dialog window/div. 993 Close a javascript dialog window/div.
994 </summary> 994 </summary>
995 <returns>javascript for closing a dialog.</returns> 995 <returns>javascript for closing a dialog.</returns>
996 <see cref="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])"/> 996 <see cref="M:HttpServer.Helpers.JSHelper.CreateDialog(System.String,System.String,System.String[])"/>
997 </member> 997 </member>
998 <member name="T:HttpServer.Helpers.GetIdTitle"> 998 <member name="T:HttpServer.Helpers.GetIdTitle">
999 <summary> 999 <summary>
1000 Delegate used by <see cref="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"/> to populate select options. 1000 Delegate used by <see cref="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"/> to populate select options.
1001 </summary> 1001 </summary>
1002 <param name="obj">current object (for instance a User).</param> 1002 <param name="obj">current object (for instance a User).</param>
1003 <param name="id">Text that should be displayed in the value part of a &lt;optiongt;-tag.</param> 1003 <param name="id">Text that should be displayed in the value part of a &lt;optiongt;-tag.</param>
1004 <param name="title">Text shown in the select list.</param> 1004 <param name="title">Text shown in the select list.</param>
1005 <example> 1005 <example>
1006 // Class that is going to be used in a SELECT-tag. 1006 // Class that is going to be used in a SELECT-tag.
1007 public class User 1007 public class User
1008 { 1008 {
1009 private readonly string _realName; 1009 private readonly string _realName;
1010 private readonly int _id; 1010 private readonly int _id;
1011 public User(int id, string realName) 1011 public User(int id, string realName)
1012 { 1012 {
1013 _id = id; 1013 _id = id;
1014 _realName = realName; 1014 _realName = realName;
1015 } 1015 }
1016 public string RealName 1016 public string RealName
1017 { 1017 {
1018 get { return _realName; } 1018 get { return _realName; }
1019 } 1019 }
1020 1020
1021 public int Id 1021 public int Id
1022 { 1022 {
1023 get { return _id; } 1023 get { return _id; }
1024 } 1024 }
1025 } 1025 }
1026 1026
1027 // Using an inline delegate to generate the select list 1027 // Using an inline delegate to generate the select list
1028 public void UserInlineDelegate() 1028 public void UserInlineDelegate()
1029 { 1029 {
1030 List&lt;User&gt; items = new List&lt;User&gt;(); 1030 List&lt;User&gt; items = new List&lt;User&gt;();
1031 items.Add(new User(1, "adam")); 1031 items.Add(new User(1, "adam"));
1032 items.Add(new User(2, "bertial")); 1032 items.Add(new User(2, "bertial"));
1033 items.Add(new User(3, "david")); 1033 items.Add(new User(3, "david"));
1034 string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value) 1034 string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value)
1035 { 1035 {
1036 User user = (User)o; 1036 User user = (User)o;
1037 id = user.Id; 1037 id = user.Id;
1038 value = user.RealName; 1038 value = user.RealName;
1039 }, 2, true); 1039 }, 2, true);
1040 } 1040 }
1041 1041
1042 // Using an method as delegate to generate the select list. 1042 // Using an method as delegate to generate the select list.
1043 public void UseExternalDelegate() 1043 public void UseExternalDelegate()
1044 { 1044 {
1045 List&lt;User&gt; items = new List&lt;User&gt;(); 1045 List&lt;User&gt; items = new List&lt;User&gt;();
1046 items.Add(new User(1, "adam")); 1046 items.Add(new User(1, "adam"));
1047 items.Add(new User(2, "bertial")); 1047 items.Add(new User(2, "bertial"));
1048 items.Add(new User(3, "david")); 1048 items.Add(new User(3, "david"));
1049 string htmlSelect = Select("users", "users", items, UserOptions, 1, true); 1049 string htmlSelect = Select("users", "users", items, UserOptions, 1, true);
1050 } 1050 }
1051 1051
1052 // delegate returning id and title 1052 // delegate returning id and title
1053 public static void UserOptions(object o, out object id, out object title) 1053 public static void UserOptions(object o, out object id, out object title)
1054 { 1054 {
1055 User user = (User)o; 1055 User user = (User)o;
1056 id = user.Id; 1056 id = user.Id;
1057 value = user.RealName; 1057 value = user.RealName;
1058 } /// </example> 1058 } /// </example>
1059 </member> 1059 </member>
1060 <member name="T:HttpServer.Controllers.BeforeFilterAttribute"> 1060 <member name="T:HttpServer.Controllers.BeforeFilterAttribute">
1061 <summary> 1061 <summary>
1062 Methods marked with BeforeFilter will be invoked before each request. 1062 Methods marked with BeforeFilter will be invoked before each request.
1063 </summary> 1063 </summary>
1064 <remarks> 1064 <remarks>
1065 BeforeFilters should take no arguments and return false 1065 BeforeFilters should take no arguments and return false
1066 if controller method should not be invoked. 1066 if controller method should not be invoked.
1067 </remarks> 1067 </remarks>
1068 <seealso cref="T:HttpServer.Controllers.FilterPosition"/> 1068 <seealso cref="T:HttpServer.Controllers.FilterPosition"/>
1069 </member> 1069 </member>
1070 <member name="M:HttpServer.Controllers.BeforeFilterAttribute.#ctor"> 1070 <member name="M:HttpServer.Controllers.BeforeFilterAttribute.#ctor">
1071 <summary> 1071 <summary>
1072 Initializes a new instance of the <see cref="T:HttpServer.Controllers.BeforeFilterAttribute"/> class. 1072 Initializes a new instance of the <see cref="T:HttpServer.Controllers.BeforeFilterAttribute"/> class.
1073 </summary> 1073 </summary>
1074 <remarks> 1074 <remarks>
1075 BeforeFilters should take no arguments and return false 1075 BeforeFilters should take no arguments and return false
1076 if controller method should not be invoked. 1076 if controller method should not be invoked.
1077 </remarks> 1077 </remarks>
1078 </member> 1078 </member>
1079 <member name="M:HttpServer.Controllers.BeforeFilterAttribute.#ctor(HttpServer.Controllers.FilterPosition)"> 1079 <member name="M:HttpServer.Controllers.BeforeFilterAttribute.#ctor(HttpServer.Controllers.FilterPosition)">
1080 <summary> 1080 <summary>
1081 Initializes a new instance of the <see cref="T:HttpServer.Controllers.BeforeFilterAttribute"/> class. 1081 Initializes a new instance of the <see cref="T:HttpServer.Controllers.BeforeFilterAttribute"/> class.
1082 </summary> 1082 </summary>
1083 <param name="position">Specify if the filter should be invoked among the first filters, in between or among the last.</param> 1083 <param name="position">Specify if the filter should be invoked among the first filters, in between or among the last.</param>
1084 <remarks> 1084 <remarks>
1085 BeforeFilters should take no arguments and return false 1085 BeforeFilters should take no arguments and return false
1086 if controller method should not be invoked. 1086 if controller method should not be invoked.
1087 </remarks> 1087 </remarks>
1088 </member> 1088 </member>
1089 <member name="P:HttpServer.Controllers.BeforeFilterAttribute.Position"> 1089 <member name="P:HttpServer.Controllers.BeforeFilterAttribute.Position">
1090 <summary> 1090 <summary>
1091 Filters position in before filter queue 1091 Filters position in before filter queue
1092 </summary> 1092 </summary>
1093 </member> 1093 </member>
1094 <member name="T:HttpServer.Controllers.FilterPosition"> 1094 <member name="T:HttpServer.Controllers.FilterPosition">
1095 <summary> 1095 <summary>
1096 Determins when a before filter is executed. 1096 Determins when a before filter is executed.
1097 </summary> 1097 </summary>
1098 <seealso cref="T:HttpServer.Controllers.BeforeFilterAttribute"/> 1098 <seealso cref="T:HttpServer.Controllers.BeforeFilterAttribute"/>
1099 </member> 1099 </member>
1100 <member name="F:HttpServer.Controllers.FilterPosition.First"> 1100 <member name="F:HttpServer.Controllers.FilterPosition.First">
1101 <summary> 1101 <summary>
1102 Filter will be invoked first (unless another filter is added after this one with the First position) 1102 Filter will be invoked first (unless another filter is added after this one with the First position)
1103 </summary> 1103 </summary>
1104 </member> 1104 </member>
1105 <member name="F:HttpServer.Controllers.FilterPosition.Between"> 1105 <member name="F:HttpServer.Controllers.FilterPosition.Between">
1106 <summary> 1106 <summary>
1107 Invoke after all first filters, and before the last filters. 1107 Invoke after all first filters, and before the last filters.
1108 </summary> 1108 </summary>
1109 </member> 1109 </member>
1110 <member name="F:HttpServer.Controllers.FilterPosition.Last"> 1110 <member name="F:HttpServer.Controllers.FilterPosition.Last">
1111 <summary> 1111 <summary>
1112 Filter will be invoked last (unless another filter is added after this one with the Last position) 1112 Filter will be invoked last (unless another filter is added after this one with the Last position)
1113 </summary> 1113 </summary>
1114 </member> 1114 </member>
1115 <member name="T:HttpServer.Authentication.BasicAuthentication"> 1115 <member name="T:HttpServer.Authentication.BasicAuthentication">
1116 <summary> 1116 <summary>
1117 The "basic" authentication scheme is based on the model that the 1117 The "basic" authentication scheme is based on the model that the
1118 client must authenticate itself with a user-ID and a password for 1118 client must authenticate itself with a user-ID and a password for
1119 each realm. The realm value should be considered an opaque string 1119 each realm. The realm value should be considered an opaque string
1120 which can only be compared for equality with other realms on that 1120 which can only be compared for equality with other realms on that
1121 server. The server will service the request only if it can validate 1121 server. The server will service the request only if it can validate
1122 the user-ID and password for the protection space of the Request-URI. 1122 the user-ID and password for the protection space of the Request-URI.
1123 There are no optional authentication parameters. 1123 There are no optional authentication parameters.
1124 </summary> 1124 </summary>
1125 </member> 1125 </member>
1126 <member name="T:HttpServer.Authentication.AuthModule"> 1126 <member name="T:HttpServer.Authentication.AuthModule">
1127 <summary> 1127 <summary>
1128 Authentication modules are used to implement different 1128 Authentication modules are used to implement different
1129 kind of http authentication. 1129 kind of http authentication.
1130 </summary> 1130 </summary>
1131 </member> 1131 </member>
1132 <member name="M:HttpServer.Authentication.AuthModule.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)"> 1132 <member name="M:HttpServer.Authentication.AuthModule.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)">
1133 <summary> 1133 <summary>
1134 Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthModule"/> class. 1134 Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthModule"/> class.
1135 </summary> 1135 </summary>
1136 <param name="authenticator">Delegate used to provide information used during authentication.</param> 1136 <param name="authenticator">Delegate used to provide information used during authentication.</param>
1137 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param> 1137 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param>
1138 </member> 1138 </member>
1139 <member name="M:HttpServer.Authentication.AuthModule.#ctor(HttpServer.Authentication.AuthenticationHandler)"> 1139 <member name="M:HttpServer.Authentication.AuthModule.#ctor(HttpServer.Authentication.AuthenticationHandler)">
1140 <summary> 1140 <summary>
1141 Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthModule"/> class. 1141 Initializes a new instance of the <see cref="T:HttpServer.Authentication.AuthModule"/> class.
1142 </summary> 1142 </summary>
1143 <param name="authenticator">Delegate used to provide information used during authentication.</param> 1143 <param name="authenticator">Delegate used to provide information used during authentication.</param>
1144 </member> 1144 </member>
1145 <member name="M:HttpServer.Authentication.AuthModule.CreateResponse(System.String,System.Object[])"> 1145 <member name="M:HttpServer.Authentication.AuthModule.CreateResponse(System.String,System.Object[])">
1146 <summary> 1146 <summary>
1147 Create a response that can be sent in the WWW-Authenticate header. 1147 Create a response that can be sent in the WWW-Authenticate header.
1148 </summary> 1148 </summary>
1149 <param name="realm">Realm that the user should authenticate in</param> 1149 <param name="realm">Realm that the user should authenticate in</param>
1150 <param name="options">Array with optional options.</param> 1150 <param name="options">Array with optional options.</param>
1151 <returns>A correct auth request.</returns> 1151 <returns>A correct auth request.</returns>
1152 <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception> 1152 <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception>
1153 </member> 1153 </member>
1154 <member name="M:HttpServer.Authentication.AuthModule.Authenticate(System.String,System.String,System.String,System.Object[])"> 1154 <member name="M:HttpServer.Authentication.AuthModule.Authenticate(System.String,System.String,System.String,System.Object[])">
1155 <summary> 1155 <summary>
1156 An authentication response have been received from the web browser. 1156 An authentication response have been received from the web browser.
1157 Check if it's correct 1157 Check if it's correct
1158 </summary> 1158 </summary>
1159 <param name="authenticationHeader">Contents from the Authorization header</param> 1159 <param name="authenticationHeader">Contents from the Authorization header</param>
1160 <param name="realm">Realm that should be authenticated</param> 1160 <param name="realm">Realm that should be authenticated</param>
1161 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param> 1161 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
1162 <param name="options">options to specific implementations</param> 1162 <param name="options">options to specific implementations</param>
1163 <returns>Authentication object that is stored for the request. A user class or something like that.</returns> 1163 <returns>Authentication object that is stored for the request. A user class or something like that.</returns>
1164 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception> 1164 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
1165 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception> 1165 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
1166 </member> 1166 </member>
1167 <member name="M:HttpServer.Authentication.AuthModule.CheckAuthentication(System.String,System.String,System.String@,System.Object@)"> 1167 <member name="M:HttpServer.Authentication.AuthModule.CheckAuthentication(System.String,System.String,System.String@,System.Object@)">
1168 <summary> 1168 <summary>
1169 Used to invoke the auth delegate that is used to lookup the username/realm. 1169 Used to invoke the auth delegate that is used to lookup the username/realm.
1170 </summary> 1170 </summary>
1171 <param name="realm">Realm (domain) that user want to authenticate in</param> 1171 <param name="realm">Realm (domain) that user want to authenticate in</param>
1172 <param name="userName">Username</param> 1172 <param name="userName">Username</param>
1173 <param name="password">Password used for validation. Some implementations got password in clear text, they are then sent to client.</param> 1173 <param name="password">Password used for validation. Some implementations got password in clear text, they are then sent to client.</param>
1174 <param name="login">object that will be stored in the request to help you identify the user if authentication was successful.</param> 1174 <param name="login">object that will be stored in the request to help you identify the user if authentication was successful.</param>
1175 <returns>true if authentication was successful</returns> 1175 <returns>true if authentication was successful</returns>
1176 </member> 1176 </member>
1177 <member name="M:HttpServer.Authentication.AuthModule.AuthenticationRequired(HttpServer.IHttpRequest)"> 1177 <member name="M:HttpServer.Authentication.AuthModule.AuthenticationRequired(HttpServer.IHttpRequest)">
1178 <summary> 1178 <summary>
1179 Determines if authentication is required. 1179 Determines if authentication is required.
1180 </summary> 1180 </summary>
1181 <param name="request">Http request from browser</param> 1181 <param name="request">Http request from browser</param>
1182 <returns>true if user should be authenticated.</returns> 1182 <returns>true if user should be authenticated.</returns>
1183 <remarks>throw ForbiddenException from your delegate if no more attempts are allowed.</remarks> 1183 <remarks>throw ForbiddenException from your delegate if no more attempts are allowed.</remarks>
1184 <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception> 1184 <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception>
1185 </member> 1185 </member>
1186 <member name="P:HttpServer.Authentication.AuthModule.Name"> 1186 <member name="P:HttpServer.Authentication.AuthModule.Name">
1187 <summary> 1187 <summary>
1188 name used in http request. 1188 name used in http request.
1189 </summary> 1189 </summary>
1190 </member> 1190 </member>
1191 <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)"> 1191 <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)">
1192 <summary> 1192 <summary>
1193 Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class. 1193 Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class.
1194 </summary> 1194 </summary>
1195 <param name="authenticator">Delegate used to provide information used during authentication.</param> 1195 <param name="authenticator">Delegate used to provide information used during authentication.</param>
1196 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param> 1196 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param>
1197 </member> 1197 </member>
1198 <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)"> 1198 <member name="M:HttpServer.Authentication.BasicAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)">
1199 <summary> 1199 <summary>
1200 Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class. 1200 Initializes a new instance of the <see cref="T:HttpServer.Authentication.BasicAuthentication"/> class.
1201 </summary> 1201 </summary>
1202 <param name="authenticator">Delegate used to provide information used during authentication.</param> 1202 <param name="authenticator">Delegate used to provide information used during authentication.</param>
1203 </member> 1203 </member>
1204 <member name="M:HttpServer.Authentication.BasicAuthentication.CreateResponse(System.String,System.Object[])"> 1204 <member name="M:HttpServer.Authentication.BasicAuthentication.CreateResponse(System.String,System.Object[])">
1205 <summary> 1205 <summary>
1206 Create a response that can be sent in the WWW-Authenticate header. 1206 Create a response that can be sent in the WWW-Authenticate header.
1207 </summary> 1207 </summary>
1208 <param name="realm">Realm that the user should authenticate in</param> 1208 <param name="realm">Realm that the user should authenticate in</param>
1209 <param name="options">Not used in basic auth</param> 1209 <param name="options">Not used in basic auth</param>
1210 <returns>A correct auth request.</returns> 1210 <returns>A correct auth request.</returns>
1211 </member> 1211 </member>
1212 <member name="M:HttpServer.Authentication.BasicAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])"> 1212 <member name="M:HttpServer.Authentication.BasicAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])">
1213 <summary> 1213 <summary>
1214 An authentication response have been received from the web browser. 1214 An authentication response have been received from the web browser.
1215 Check if it's correct 1215 Check if it's correct
1216 </summary> 1216 </summary>
1217 <param name="authenticationHeader">Contents from the Authorization header</param> 1217 <param name="authenticationHeader">Contents from the Authorization header</param>
1218 <param name="realm">Realm that should be authenticated</param> 1218 <param name="realm">Realm that should be authenticated</param>
1219 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param> 1219 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
1220 <param name="options">Not used in basic auth</param> 1220 <param name="options">Not used in basic auth</param>
1221 <returns>Authentication object that is stored for the request. A user class or something like that.</returns> 1221 <returns>Authentication object that is stored for the request. A user class or something like that.</returns>
1222 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception> 1222 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
1223 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception> 1223 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
1224 </member> 1224 </member>
1225 <member name="P:HttpServer.Authentication.BasicAuthentication.Name"> 1225 <member name="P:HttpServer.Authentication.BasicAuthentication.Name">
1226 <summary> 1226 <summary>
1227 name used in http request. 1227 name used in http request.
1228 </summary> 1228 </summary>
1229 </member> 1229 </member>
1230 <member name="T:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode"> 1230 <member name="T:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode">
1231 <summary> 1231 <summary>
1232 The follow node allows users to display code in a haml document 1232 The follow node allows users to display code in a haml document
1233 </summary> 1233 </summary>
1234 <example> 1234 <example>
1235 #main Welcome =user.FirstName 1235 #main Welcome =user.FirstName
1236 </example> 1236 </example>
1237 </member> 1237 </member>
1238 <member name="T:HttpServer.Rendering.Haml.Nodes.ChildNode"> 1238 <member name="T:HttpServer.Rendering.Haml.Nodes.ChildNode">
1239 <summary> 1239 <summary>
1240 Child nodes may not be the first node on a line 1240 Child nodes may not be the first node on a line
1241 </summary> 1241 </summary>
1242 </member> 1242 </member>
1243 <member name="T:HttpServer.Rendering.Haml.Nodes.Node"> 1243 <member name="T:HttpServer.Rendering.Haml.Nodes.Node">
1244 <summary> 1244 <summary>
1245 A node represents a controller code and contents. For example a html tag, an attribute list or something else. 1245 A node represents a controller code and contents. For example a html tag, an attribute list or something else.
1246 </summary> 1246 </summary>
1247 </member> 1247 </member>
1248 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 1248 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
1249 <summary> 1249 <summary>
1250 Add a new node 1250 Add a new node
1251 </summary> 1251 </summary>
1252 <param name="parent">parent node.</param> 1252 <param name="parent">parent node.</param>
1253 </member> 1253 </member>
1254 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.AddModifier(HttpServer.Rendering.Haml.Nodes.Node)"> 1254 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.AddModifier(HttpServer.Rendering.Haml.Nodes.Node)">
1255 <summary> 1255 <summary>
1256 Modifiers are used to modify the first node on the line. 1256 Modifiers are used to modify the first node on the line.
1257 Typical modifiers are attribute lists, class names and IDs. 1257 Typical modifiers are attribute lists, class names and IDs.
1258 </summary> 1258 </summary>
1259 <param name="node">Modifier node</param> 1259 <param name="node">Modifier node</param>
1260 </member> 1260 </member>
1261 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 1261 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
1262 <summary> 1262 <summary>
1263 Parse node contents add return a fresh node. 1263 Parse node contents add return a fresh node.
1264 </summary> 1264 </summary>
1265 <param name="prototypes">List containing all node types</param> 1265 <param name="prototypes">List containing all node types</param>
1266 <param name="parent">Node that this is a subnode to. Can be null</param> 1266 <param name="parent">Node that this is a subnode to. Can be null</param>
1267 <param name="line">Line to parse</param> 1267 <param name="line">Line to parse</param>
1268 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 1268 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
1269 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 1269 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
1270 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 1270 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
1271 </member> 1271 </member>
1272 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.CanHandle(System.String,System.Boolean)"> 1272 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.CanHandle(System.String,System.Boolean)">
1273 <summary> 1273 <summary>
1274 determines if this node can handle the line (by checking the first word); 1274 determines if this node can handle the line (by checking the first word);
1275 </summary> 1275 </summary>
1276 <param name="word">Controller char (word)</param> 1276 <param name="word">Controller char (word)</param>
1277 <returns>true if text belongs to this node type</returns> 1277 <returns>true if text belongs to this node type</returns>
1278 <param name="firstNode">First node on line, used since some nodes cannot exist on their own on a line.</param> 1278 <param name="firstNode">First node on line, used since some nodes cannot exist on their own on a line.</param>
1279 </member> 1279 </member>
1280 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToHtml"> 1280 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToHtml">
1281 <summary> 1281 <summary>
1282 Generate HTML code (with ASP tags) 1282 Generate HTML code (with ASP tags)
1283 </summary> 1283 </summary>
1284 <returns></returns> 1284 <returns></returns>
1285 </member> 1285 </member>
1286 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@)"> 1286 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@)">
1287 <summary> 1287 <summary>
1288 Converts the node to c# code 1288 Converts the node to c# code
1289 </summary> 1289 </summary>
1290 <param name="inString">true if we are inside the internal stringbuilder</param> 1290 <param name="inString">true if we are inside the internal stringbuilder</param>
1291 <returns>c# code</returns> 1291 <returns>c# code</returns>
1292 </member> 1292 </member>
1293 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@,System.Boolean)"> 1293 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@,System.Boolean)">
1294 <summary> 1294 <summary>
1295 Convert the node to c# code 1295 Convert the node to c# code
1296 </summary> 1296 </summary>
1297 <param name="inString">True if we are inside the internal stringbuilder</param> 1297 <param name="inString">True if we are inside the internal stringbuilder</param>
1298 <param name="smallEnough">true if all subnodes fit on one line</param> 1298 <param name="smallEnough">true if all subnodes fit on one line</param>
1299 <returns>c# code</returns> 1299 <returns>c# code</returns>
1300 </member> 1300 </member>
1301 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 1301 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
1302 <summary> 1302 <summary>
1303 Generate C# code of the node 1303 Generate C# code of the node
1304 </summary> 1304 </summary>
1305 <param name="inString">true if we are inside the internal stringbuilder</param> 1305 <param name="inString">true if we are inside the internal stringbuilder</param>
1306 <param name="smallEnough">code is small enough to fit on one row.</param> 1306 <param name="smallEnough">code is small enough to fit on one row.</param>
1307 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 1307 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
1308 <returns>c# code</returns> 1308 <returns>c# code</returns>
1309 </member> 1309 </member>
1310 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.GetIntendation"> 1310 <member name="M:HttpServer.Rendering.Haml.Nodes.Node.GetIntendation">
1311 <summary> 1311 <summary>
1312 Get intendation level for this node. 1312 Get intendation level for this node.
1313 </summary> 1313 </summary>
1314 <returns></returns> 1314 <returns></returns>
1315 </member> 1315 </member>
1316 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.IsTextNode"> 1316 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.IsTextNode">
1317 <summary> 1317 <summary>
1318 Returns true if the node is applicable after another node as text instead of being applied as a modifier 1318 Returns true if the node is applicable after another node as text instead of being applied as a modifier
1319 </summary> 1319 </summary>
1320 </member> 1320 </member>
1321 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.AllChildrenCount"> 1321 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.AllChildrenCount">
1322 <summary> 1322 <summary>
1323 Count our children and our childrens children and so on... 1323 Count our children and our childrens children and so on...
1324 </summary> 1324 </summary>
1325 </member> 1325 </member>
1326 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Children"> 1326 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Children">
1327 <summary> 1327 <summary>
1328 All child nodes for this node. 1328 All child nodes for this node.
1329 </summary> 1329 </summary>
1330 </member> 1330 </member>
1331 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.LineInfo"> 1331 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.LineInfo">
1332 <summary> 1332 <summary>
1333 Should only be set for each parent. 1333 Should only be set for each parent.
1334 </summary> 1334 </summary>
1335 </member> 1335 </member>
1336 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Modifiers"> 1336 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Modifiers">
1337 <summary> 1337 <summary>
1338 Modifiers are used to modify the first node on the line. 1338 Modifiers are used to modify the first node on the line.
1339 Typical modifiers are attribute lists, class names and IDs. 1339 Typical modifiers are attribute lists, class names and IDs.
1340 </summary> 1340 </summary>
1341 </member> 1341 </member>
1342 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.LastModifier"> 1342 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.LastModifier">
1343 <summary> 1343 <summary>
1344 Last modifier for this node 1344 Last modifier for this node
1345 </summary> 1345 </summary>
1346 <seealso cref="P:HttpServer.Rendering.Haml.Nodes.Node.Modifiers"/> 1346 <seealso cref="P:HttpServer.Rendering.Haml.Nodes.Node.Modifiers"/>
1347 </member> 1347 </member>
1348 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.ModifierCount"> 1348 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.ModifierCount">
1349 <summary> 1349 <summary>
1350 Number of modifiers for this line. 1350 Number of modifiers for this line.
1351 </summary> 1351 </summary>
1352 </member> 1352 </member>
1353 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Parent"> 1353 <member name="P:HttpServer.Rendering.Haml.Nodes.Node.Parent">
1354 <summary> 1354 <summary>
1355 Parent node. 1355 Parent node.
1356 </summary> 1356 </summary>
1357 </member> 1357 </member>
1358 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 1358 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
1359 <summary> 1359 <summary>
1360 Child nodes may not be the first node on a line 1360 Child nodes may not be the first node on a line
1361 </summary> 1361 </summary>
1362 <param name="parent">parent node</param> 1362 <param name="parent">parent node</param>
1363 </member> 1363 </member>
1364 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.AddMe(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.Nodes.Node)"> 1364 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.AddMe(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,HttpServer.Rendering.Haml.Nodes.Node)">
1365 <summary> 1365 <summary>
1366 Creates a DIV node and add's the specified node to it. 1366 Creates a DIV node and add's the specified node to it.
1367 </summary> 1367 </summary>
1368 <param name="prototypes">Contains all prototypes for each control char. used to instanciate new nodes.</param> 1368 <param name="prototypes">Contains all prototypes for each control char. used to instanciate new nodes.</param>
1369 <param name="parent">parent node</param> 1369 <param name="parent">parent node</param>
1370 <param name="line">current line information</param> 1370 <param name="line">current line information</param>
1371 <param name="me">node to add to the DIV node</param> 1371 <param name="me">node to add to the DIV node</param>
1372 <returns>current node</returns> 1372 <returns>current node</returns>
1373 </member> 1373 </member>
1374 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.GetEndPos(System.Int32,System.String,System.Char)"> 1374 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.GetEndPos(System.Int32,System.String,System.Char)">
1375 <summary> 1375 <summary>
1376 Get endposition for this modifier. 1376 Get endposition for this modifier.
1377 </summary> 1377 </summary>
1378 <param name="offset">where to start searching</param> 1378 <param name="offset">where to start searching</param>
1379 <param name="line">contents of the current line</param> 1379 <param name="line">contents of the current line</param>
1380 <param name="terminator">char that tells us that this is the end position</param> 1380 <param name="terminator">char that tells us that this is the end position</param>
1381 <returns>index on the current line</returns> 1381 <returns>index on the current line</returns>
1382 </member> 1382 </member>
1383 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.GetEndPos(System.Int32,System.String)"> 1383 <member name="M:HttpServer.Rendering.Haml.Nodes.ChildNode.GetEndPos(System.Int32,System.String)">
1384 <summary> 1384 <summary>
1385 Get endposition for this modifier. 1385 Get endposition for this modifier.
1386 </summary> 1386 </summary>
1387 <param name="offset">where to start searching</param> 1387 <param name="offset">where to start searching</param>
1388 <param name="line">contents of the current line</param> 1388 <param name="line">contents of the current line</param>
1389 <returns>index on the current line</returns> 1389 <returns>index on the current line</returns>
1390 </member> 1390 </member>
1391 <member name="P:HttpServer.Rendering.Haml.Nodes.ChildNode.IsTextNode"> 1391 <member name="P:HttpServer.Rendering.Haml.Nodes.ChildNode.IsTextNode">
1392 <summary> 1392 <summary>
1393 This is a plain text node 1393 This is a plain text node
1394 </summary> 1394 </summary>
1395 </member> 1395 </member>
1396 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 1396 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
1397 <summary> 1397 <summary>
1398 Contains C# code that will be rendered into the view. 1398 Contains C# code that will be rendered into the view.
1399 </summary> 1399 </summary>
1400 <param name="parent">Parent node</param> 1400 <param name="parent">Parent node</param>
1401 </member> 1401 </member>
1402 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 1402 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
1403 <summary> 1403 <summary>
1404 Parse node contents add return a fresh node. 1404 Parse node contents add return a fresh node.
1405 </summary> 1405 </summary>
1406 <param name="prototypes">List containing all node types</param> 1406 <param name="prototypes">List containing all node types</param>
1407 <param name="parent">Node that this is a subnode to. Can be null</param> 1407 <param name="parent">Node that this is a subnode to. Can be null</param>
1408 <param name="line">Line to parse</param> 1408 <param name="line">Line to parse</param>
1409 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 1409 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
1410 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 1410 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
1411 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 1411 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
1412 </member> 1412 </member>
1413 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.CanHandle(System.String,System.Boolean)"> 1413 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.CanHandle(System.String,System.Boolean)">
1414 <summary> 1414 <summary>
1415 determines if this node can handle the line (by checking the first word); 1415 determines if this node can handle the line (by checking the first word);
1416 </summary> 1416 </summary>
1417 <param name="word">Controller char (word)</param> 1417 <param name="word">Controller char (word)</param>
1418 <returns>true if text belongs to this node type</returns> 1418 <returns>true if text belongs to this node type</returns>
1419 <param name="firstNode">first node on line</param> 1419 <param name="firstNode">first node on line</param>
1420 </member> 1420 </member>
1421 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.ToHtml"> 1421 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.ToHtml">
1422 <summary> 1422 <summary>
1423 Generate HTML for this node (with asp tags for code) 1423 Generate HTML for this node (with asp tags for code)
1424 </summary> 1424 </summary>
1425 <returns></returns> 1425 <returns></returns>
1426 </member> 1426 </member>
1427 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 1427 <member name="M:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
1428 <summary> 1428 <summary>
1429 = is placed at the end of a tag definition, after class, id, and attribute declarations. 1429 = is placed at the end of a tag definition, after class, id, and attribute declarations.
1430 It’s just a shortcut for inserting Ruby code into an element. It works the same as = without a tag: 1430 It’s just a shortcut for inserting Ruby code into an element. It works the same as = without a tag:
1431 it inserts the result of the Ruby code into the template. 1431 it inserts the result of the Ruby code into the template.
1432 However, if the result is short enough, it is displayed entirely on one line. 1432 However, if the result is short enough, it is displayed entirely on one line.
1433 </summary> 1433 </summary>
1434 <param name="inString">True if we are inside the internal stringbuilder</param> 1434 <param name="inString">True if we are inside the internal stringbuilder</param>
1435 <param name="smallEnough">true if all subnodes fit on one line</param> 1435 <param name="smallEnough">true if all subnodes fit on one line</param>
1436 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 1436 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
1437 <returns>c# code</returns> 1437 <returns>c# code</returns>
1438 </member> 1438 </member>
1439 <member name="P:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.IsTextNode"> 1439 <member name="P:HttpServer.Rendering.Haml.Nodes.DisplayCodeNode.IsTextNode">
1440 <summary> 1440 <summary>
1441 Determines if this is a textnode (containg plain text) 1441 Determines if this is a textnode (containg plain text)
1442 </summary> 1442 </summary>
1443 </member> 1443 </member>
1444 <member name="T:HttpServer.Rendering.Haml.Nodes.AttributeNode"> 1444 <member name="T:HttpServer.Rendering.Haml.Nodes.AttributeNode">
1445 <summary> 1445 <summary>
1446 Contains HTML attributes. 1446 Contains HTML attributes.
1447 </summary> 1447 </summary>
1448 </member> 1448 </member>
1449 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node,System.Collections.Generic.List{HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute})"> 1449 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node,System.Collections.Generic.List{HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute})">
1450 <summary> 1450 <summary>
1451 Create a new node 1451 Create a new node
1452 </summary> 1452 </summary>
1453 <param name="parent">parent node</param> 1453 <param name="parent">parent node</param>
1454 <param name="col">collection of attributes</param> 1454 <param name="col">collection of attributes</param>
1455 </member> 1455 </member>
1456 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 1456 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
1457 <summary> 1457 <summary>
1458 create an attribute node 1458 create an attribute node
1459 </summary> 1459 </summary>
1460 <param name="parent">parent node</param> 1460 <param name="parent">parent node</param>
1461 </member> 1461 </member>
1462 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.GetAttribute(System.String)"> 1462 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.GetAttribute(System.String)">
1463 <summary> 1463 <summary>
1464 Get an attribute 1464 Get an attribute
1465 </summary> 1465 </summary>
1466 <param name="name">name of the attribute (case sensitive)</param> 1466 <param name="name">name of the attribute (case sensitive)</param>
1467 <returns>attribute if found; otherwise null.</returns> 1467 <returns>attribute if found; otherwise null.</returns>
1468 </member> 1468 </member>
1469 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 1469 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
1470 <summary> 1470 <summary>
1471 Parse node contents add return a fresh node. 1471 Parse node contents add return a fresh node.
1472 </summary> 1472 </summary>
1473 <param name="prototypes">List containing all node types</param> 1473 <param name="prototypes">List containing all node types</param>
1474 <param name="parent">Node that this is a subnode to. Can be null</param> 1474 <param name="parent">Node that this is a subnode to. Can be null</param>
1475 <param name="line">Line to parse</param> 1475 <param name="line">Line to parse</param>
1476 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 1476 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
1477 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 1477 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
1478 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 1478 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
1479 </member> 1479 </member>
1480 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.CanHandle(System.String,System.Boolean)"> 1480 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.CanHandle(System.String,System.Boolean)">
1481 <summary> 1481 <summary>
1482 determines if this node can handle the line (by checking the first word); 1482 determines if this node can handle the line (by checking the first word);
1483 </summary> 1483 </summary>
1484 <param name="word">Controller char (word)</param> 1484 <param name="word">Controller char (word)</param>
1485 <returns>true if text belongs to this node type</returns> 1485 <returns>true if text belongs to this node type</returns>
1486 <param name="firstNode">first node on line</param> 1486 <param name="firstNode">first node on line</param>
1487 </member> 1487 </member>
1488 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.ToHtml"> 1488 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.ToHtml">
1489 <summary> 1489 <summary>
1490 Convert node to HTML (with ASP-tags) 1490 Convert node to HTML (with ASP-tags)
1491 </summary> 1491 </summary>
1492 <returns>HTML string</returns> 1492 <returns>HTML string</returns>
1493 </member> 1493 </member>
1494 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 1494 <member name="M:HttpServer.Rendering.Haml.Nodes.AttributeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
1495 <summary> 1495 <summary>
1496 Convert the node to c# code 1496 Convert the node to c# code
1497 </summary> 1497 </summary>
1498 <param name="inString">True if we are inside the internal stringbuilder</param> 1498 <param name="inString">True if we are inside the internal stringbuilder</param>
1499 <param name="smallEnough">true if all subnodes fit on one line</param> 1499 <param name="smallEnough">true if all subnodes fit on one line</param>
1500 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 1500 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
1501 <returns>c# code</returns> 1501 <returns>c# code</returns>
1502 </member> 1502 </member>
1503 <member name="P:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attributes"> 1503 <member name="P:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attributes">
1504 <summary> 1504 <summary>
1505 html attributes 1505 html attributes
1506 </summary> 1506 </summary>
1507 </member> 1507 </member>
1508 <member name="T:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute"> 1508 <member name="T:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute">
1509 <summary> 1509 <summary>
1510 A attribute 1510 A attribute
1511 </summary> 1511 </summary>
1512 </member> 1512 </member>
1513 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Simple"> 1513 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Simple">
1514 <summary> 1514 <summary>
1515 value is a simple word or quoted text 1515 value is a simple word or quoted text
1516 </summary> 1516 </summary>
1517 </member> 1517 </member>
1518 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Name"> 1518 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Name">
1519 <summary> 1519 <summary>
1520 Name of the attribute 1520 Name of the attribute
1521 </summary> 1521 </summary>
1522 </member> 1522 </member>
1523 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Value"> 1523 <member name="F:HttpServer.Rendering.Haml.Nodes.AttributeNode.Attribute.Value">
1524 <summary> 1524 <summary>
1525 Value, can be a statement, variable or quoted text. 1525 Value, can be a statement, variable or quoted text.
1526 </summary> 1526 </summary>
1527 </member> 1527 </member>
1528 <member name="T:HttpServer.Rendering.TemplateArguments"> 1528 <member name="T:HttpServer.Rendering.TemplateArguments">
1529 <summary> 1529 <summary>
1530 Arguments being used in a template. 1530 Arguments being used in a template.
1531 </summary> 1531 </summary>
1532 <seealso cref="T:HttpServer.Rendering.TemplateManager"/> 1532 <seealso cref="T:HttpServer.Rendering.TemplateManager"/>
1533 <seealso cref="T:HttpServer.Rendering.ITinyTemplate"/> 1533 <seealso cref="T:HttpServer.Rendering.ITinyTemplate"/>
1534 </member> 1534 </member>
1535 <member name="F:HttpServer.Rendering.TemplateArguments._arguments"> 1535 <member name="F:HttpServer.Rendering.TemplateArguments._arguments">
1536 <summary> 1536 <summary>
1537 Holds the arguments connected to their names for quick access. 1537 Holds the arguments connected to their names for quick access.
1538 (since the ArgumentContainer also holds the name for the argument the mapping with strings is somewhat redundant 1538 (since the ArgumentContainer also holds the name for the argument the mapping with strings is somewhat redundant
1539 but since the data do 'belong' to the ArgumentContainer this solution was chosen to speed up access) 1539 but since the data do 'belong' to the ArgumentContainer this solution was chosen to speed up access)
1540 </summary> 1540 </summary>
1541 </member> 1541 </member>
1542 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor"> 1542 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor">
1543 <summary> 1543 <summary>
1544 Initializes the class without any set arguments. 1544 Initializes the class without any set arguments.
1545 </summary> 1545 </summary>
1546 </member> 1546 </member>
1547 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor(HttpServer.Rendering.TemplateArguments)"> 1547 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor(HttpServer.Rendering.TemplateArguments)">
1548 <summary> 1548 <summary>
1549 Initializes the class with all the arguments of the parameter class. 1549 Initializes the class with all the arguments of the parameter class.
1550 </summary> 1550 </summary>
1551 <param name="arguments">Cannot be null</param> 1551 <param name="arguments">Cannot be null</param>
1552 <exception cref="T:System.ArgumentNullException">If arguments is null</exception> 1552 <exception cref="T:System.ArgumentNullException">If arguments is null</exception>
1553 </member> 1553 </member>
1554 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor(System.Object[])"> 1554 <member name="M:HttpServer.Rendering.TemplateArguments.#ctor(System.Object[])">
1555 <summary> 1555 <summary>
1556 Initializes the class with the objects in the parameterlist. 1556 Initializes the class with the objects in the parameterlist.
1557 Note that each object that is null must be followed by a type. 1557 Note that each object that is null must be followed by a type.
1558 </summary> 1558 </summary>
1559 <param name="arguments">Should contain ordered pairs/truples of string, object and type where type is optional if the object isn´t null</param> 1559 <param name="arguments">Should contain ordered pairs/truples of string, object and type where type is optional if the object isn´t null</param>
1560 <example>new TemplateArguments("Dir", "\", "Users", null, typeof(User));</example> 1560 <example>new TemplateArguments("Dir", "\", "Users", null, typeof(User));</example>
1561 <exception cref="T:System.ArgumentException">If optional type differs from type of object (if object != null) or argument name is duplicate</exception> 1561 <exception cref="T:System.ArgumentException">If optional type differs from type of object (if object != null) or argument name is duplicate</exception>
1562 <exception cref="T:System.ArgumentException">If the order of objects is incorrect</exception> 1562 <exception cref="T:System.ArgumentException">If the order of objects is incorrect</exception>
1563 <exception cref="T:System.ArgumentNullException">If any argument name or type is null</exception> 1563 <exception cref="T:System.ArgumentNullException">If any argument name or type is null</exception>
1564 </member> 1564 </member>
1565 <member name="M:HttpServer.Rendering.TemplateArguments.Update(HttpServer.Rendering.TemplateArguments)"> 1565 <member name="M:HttpServer.Rendering.TemplateArguments.Update(HttpServer.Rendering.TemplateArguments)">
1566 <summary> 1566 <summary>
1567 A function that merges two argument holders updating and adding values 1567 A function that merges two argument holders updating and adding values
1568 </summary> 1568 </summary>
1569 <param name="arguments"></param> 1569 <param name="arguments"></param>
1570 <exception cref="T:System.ArgumentNullException">If arguments is null</exception> 1570 <exception cref="T:System.ArgumentNullException">If arguments is null</exception>
1571 </member> 1571 </member>
1572 <member name="M:HttpServer.Rendering.TemplateArguments.Finalize"> 1572 <member name="M:HttpServer.Rendering.TemplateArguments.Finalize">
1573 <summary> 1573 <summary>
1574 Clears added arguments 1574 Clears added arguments
1575 </summary> 1575 </summary>
1576 </member> 1576 </member>
1577 <member name="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object)"> 1577 <member name="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object)">
1578 <summary> 1578 <summary>
1579 Adds an argument. 1579 Adds an argument.
1580 (Will throw ArgumentException on duplicates since adding an argument twice points to incorrect code, for ways around 1580 (Will throw ArgumentException on duplicates since adding an argument twice points to incorrect code, for ways around
1581 this <see cref="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object)"/> 1581 this <see cref="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object)"/>
1582 </summary> 1582 </summary>
1583 <param name="argumentName">Cannot be null</param> 1583 <param name="argumentName">Cannot be null</param>
1584 <param name="argumentObject">Cannot be null</param> 1584 <param name="argumentObject">Cannot be null</param>
1585 <exception cref="T:System.NullReferenceException">If argumentName or argumentObject is null</exception> 1585 <exception cref="T:System.NullReferenceException">If argumentName or argumentObject is null</exception>
1586 <exception cref="T:System.ArgumentException">If an argument named argumentName already exists</exception> 1586 <exception cref="T:System.ArgumentException">If an argument named argumentName already exists</exception>
1587 </member> 1587 </member>
1588 <member name="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object,System.Type)"> 1588 <member name="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object,System.Type)">
1589 <summary> 1589 <summary>
1590 Adds an argument. Allows for argumentObject to be null 1590 Adds an argument. Allows for argumentObject to be null
1591 (Will throw ArgumentException <see cref="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object)"/> 1591 (Will throw ArgumentException <see cref="M:HttpServer.Rendering.TemplateArguments.Add(System.String,System.Object)"/>
1592 </summary> 1592 </summary>
1593 <param name="argumentName">Cannot be null</param> 1593 <param name="argumentName">Cannot be null</param>
1594 <param name="argumentObject"></param> 1594 <param name="argumentObject"></param>
1595 <param name="argumentType">Cannot be null</param> 1595 <param name="argumentType">Cannot be null</param>
1596 <exception cref="T:System.NullReferenceException">If argumentName or argumentType is null</exception> 1596 <exception cref="T:System.NullReferenceException">If argumentName or argumentType is null</exception>
1597 <exception cref="T:System.ArgumentException">If an argument named argumentName already exists or argumentObject != null and typeof(argumentObject) differs from argumentType</exception> 1597 <exception cref="T:System.ArgumentException">If an argument named argumentName already exists or argumentObject != null and typeof(argumentObject) differs from argumentType</exception>
1598 </member> 1598 </member>
1599 <member name="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object)"> 1599 <member name="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object)">
1600 <summary> 1600 <summary>
1601 Updates an already added argument 1601 Updates an already added argument
1602 </summary> 1602 </summary>
1603 <param name="argumentName">Cannot be null</param> 1603 <param name="argumentName">Cannot be null</param>
1604 <param name="argumentObject">Cannot be null</param> 1604 <param name="argumentObject">Cannot be null</param>
1605 <exception cref="T:System.ArgumentException">If no argument named argumentName exists</exception> 1605 <exception cref="T:System.ArgumentException">If no argument named argumentName exists</exception>
1606 <exception cref="T:System.ArgumentNullException">If argumentName or argumentObject is null</exception> 1606 <exception cref="T:System.ArgumentNullException">If argumentName or argumentObject is null</exception>
1607 </member> 1607 </member>
1608 <member name="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object,System.Type)"> 1608 <member name="M:HttpServer.Rendering.TemplateArguments.Update(System.String,System.Object,System.Type)">
1609 <summary> 1609 <summary>
1610 Updates an already added argument, allows for argumentObject to be null 1610 Updates an already added argument, allows for argumentObject to be null
1611 </summary> 1611 </summary>
1612 <param name="argumentName">Cannot be null</param> 1612 <param name="argumentName">Cannot be null</param>
1613 <param name="argumentObject"></param> 1613 <param name="argumentObject"></param>
1614 <param name="argumentType">Cannot be null</param> 1614 <param name="argumentType">Cannot be null</param>
1615 <exception cref="T:System.ArgumentNullException">If argumentName or argumentType is null</exception> 1615 <exception cref="T:System.ArgumentNullException">If argumentName or argumentType is null</exception>
1616 <exception cref="T:System.ArgumentException">If an argument named argumentName doesn´t exists or argumentObject != null and typeof(argumentObject) differs from argumentType</exception> 1616 <exception cref="T:System.ArgumentException">If an argument named argumentName doesn´t exists or argumentObject != null and typeof(argumentObject) differs from argumentType</exception>
1617 </member> 1617 </member>
1618 <member name="M:HttpServer.Rendering.TemplateArguments.Clear"> 1618 <member name="M:HttpServer.Rendering.TemplateArguments.Clear">
1619 <summary> 1619 <summary>
1620 Clears all added arguments 1620 Clears all added arguments
1621 </summary> 1621 </summary>
1622 </member> 1622 </member>
1623 <member name="M:HttpServer.Rendering.TemplateArguments.GetArguments"> 1623 <member name="M:HttpServer.Rendering.TemplateArguments.GetArguments">
1624 <summary> 1624 <summary>
1625 Retrieves the arguments 1625 Retrieves the arguments
1626 (Does so now by copying the values to a new array, could be optimized?) 1626 (Does so now by copying the values to a new array, could be optimized?)
1627 </summary> 1627 </summary>
1628 <returns>An array containing arguments with name, object and type</returns> 1628 <returns>An array containing arguments with name, object and type</returns>
1629 </member> 1629 </member>
1630 <member name="M:HttpServer.Rendering.TemplateArguments.GetHashCode"> 1630 <member name="M:HttpServer.Rendering.TemplateArguments.GetHashCode">
1631 <summary> 1631 <summary>
1632 Returns a individual hashcode built upon the specified types the class is holding 1632 Returns a individual hashcode built upon the specified types the class is holding
1633 </summary> 1633 </summary>
1634 <remarks>The hashcode is made by joining the typenames of all held arguments and making a string hashcode from them</remarks> 1634 <remarks>The hashcode is made by joining the typenames of all held arguments and making a string hashcode from them</remarks>
1635 <returns></returns> 1635 <returns></returns>
1636 </member> 1636 </member>
1637 <member name="M:HttpServer.Rendering.TemplateArguments.GetFullTypeName(System.Type)"> 1637 <member name="M:HttpServer.Rendering.TemplateArguments.GetFullTypeName(System.Type)">
1638 <summary> 1638 <summary>
1639 Retrieves a concated typename ie DictinaryInt32String 1639 Retrieves a concated typename ie DictinaryInt32String
1640 </summary> 1640 </summary>
1641 <param name="type">The type to retrieve the name for</param> 1641 <param name="type">The type to retrieve the name for</param>
1642 </member> 1642 </member>
1643 <member name="M:HttpServer.Rendering.TemplateArguments.Contains(System.String)"> 1643 <member name="M:HttpServer.Rendering.TemplateArguments.Contains(System.String)">
1644 <summary> 1644 <summary>
1645 Checks whether a specific argument is specified or not. 1645 Checks whether a specific argument is specified or not.
1646 </summary> 1646 </summary>
1647 <param name="name">Argument name</param> 1647 <param name="name">Argument name</param>
1648 <returns>true if argument is specified; otherwise false.</returns> 1648 <returns>true if argument is specified; otherwise false.</returns>
1649 </member> 1649 </member>
1650 <member name="P:HttpServer.Rendering.TemplateArguments.Item(System.String)"> 1650 <member name="P:HttpServer.Rendering.TemplateArguments.Item(System.String)">
1651 <summary> 1651 <summary>
1652 Function to make it possible to index out known arguments 1652 Function to make it possible to index out known arguments
1653 </summary> 1653 </summary>
1654 <param name="name">The name of an added argument</param> 1654 <param name="name">The name of an added argument</param>
1655 <returns>Null if no ArgumentContainer by name was found</returns> 1655 <returns>Null if no ArgumentContainer by name was found</returns>
1656 </member> 1656 </member>
1657 <member name="T:HttpServer.Rendering.ArgumentContainer"> 1657 <member name="T:HttpServer.Rendering.ArgumentContainer">
1658 <summary> 1658 <summary>
1659 A container class grouping mapping name, argument type and the argument object 1659 A container class grouping mapping name, argument type and the argument object
1660 </summary> 1660 </summary>
1661 </member> 1661 </member>
1662 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentName"> 1662 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentName">
1663 <summary> 1663 <summary>
1664 Contains the name mapped to the argument 1664 Contains the name mapped to the argument
1665 </summary> 1665 </summary>
1666 </member> 1666 </member>
1667 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentType"> 1667 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentType">
1668 <summary> 1668 <summary>
1669 Contains the type of the argument, this must be valid if _argumentObject is null 1669 Contains the type of the argument, this must be valid if _argumentObject is null
1670 </summary> 1670 </summary>
1671 </member> 1671 </member>
1672 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentObject"> 1672 <member name="F:HttpServer.Rendering.ArgumentContainer._argumentObject">
1673 <summary> 1673 <summary>
1674 Holds the actual object 1674 Holds the actual object
1675 </summary> 1675 </summary>
1676 </member> 1676 </member>
1677 <member name="M:HttpServer.Rendering.ArgumentContainer.#ctor(System.String,System.Object)"> 1677 <member name="M:HttpServer.Rendering.ArgumentContainer.#ctor(System.String,System.Object)">
1678 <summary> 1678 <summary>
1679 Constructor to initiate an ArgumentContainer, will set the ArgumentType to the value of the argumentObject's type 1679 Constructor to initiate an ArgumentContainer, will set the ArgumentType to the value of the argumentObject's type
1680 </summary> 1680 </summary>
1681 <param name="argumentName">Cannot be null</param> 1681 <param name="argumentName">Cannot be null</param>
1682 <param name="argumentObject">Cannot be null</param> 1682 <param name="argumentObject">Cannot be null</param>
1683 <exception cref="T:System.ArgumentNullException">If argumentName or argumentObject is null</exception> 1683 <exception cref="T:System.ArgumentNullException">If argumentName or argumentObject is null</exception>
1684 </member> 1684 </member>
1685 <member name="M:HttpServer.Rendering.ArgumentContainer.#ctor(System.String,System.Object,System.Type)"> 1685 <member name="M:HttpServer.Rendering.ArgumentContainer.#ctor(System.String,System.Object,System.Type)">
1686 <summary> 1686 <summary>
1687 Alternative constructor allowing argumentObject parameter to be null 1687 Alternative constructor allowing argumentObject parameter to be null
1688 </summary> 1688 </summary>
1689 <param name="argumentName">Cannot be null</param> 1689 <param name="argumentName">Cannot be null</param>
1690 <param name="argumentObject"></param> 1690 <param name="argumentObject"></param>
1691 <param name="argumentType">Cannot be null</param> 1691 <param name="argumentType">Cannot be null</param>
1692 <exception cref="T:System.NullReferenceException">If argumentName or argumentType is null</exception> 1692 <exception cref="T:System.NullReferenceException">If argumentName or argumentType is null</exception>
1693 <exception cref="T:System.ArgumentException">If argumentObject != null and argumentType != typeof(argumentObject)</exception> 1693 <exception cref="T:System.ArgumentException">If argumentObject != null and argumentType != typeof(argumentObject)</exception>
1694 </member> 1694 </member>
1695 <member name="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object)"> 1695 <member name="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object)">
1696 <summary> 1696 <summary>
1697 Sets the object and type of the argument, equal to ArgumentContainer.Object = ... 1697 Sets the object and type of the argument, equal to ArgumentContainer.Object = ...
1698 </summary> 1698 </summary>
1699 <param name="argumentObject">Cannot be null</param> 1699 <param name="argumentObject">Cannot be null</param>
1700 <exception cref="T:System.ArgumentNullException">If argumentObject is null</exception> 1700 <exception cref="T:System.ArgumentNullException">If argumentObject is null</exception>
1701 </member> 1701 </member>
1702 <member name="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object,System.Type)"> 1702 <member name="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object,System.Type)">
1703 <summary> 1703 <summary>
1704 Sets the argument object and type. Type of the object and argumentType must correspond. 1704 Sets the argument object and type. Type of the object and argumentType must correspond.
1705 </summary> 1705 </summary>
1706 <param name="argumentObject"></param> 1706 <param name="argumentObject"></param>
1707 <param name="argumentType">Cannot be null</param> 1707 <param name="argumentType">Cannot be null</param>
1708 <exception cref="T:System.ArgumentNullException">If argumentType is null</exception> 1708 <exception cref="T:System.ArgumentNullException">If argumentType is null</exception>
1709 <exception cref="T:System.ArgumentException">If typeof(argumentObject) differs from argumentType and object != null</exception> 1709 <exception cref="T:System.ArgumentException">If typeof(argumentObject) differs from argumentType and object != null</exception>
1710 </member> 1710 </member>
1711 <member name="P:HttpServer.Rendering.ArgumentContainer.Name"> 1711 <member name="P:HttpServer.Rendering.ArgumentContainer.Name">
1712 <summary> 1712 <summary>
1713 Attribute for retrieving the name. The name cannot be set however because an argument is defined by its name 1713 Attribute for retrieving the name. The name cannot be set however because an argument is defined by its name
1714 changing the name would be changing the arguments meaning, thus an argument needing a name change should rather 1714 changing the name would be changing the arguments meaning, thus an argument needing a name change should rather
1715 be recreated 1715 be recreated
1716 </summary> 1716 </summary>
1717 </member> 1717 </member>
1718 <member name="P:HttpServer.Rendering.ArgumentContainer.Type"> 1718 <member name="P:HttpServer.Rendering.ArgumentContainer.Type">
1719 <summary> 1719 <summary>
1720 Returns the type of the argument object. The property cannot be set since the type depends on and must correspond to 1720 Returns the type of the argument object. The property cannot be set since the type depends on and must correspond to
1721 the type of the object 1721 the type of the object
1722 </summary> 1722 </summary>
1723 </member> 1723 </member>
1724 <member name="P:HttpServer.Rendering.ArgumentContainer.Object"> 1724 <member name="P:HttpServer.Rendering.ArgumentContainer.Object">
1725 <summary> 1725 <summary>
1726 Returns or changes the argument object. If the object is to be changed to null the type must be passed aswell, 1726 Returns or changes the argument object. If the object is to be changed to null the type must be passed aswell,
1727 in that case <see cref="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object,System.Type)"/> 1727 in that case <see cref="M:HttpServer.Rendering.ArgumentContainer.SetObject(System.Object,System.Type)"/>
1728 </summary> 1728 </summary>
1729 <exception cref="T:System.ArgumentNullException">If set value is null</exception> 1729 <exception cref="T:System.ArgumentNullException">If set value is null</exception>
1730 </member> 1730 </member>
1731 <member name="T:HttpServer.Rendering.Haml.Nodes.PartialNode"> 1731 <member name="T:HttpServer.Rendering.Haml.Nodes.PartialNode">
1732 <summary> 1732 <summary>
1733 A partial is a HAML template that is inserted into other HAML templates. 1733 A partial is a HAML template that is inserted into other HAML templates.
1734 </summary> 1734 </summary>
1735 </member> 1735 </member>
1736 <member name="F:HttpServer.Rendering.Haml.Nodes.PartialNode._target"> 1736 <member name="F:HttpServer.Rendering.Haml.Nodes.PartialNode._target">
1737 <summary> 1737 <summary>
1738 Contains the page/controller target for the partial. 1738 Contains the page/controller target for the partial.
1739 The PartialNode should be written as follows: 1739 The PartialNode should be written as follows:
1740 ex. 1740 ex.
1741 1741
1742 _"requestedpage"{parametername="parametervalue",parametername2=parameter2,parametername3=parameter3:typeof(parameter3type)} 1742 _"requestedpage"{parametername="parametervalue",parametername2=parameter2,parametername3=parameter3:typeof(parameter3type)}
1743 </summary> 1743 </summary>
1744 </member> 1744 </member>
1745 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 1745 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
1746 <summary> 1746 <summary>
1747 create a new partial node. 1747 create a new partial node.
1748 </summary> 1748 </summary>
1749 <param name="parent">parent node</param> 1749 <param name="parent">parent node</param>
1750 </member> 1750 </member>
1751 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.CanHandle(System.String,System.Boolean)"> 1751 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.CanHandle(System.String,System.Boolean)">
1752 <summary> 1752 <summary>
1753 Determines if this node can handle the line (by checking the first word); 1753 Determines if this node can handle the line (by checking the first word);
1754 </summary> 1754 </summary>
1755 <param name="word">Controller char (word)</param> 1755 <param name="word">Controller char (word)</param>
1756 <returns>True if text belongs to this node type</returns> 1756 <returns>True if text belongs to this node type</returns>
1757 <param name="firstNode">First node on line.</param> 1757 <param name="firstNode">First node on line.</param>
1758 </member> 1758 </member>
1759 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 1759 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
1760 <summary> 1760 <summary>
1761 Parse node contents add return a fresh node. 1761 Parse node contents add return a fresh node.
1762 </summary> 1762 </summary>
1763 <param name="parent">Node that this is a subnode to. Can be null</param> 1763 <param name="parent">Node that this is a subnode to. Can be null</param>
1764 <param name="prototypes">A list with node types</param> 1764 <param name="prototypes">A list with node types</param>
1765 <param name="line">Line to parse</param> 1765 <param name="line">Line to parse</param>
1766 <param name="offset">Where to start the parsing. Will be set to where the next node should start parsing</param> 1766 <param name="offset">Where to start the parsing. Will be set to where the next node should start parsing</param>
1767 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 1767 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
1768 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 1768 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
1769 </member> 1769 </member>
1770 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 1770 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
1771 <summary> 1771 <summary>
1772 Convert the node to c# code 1772 Convert the node to c# code
1773 </summary> 1773 </summary>
1774 <param name="inString">True if we are inside the internal stringbuilder</param> 1774 <param name="inString">True if we are inside the internal stringbuilder</param>
1775 <param name="smallEnough">true if all subnodes fit on one line</param> 1775 <param name="smallEnough">true if all subnodes fit on one line</param>
1776 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 1776 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
1777 <returns>c# code</returns> 1777 <returns>c# code</returns>
1778 </member> 1778 </member>
1779 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ToHtml"> 1779 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ToHtml">
1780 <summary> 1780 <summary>
1781 Convert node to HTML (with ASP-tags) 1781 Convert node to HTML (with ASP-tags)
1782 </summary> 1782 </summary>
1783 <returns>HTML string</returns> 1783 <returns>HTML string</returns>
1784 </member> 1784 </member>
1785 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.GetCode"> 1785 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.GetCode">
1786 <summary> 1786 <summary>
1787 Helper function to retrieve the code for the partial request 1787 Helper function to retrieve the code for the partial request
1788 </summary> 1788 </summary>
1789 <returns>A string representing the code for invocating a render of the partial</returns> 1789 <returns>A string representing the code for invocating a render of the partial</returns>
1790 </member> 1790 </member>
1791 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ThrowError(System.String)"> 1791 <member name="M:HttpServer.Rendering.Haml.Nodes.PartialNode.ThrowError(System.String)">
1792 <summary> 1792 <summary>
1793 Throw an exception with predefined information 1793 Throw an exception with predefined information
1794 </summary> 1794 </summary>
1795 <param name="reason">why the exception was thrown</param> 1795 <param name="reason">why the exception was thrown</param>
1796 </member> 1796 </member>
1797 <member name="P:HttpServer.Rendering.Haml.Nodes.PartialNode.IsTextNode"> 1797 <member name="P:HttpServer.Rendering.Haml.Nodes.PartialNode.IsTextNode">
1798 <summary> 1798 <summary>
1799 This is a plain text node 1799 This is a plain text node
1800 </summary> 1800 </summary>
1801 </member> 1801 </member>
1802 <member name="P:HttpServer.Rendering.Haml.Nodes.PartialNode.Target"> 1802 <member name="P:HttpServer.Rendering.Haml.Nodes.PartialNode.Target">
1803 <summary> 1803 <summary>
1804 Returns the page/controller target for the node 1804 Returns the page/controller target for the node
1805 </summary> 1805 </summary>
1806 </member> 1806 </member>
1807 <member name="T:HttpServer.Rendering.ResourceTemplateLoader"> 1807 <member name="T:HttpServer.Rendering.ResourceTemplateLoader">
1808 <summary> 1808 <summary>
1809 Loads templates from embedded resources. 1809 Loads templates from embedded resources.
1810 </summary> 1810 </summary>
1811 </member> 1811 </member>
1812 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.LoadTemplates(System.String,System.Reflection.Assembly,System.String)"> 1812 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.LoadTemplates(System.String,System.Reflection.Assembly,System.String)">
1813 <summary> 1813 <summary>
1814 Loads templates from a namespace in the given assembly to an uri 1814 Loads templates from a namespace in the given assembly to an uri
1815 </summary> 1815 </summary>
1816 <param name="toUri">The uri to map the resources to</param> 1816 <param name="toUri">The uri to map the resources to</param>
1817 <param name="fromAssembly">The assembly in which the resources reside</param> 1817 <param name="fromAssembly">The assembly in which the resources reside</param>
1818 <param name="fromNamespace">The namespace from which to load the resources</param> 1818 <param name="fromNamespace">The namespace from which to load the resources</param>
1819 <usage> 1819 <usage>
1820 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views"); 1820 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views");
1821 1821
1822 will make ie the resource MyLib.Models.User.Views.list.Haml accessible via /user/list.haml or /user/list/ 1822 will make ie the resource MyLib.Models.User.Views.list.Haml accessible via /user/list.haml or /user/list/
1823 </usage> 1823 </usage>
1824 </member> 1824 </member>
1825 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.LoadTemplate(System.String)"> 1825 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.LoadTemplate(System.String)">
1826 <summary> 1826 <summary>
1827 Load a template into a <see cref="T:System.IO.TextReader"/> and return it. 1827 Load a template into a <see cref="T:System.IO.TextReader"/> and return it.
1828 </summary> 1828 </summary>
1829 <param name="path">Relative path (and filename) to template.</param> 1829 <param name="path">Relative path (and filename) to template.</param>
1830 <returns> 1830 <returns>
1831 a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null. 1831 a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null.
1832 </returns> 1832 </returns>
1833 </member> 1833 </member>
1834 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.GetFiles(System.String,System.String)"> 1834 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.GetFiles(System.String,System.String)">
1835 <summary> 1835 <summary>
1836 Fetch all files from the resource that matches the specified arguments. 1836 Fetch all files from the resource that matches the specified arguments.
1837 </summary> 1837 </summary>
1838 <param name="path">Where the file should reside.</param> 1838 <param name="path">Where the file should reside.</param>
1839 <param name="filename">Files to check</param> 1839 <param name="filename">Files to check</param>
1840 <returns> 1840 <returns>
1841 a list of files if found; or an empty array if no files are found. 1841 a list of files if found; or an empty array if no files are found.
1842 </returns> 1842 </returns>
1843 </member> 1843 </member>
1844 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)"> 1844 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)">
1845 <summary> 1845 <summary>
1846 Always returns true since a resource won't be updated during execution 1846 Always returns true since a resource won't be updated during execution
1847 </summary> 1847 </summary>
1848 <param name="info"></param> 1848 <param name="info"></param>
1849 <returns></returns> 1849 <returns></returns>
1850 </member> 1850 </member>
1851 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.HasTemplate(System.String)"> 1851 <member name="M:HttpServer.Rendering.ResourceTemplateLoader.HasTemplate(System.String)">
1852 <summary> 1852 <summary>
1853 Returns whether or not the loader has an instance of the file requested 1853 Returns whether or not the loader has an instance of the file requested
1854 </summary> 1854 </summary>
1855 <param name="filename">The name of the template/file</param> 1855 <param name="filename">The name of the template/file</param>
1856 <returns>True if the loader can provide the file</returns> 1856 <returns>True if the loader can provide the file</returns>
1857 </member> 1857 </member>
1858 <member name="T:HttpServer.LogPrio"> 1858 <member name="T:HttpServer.LogPrio">
1859 <summary> 1859 <summary>
1860 Priority for log entries 1860 Priority for log entries
1861 </summary> 1861 </summary>
1862 <seealso cref="T:HttpServer.ILogWriter"/> 1862 <seealso cref="T:HttpServer.ILogWriter"/>
1863 </member> 1863 </member>
1864 <member name="F:HttpServer.LogPrio.Trace"> 1864 <member name="F:HttpServer.LogPrio.Trace">
1865 <summary> 1865 <summary>
1866 Very detailed logs to be able to follow the flow of the program. 1866 Very detailed logs to be able to follow the flow of the program.
1867 </summary> 1867 </summary>
1868 </member> 1868 </member>
1869 <member name="F:HttpServer.LogPrio.Debug"> 1869 <member name="F:HttpServer.LogPrio.Debug">
1870 <summary> 1870 <summary>
1871 Logs to help debug errors in the application 1871 Logs to help debug errors in the application
1872 </summary> 1872 </summary>
1873 </member> 1873 </member>
1874 <member name="F:HttpServer.LogPrio.Info"> 1874 <member name="F:HttpServer.LogPrio.Info">
1875 <summary> 1875 <summary>
1876 Information to be able to keep track of state changes etc. 1876 Information to be able to keep track of state changes etc.
1877 </summary> 1877 </summary>
1878 </member> 1878 </member>
1879 <member name="F:HttpServer.LogPrio.Warning"> 1879 <member name="F:HttpServer.LogPrio.Warning">
1880 <summary> 1880 <summary>
1881 Something did not go as we expected, but it's no problem. 1881 Something did not go as we expected, but it's no problem.
1882 </summary> 1882 </summary>
1883 </member> 1883 </member>
1884 <member name="F:HttpServer.LogPrio.Error"> 1884 <member name="F:HttpServer.LogPrio.Error">
1885 <summary> 1885 <summary>
1886 Something that should not fail failed, but we can still keep 1886 Something that should not fail failed, but we can still keep
1887 on going. 1887 on going.
1888 </summary> 1888 </summary>
1889 </member> 1889 </member>
1890 <member name="F:HttpServer.LogPrio.Fatal"> 1890 <member name="F:HttpServer.LogPrio.Fatal">
1891 <summary> 1891 <summary>
1892 Something failed, and we cannot handle it properly. 1892 Something failed, and we cannot handle it properly.
1893 </summary> 1893 </summary>
1894 </member> 1894 </member>
1895 <member name="T:HttpServer.ILogWriter"> 1895 <member name="T:HttpServer.ILogWriter">
1896 <summary> 1896 <summary>
1897 Interface used to write to log files. 1897 Interface used to write to log files.
1898 </summary> 1898 </summary>
1899 </member> 1899 </member>
1900 <member name="M:HttpServer.ILogWriter.Write(System.Object,HttpServer.LogPrio,System.String)"> 1900 <member name="M:HttpServer.ILogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
1901 <summary> 1901 <summary>
1902 Write an entry to the log file. 1902 Write an entry to the log file.
1903 </summary> 1903 </summary>
1904 <param name="source">object that is writing to the log</param> 1904 <param name="source">object that is writing to the log</param>
1905 <param name="priority">importance of the log message</param> 1905 <param name="priority">importance of the log message</param>
1906 <param name="message">the message</param> 1906 <param name="message">the message</param>
1907 </member> 1907 </member>
1908 <member name="T:HttpServer.ConsoleLogWriter"> 1908 <member name="T:HttpServer.ConsoleLogWriter">
1909 <summary> 1909 <summary>
1910 This class writes to the console. It colors the output depending on the logprio and includes a 3-level stacktrace (in debug mode) 1910 This class writes to the console. It colors the output depending on the logprio and includes a 3-level stacktrace (in debug mode)
1911 </summary> 1911 </summary>
1912 <seealso cref="T:HttpServer.ILogWriter"/> 1912 <seealso cref="T:HttpServer.ILogWriter"/>
1913 </member> 1913 </member>
1914 <member name="F:HttpServer.ConsoleLogWriter.Instance"> 1914 <member name="F:HttpServer.ConsoleLogWriter.Instance">
1915 <summary> 1915 <summary>
1916 The actual instance of this class. 1916 The actual instance of this class.
1917 </summary> 1917 </summary>
1918 </member> 1918 </member>
1919 <member name="M:HttpServer.ConsoleLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)"> 1919 <member name="M:HttpServer.ConsoleLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
1920 <summary> 1920 <summary>
1921 Logwriters the specified source. 1921 Logwriters the specified source.
1922 </summary> 1922 </summary>
1923 <param name="source">object that wrote the logentry.</param> 1923 <param name="source">object that wrote the logentry.</param>
1924 <param name="prio">Importance of the log message</param> 1924 <param name="prio">Importance of the log message</param>
1925 <param name="message">The message.</param> 1925 <param name="message">The message.</param>
1926 </member> 1926 </member>
1927 <member name="M:HttpServer.ConsoleLogWriter.GetColor(HttpServer.LogPrio)"> 1927 <member name="M:HttpServer.ConsoleLogWriter.GetColor(HttpServer.LogPrio)">
1928 <summary> 1928 <summary>
1929 Get color for the specified logprio 1929 Get color for the specified logprio
1930 </summary> 1930 </summary>
1931 <param name="prio">prio for the log entry</param> 1931 <param name="prio">prio for the log entry</param>
1932 <returns>A <see cref="T:System.ConsoleColor"/> for the prio</returns> 1932 <returns>A <see cref="T:System.ConsoleColor"/> for the prio</returns>
1933 </member> 1933 </member>
1934 <member name="T:HttpServer.NullLogWriter"> 1934 <member name="T:HttpServer.NullLogWriter">
1935 <summary> 1935 <summary>
1936 Default log writer, writes everything to null (nowhere). 1936 Default log writer, writes everything to null (nowhere).
1937 </summary> 1937 </summary>
1938 <seealso cref="T:HttpServer.ILogWriter"/> 1938 <seealso cref="T:HttpServer.ILogWriter"/>
1939 </member> 1939 </member>
1940 <member name="F:HttpServer.NullLogWriter.Instance"> 1940 <member name="F:HttpServer.NullLogWriter.Instance">
1941 <summary> 1941 <summary>
1942 The logging instance. 1942 The logging instance.
1943 </summary> 1943 </summary>
1944 </member> 1944 </member>
1945 <member name="M:HttpServer.NullLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)"> 1945 <member name="M:HttpServer.NullLogWriter.Write(System.Object,HttpServer.LogPrio,System.String)">
1946 <summary> 1946 <summary>
1947 Writes everything to null 1947 Writes everything to null
1948 </summary> 1948 </summary>
1949 <param name="source">object that wrote the logentry.</param> 1949 <param name="source">object that wrote the logentry.</param>
1950 <param name="prio">Importance of the log message</param> 1950 <param name="prio">Importance of the log message</param>
1951 <param name="message">The message.</param> 1951 <param name="message">The message.</param>
1952 </member> 1952 </member>
1953 <member name="T:HttpServer.HttpInput"> 1953 <member name="T:HttpServer.HttpInput">
1954 <summary> 1954 <summary>
1955 Contains some kind of input from the browser/client. 1955 Contains some kind of input from the browser/client.
1956 can be QueryString, form data or any other request body content. 1956 can be QueryString, form data or any other request body content.
1957 </summary> 1957 </summary>
1958 </member> 1958 </member>
1959 <member name="T:HttpServer.IHttpInput"> 1959 <member name="T:HttpServer.IHttpInput">
1960 <summary> 1960 <summary>
1961 Base class for request data containers 1961 Base class for request data containers
1962 </summary> 1962 </summary>
1963 </member> 1963 </member>
1964 <member name="M:HttpServer.IHttpInput.Add(System.String,System.String)"> 1964 <member name="M:HttpServer.IHttpInput.Add(System.String,System.String)">
1965 <summary> 1965 <summary>
1966 Adds a parameter mapped to the presented name 1966 Adds a parameter mapped to the presented name
1967 </summary> 1967 </summary>
1968 <param name="name">The name to map the parameter to</param> 1968 <param name="name">The name to map the parameter to</param>
1969 <param name="value">The parameter value</param> 1969 <param name="value">The parameter value</param>
1970 </member> 1970 </member>
1971 <member name="M:HttpServer.IHttpInput.Contains(System.String)"> 1971 <member name="M:HttpServer.IHttpInput.Contains(System.String)">
1972 <summary> 1972 <summary>
1973 Returns true if the container contains the requested parameter 1973 Returns true if the container contains the requested parameter
1974 </summary> 1974 </summary>
1975 <param name="name">Parameter id</param> 1975 <param name="name">Parameter id</param>
1976 <returns>True if parameter exists</returns> 1976 <returns>True if parameter exists</returns>
1977 </member> 1977 </member>
1978 <member name="P:HttpServer.IHttpInput.Item(System.String)"> 1978 <member name="P:HttpServer.IHttpInput.Item(System.String)">
1979 <summary> 1979 <summary>
1980 Returns a request parameter 1980 Returns a request parameter
1981 </summary> 1981 </summary>
1982 <param name="name">The name associated with the parameter</param> 1982 <param name="name">The name associated with the parameter</param>
1983 <returns></returns> 1983 <returns></returns>
1984 </member> 1984 </member>
1985 <member name="F:HttpServer.HttpInput.Empty"> 1985 <member name="F:HttpServer.HttpInput.Empty">
1986 <summary> Representation of a non-initialized class instance </summary> 1986 <summary> Representation of a non-initialized class instance </summary>
1987 </member> 1987 </member>
1988 <member name="F:HttpServer.HttpInput._ignoreChanges"> 1988 <member name="F:HttpServer.HttpInput._ignoreChanges">
1989 <summary> Variable telling the class that it is non-initialized <see cref="F:HttpServer.HttpInput.Empty"/> </summary> 1989 <summary> Variable telling the class that it is non-initialized <see cref="F:HttpServer.HttpInput.Empty"/> </summary>
1990 </member> 1990 </member>
1991 <member name="M:HttpServer.HttpInput.#ctor(System.String)"> 1991 <member name="M:HttpServer.HttpInput.#ctor(System.String)">
1992 <summary> 1992 <summary>
1993 Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class. 1993 Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class.
1994 </summary> 1994 </summary>
1995 <param name="name">form name.</param> 1995 <param name="name">form name.</param>
1996 </member> 1996 </member>
1997 <member name="M:HttpServer.HttpInput.#ctor(System.String,System.Boolean)"> 1997 <member name="M:HttpServer.HttpInput.#ctor(System.String,System.Boolean)">
1998 <summary> 1998 <summary>
1999 Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class. 1999 Initializes a new instance of the <see cref="T:HttpServer.HttpInput"/> class.
2000 </summary> 2000 </summary>
2001 <param name="name">form name.</param> 2001 <param name="name">form name.</param>
2002 <param name="ignoreChanges">if set to <c>true</c> all changes will be ignored. </param> 2002 <param name="ignoreChanges">if set to <c>true</c> all changes will be ignored. </param>
2003 <remarks>this constructor should only be used by Empty</remarks> 2003 <remarks>this constructor should only be used by Empty</remarks>
2004 </member> 2004 </member>
2005 <member name="M:HttpServer.HttpInput.#ctor(HttpServer.HttpInput)"> 2005 <member name="M:HttpServer.HttpInput.#ctor(HttpServer.HttpInput)">
2006 <summary>Creates a deep copy of the HttpInput class</summary> 2006 <summary>Creates a deep copy of the HttpInput class</summary>
2007 <param name="input">The object to copy</param> 2007 <param name="input">The object to copy</param>
2008 <remarks>The function makes a deep copy of quite a lot which can be slow</remarks> 2008 <remarks>The function makes a deep copy of quite a lot which can be slow</remarks>
2009 </member> 2009 </member>
2010 <member name="M:HttpServer.HttpInput.Add(System.String,System.String)"> 2010 <member name="M:HttpServer.HttpInput.Add(System.String,System.String)">
2011 <summary> 2011 <summary>
2012 Add a new element. Form array elements are parsed 2012 Add a new element. Form array elements are parsed
2013 and added in a correct hierachy. 2013 and added in a correct hierachy.
2014 </summary> 2014 </summary>
2015 <param name="name">Name is converted to lower case.</param> 2015 <param name="name">Name is converted to lower case.</param>
2016 <param name="value"></param> 2016 <param name="value"></param>
2017 </member> 2017 </member>
2018 <member name="M:HttpServer.HttpInput.Contains(System.String)"> 2018 <member name="M:HttpServer.HttpInput.Contains(System.String)">
2019 <summary> 2019 <summary>
2020 Returns true if the class contains a HttpInput value with the corresponding name 2020 Returns true if the class contains a HttpInput value with the corresponding name
2021 </summary> 2021 </summary>
2022 <param name="name">The field/querystring name</param> 2022 <param name="name">The field/querystring name</param>
2023 <returns>True if the value exists</returns> 2023 <returns>True if the value exists</returns>
2024 </member> 2024 </member>
2025 <member name="M:HttpServer.HttpInput.ParseItem(System.String,System.String)"> 2025 <member name="M:HttpServer.HttpInput.ParseItem(System.String,System.String)">
2026 <summary> 2026 <summary>
2027 Parses an item and returns it. 2027 Parses an item and returns it.
2028 This function is primarly used to parse array items as in user[name]. 2028 This function is primarly used to parse array items as in user[name].
2029 </summary> 2029 </summary>
2030 <param name="name"></param> 2030 <param name="name"></param>
2031 <param name="value"></param> 2031 <param name="value"></param>
2032 <returns></returns> 2032 <returns></returns>
2033 </member> 2033 </member>
2034 <member name="M:HttpServer.HttpInput.ToString"> 2034 <member name="M:HttpServer.HttpInput.ToString">
2035 <summary> Outputs the instance representing all its values joined together </summary> 2035 <summary> Outputs the instance representing all its values joined together </summary>
2036 <returns></returns> 2036 <returns></returns>
2037 </member> 2037 </member>
2038 <member name="M:HttpServer.HttpInput.ToString(System.Boolean)"> 2038 <member name="M:HttpServer.HttpInput.ToString(System.Boolean)">
2039 <summary>Returns all items as an unescaped query string.</summary> 2039 <summary>Returns all items as an unescaped query string.</summary>
2040 <returns></returns> 2040 <returns></returns>
2041 </member> 2041 </member>
2042 <member name="M:HttpServer.HttpInput.ExtractOne(System.String)"> 2042 <member name="M:HttpServer.HttpInput.ExtractOne(System.String)">
2043 <summary> 2043 <summary>
2044 Extracts one parameter from an array 2044 Extracts one parameter from an array
2045 </summary> 2045 </summary>
2046 <param name="value">Containing the string array</param> 2046 <param name="value">Containing the string array</param>
2047 <returns>All but the first value</returns> 2047 <returns>All but the first value</returns>
2048 <example> 2048 <example>
2049 string test1 = ExtractOne("system[user][extension][id]"); 2049 string test1 = ExtractOne("system[user][extension][id]");
2050 string test2 = ExtractOne(test1); 2050 string test2 = ExtractOne(test1);
2051 string test3 = ExtractOne(test2); 2051 string test3 = ExtractOne(test2);
2052 // test1 = user[extension][id] 2052 // test1 = user[extension][id]
2053 // test2 = extension[id] 2053 // test2 = extension[id]
2054 // test3 = id 2054 // test3 = id
2055 </example> 2055 </example>
2056 </member> 2056 </member>
2057 <member name="M:HttpServer.HttpInput.Clear"> 2057 <member name="M:HttpServer.HttpInput.Clear">
2058 <summary>Resets all data contained by class</summary> 2058 <summary>Resets all data contained by class</summary>
2059 </member> 2059 </member>
2060 <member name="M:HttpServer.HttpInput.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator"> 2060 <member name="M:HttpServer.HttpInput.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
2061 <summary> 2061 <summary>
2062 Returns an enumerator that iterates through the collection. 2062 Returns an enumerator that iterates through the collection.
2063 </summary> 2063 </summary>
2064 2064
2065 <returns> 2065 <returns>
2066 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection. 2066 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
2067 </returns> 2067 </returns>
2068 <filterpriority>1</filterpriority> 2068 <filterpriority>1</filterpriority>
2069 </member> 2069 </member>
2070 <member name="M:HttpServer.HttpInput.GetEnumerator"> 2070 <member name="M:HttpServer.HttpInput.GetEnumerator">
2071 <summary> 2071 <summary>
2072 Returns an enumerator that iterates through a collection. 2072 Returns an enumerator that iterates through a collection.
2073 </summary> 2073 </summary>
2074 2074
2075 <returns> 2075 <returns>
2076 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. 2076 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
2077 </returns> 2077 </returns>
2078 <filterpriority>2</filterpriority> 2078 <filterpriority>2</filterpriority>
2079 </member> 2079 </member>
2080 <member name="P:HttpServer.HttpInput.Name"> 2080 <member name="P:HttpServer.HttpInput.Name">
2081 <summary> 2081 <summary>
2082 Form name as lower case 2082 Form name as lower case
2083 </summary> 2083 </summary>
2084 </member> 2084 </member>
2085 <member name="P:HttpServer.HttpInput.Item(System.String)"> 2085 <member name="P:HttpServer.HttpInput.Item(System.String)">
2086 <summary> 2086 <summary>
2087 Get a form item. 2087 Get a form item.
2088 </summary> 2088 </summary>
2089 <param name="name"></param> 2089 <param name="name"></param>
2090 <returns>Returns HttpInputItem.Empty if item was not found.</returns> 2090 <returns>Returns HttpInputItem.Empty if item was not found.</returns>
2091 </member> 2091 </member>
2092 <member name="T:HttpServer.HttpParam"> 2092 <member name="T:HttpServer.HttpParam">
2093 <summary> 2093 <summary>
2094 Returns item either from a form or a query string (checks them in that order) 2094 Returns item either from a form or a query string (checks them in that order)
2095 </summary> 2095 </summary>
2096 </member> 2096 </member>
2097 <member name="F:HttpServer.HttpParam.Empty"> 2097 <member name="F:HttpServer.HttpParam.Empty">
2098 <summary> Representation of a non-initialized HttpParam </summary> 2098 <summary> Representation of a non-initialized HttpParam </summary>
2099 </member> 2099 </member>
2100 <member name="M:HttpServer.HttpParam.#ctor(HttpServer.IHttpInput,HttpServer.IHttpInput)"> 2100 <member name="M:HttpServer.HttpParam.#ctor(HttpServer.IHttpInput,HttpServer.IHttpInput)">
2101 <summary>Initialises the class to hold a value either from a post request or a querystring request</summary> 2101 <summary>Initialises the class to hold a value either from a post request or a querystring request</summary>
2102 </member> 2102 </member>
2103 <member name="M:HttpServer.HttpParam.Add(System.String,System.String)"> 2103 <member name="M:HttpServer.HttpParam.Add(System.String,System.String)">
2104 <summary> 2104 <summary>
2105 The add method is not availible for HttpParam 2105 The add method is not availible for HttpParam
2106 since HttpParam checks both Request.Form and Request.QueryString 2106 since HttpParam checks both Request.Form and Request.QueryString
2107 </summary> 2107 </summary>
2108 <param name="name">name identifying the value</param> 2108 <param name="name">name identifying the value</param>
2109 <param name="value">value to add</param> 2109 <param name="value">value to add</param>
2110 <exception cref="T:System.NotImplementedException"></exception> 2110 <exception cref="T:System.NotImplementedException"></exception>
2111 </member> 2111 </member>
2112 <member name="M:HttpServer.HttpParam.Contains(System.String)"> 2112 <member name="M:HttpServer.HttpParam.Contains(System.String)">
2113 <summary> 2113 <summary>
2114 Checks whether the form or querystring has the specified value 2114 Checks whether the form or querystring has the specified value
2115 </summary> 2115 </summary>
2116 <param name="name">Name, case sensitive</param> 2116 <param name="name">Name, case sensitive</param>
2117 <returns>true if found; otherwise false.</returns> 2117 <returns>true if found; otherwise false.</returns>
2118 </member> 2118 </member>
2119 <member name="M:HttpServer.HttpParam.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator"> 2119 <member name="M:HttpServer.HttpParam.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
2120 <summary> 2120 <summary>
2121 Returns an enumerator that iterates through the collection. 2121 Returns an enumerator that iterates through the collection.
2122 </summary> 2122 </summary>
2123 2123
2124 <returns> 2124 <returns>
2125 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection. 2125 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
2126 </returns> 2126 </returns>
2127 <filterpriority>1</filterpriority> 2127 <filterpriority>1</filterpriority>
2128 </member> 2128 </member>
2129 <member name="M:HttpServer.HttpParam.GetEnumerator"> 2129 <member name="M:HttpServer.HttpParam.GetEnumerator">
2130 <summary> 2130 <summary>
2131 Returns an enumerator that iterates through a collection. 2131 Returns an enumerator that iterates through a collection.
2132 </summary> 2132 </summary>
2133 2133
2134 <returns> 2134 <returns>
2135 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. 2135 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
2136 </returns> 2136 </returns>
2137 <filterpriority>2</filterpriority> 2137 <filterpriority>2</filterpriority>
2138 </member> 2138 </member>
2139 <member name="P:HttpServer.HttpParam.Item(System.String)"> 2139 <member name="P:HttpServer.HttpParam.Item(System.String)">
2140 <summary> 2140 <summary>
2141 Fetch an item from the form or querystring (in that order). 2141 Fetch an item from the form or querystring (in that order).
2142 </summary> 2142 </summary>
2143 <param name="name"></param> 2143 <param name="name"></param>
2144 <returns>Item if found; otherwise HttpInputItem.EmptyLanguageNode</returns> 2144 <returns>Item if found; otherwise HttpInputItem.EmptyLanguageNode</returns>
2145 </member> 2145 </member>
2146 <member name="T:HttpServer.HttpFile"> 2146 <member name="T:HttpServer.HttpFile">
2147 <summary> 2147 <summary>
2148 Container class for posted files 2148 Container class for posted files
2149 </summary> 2149 </summary>
2150 </member> 2150 </member>
2151 <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)"> 2151 <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)">
2152 <summary> 2152 <summary>
2153 Creates a container for a posted file 2153 Creates a container for a posted file
2154 </summary> 2154 </summary>
2155 <param name="name">The identifier of the post field</param> 2155 <param name="name">The identifier of the post field</param>
2156 <param name="filename">The file path</param> 2156 <param name="filename">The file path</param>
2157 <param name="contentType">The content type of the file</param> 2157 <param name="contentType">The content type of the file</param>
2158 <param name="uploadFilename">The name of the file uploaded</param> 2158 <param name="uploadFilename">The name of the file uploaded</param>
2159 <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception> 2159 <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception>
2160 </member> 2160 </member>
2161 <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String)"> 2161 <member name="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String)">
2162 <summary> 2162 <summary>
2163 Creates a container for a posted file <see cref="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)"/> 2163 Creates a container for a posted file <see cref="M:HttpServer.HttpFile.#ctor(System.String,System.String,System.String,System.String)"/>
2164 </summary> 2164 </summary>
2165 <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception> 2165 <exception cref="T:System.ArgumentNullException">If any parameter is null or empty</exception>
2166 </member> 2166 </member>
2167 <member name="M:HttpServer.HttpFile.Finalize"> 2167 <member name="M:HttpServer.HttpFile.Finalize">
2168 <summary>Destructor disposing the file</summary> 2168 <summary>Destructor disposing the file</summary>
2169 </member> 2169 </member>
2170 <member name="M:HttpServer.HttpFile.Dispose(System.Boolean)"> 2170 <member name="M:HttpServer.HttpFile.Dispose(System.Boolean)">
2171 <summary> 2171 <summary>
2172 Deletes the temporary file 2172 Deletes the temporary file
2173 </summary> 2173 </summary>
2174 <param name="disposing">True if manual dispose</param> 2174 <param name="disposing">True if manual dispose</param>
2175 </member> 2175 </member>
2176 <member name="M:HttpServer.HttpFile.Dispose"> 2176 <member name="M:HttpServer.HttpFile.Dispose">
2177 <summary> 2177 <summary>
2178 Disposing interface, cleans up managed resources (the temporary file) and suppresses finalization 2178 Disposing interface, cleans up managed resources (the temporary file) and suppresses finalization
2179 </summary> 2179 </summary>
2180 </member> 2180 </member>
2181 <member name="P:HttpServer.HttpFile.Name"> 2181 <member name="P:HttpServer.HttpFile.Name">
2182 <summary> 2182 <summary>
2183 The name/id of the file 2183 The name/id of the file
2184 </summary> 2184 </summary>
2185 </member> 2185 </member>
2186 <member name="P:HttpServer.HttpFile.Filename"> 2186 <member name="P:HttpServer.HttpFile.Filename">
2187 <summary> 2187 <summary>
2188 The full file path 2188 The full file path
2189 </summary> 2189 </summary>
2190 </member> 2190 </member>
2191 <member name="P:HttpServer.HttpFile.UploadFilename"> 2191 <member name="P:HttpServer.HttpFile.UploadFilename">
2192 <summary> 2192 <summary>
2193 The name of the uploaded file 2193 The name of the uploaded file
2194 </summary> 2194 </summary>
2195 </member> 2195 </member>
2196 <member name="P:HttpServer.HttpFile.ContentType"> 2196 <member name="P:HttpServer.HttpFile.ContentType">
2197 <summary> 2197 <summary>
2198 The type of file 2198 The type of file
2199 </summary> 2199 </summary>
2200 </member> 2200 </member>
2201 <member name="T:HttpServer.Helpers.ObjectForm"> 2201 <member name="T:HttpServer.Helpers.ObjectForm">
2202 <summary> 2202 <summary>
2203 The object form class takes an object and creates form items for it. 2203 The object form class takes an object and creates form items for it.
2204 </summary> 2204 </summary>
2205 </member> 2205 </member>
2206 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object,System.String)"> 2206 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object,System.String)">
2207 <summary> 2207 <summary>
2208 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class. 2208 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
2209 </summary> 2209 </summary>
2210 <param name="method"></param> 2210 <param name="method"></param>
2211 <param name="name">form name *and* id.</param> 2211 <param name="name">form name *and* id.</param>
2212 <param name="action">action to do when form is posted.</param> 2212 <param name="action">action to do when form is posted.</param>
2213 <param name="obj"></param> 2213 <param name="obj"></param>
2214 </member> 2214 </member>
2215 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object)"> 2215 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.String,System.Object)">
2216 <summary> 2216 <summary>
2217 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class. 2217 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
2218 </summary> 2218 </summary>
2219 <param name="name">form name *and* id.</param> 2219 <param name="name">form name *and* id.</param>
2220 <param name="action">action to do when form is posted.</param> 2220 <param name="action">action to do when form is posted.</param>
2221 <param name="obj">object to get values from</param> 2221 <param name="obj">object to get values from</param>
2222 </member> 2222 </member>
2223 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.Object)"> 2223 <member name="M:HttpServer.Helpers.ObjectForm.#ctor(System.String,System.Object)">
2224 <summary> 2224 <summary>
2225 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class. 2225 Initializes a new instance of the <see cref="T:HttpServer.Helpers.ObjectForm"/> class.
2226 </summary> 2226 </summary>
2227 <param name="action">form action.</param> 2227 <param name="action">form action.</param>
2228 <param name="obj">object to get values from.</param> 2228 <param name="obj">object to get values from.</param>
2229 </member> 2229 </member>
2230 <member name="M:HttpServer.Helpers.ObjectForm.Begin"> 2230 <member name="M:HttpServer.Helpers.ObjectForm.Begin">
2231 <summary> 2231 <summary>
2232 write out the FORM-tag. 2232 write out the FORM-tag.
2233 </summary> 2233 </summary>
2234 <returns>generated html code</returns> 2234 <returns>generated html code</returns>
2235 </member> 2235 </member>
2236 <member name="M:HttpServer.Helpers.ObjectForm.Begin(System.Boolean)"> 2236 <member name="M:HttpServer.Helpers.ObjectForm.Begin(System.Boolean)">
2237 <summary> 2237 <summary>
2238 Writeout the form tag 2238 Writeout the form tag
2239 </summary> 2239 </summary>
2240 <param name="isAjax">form should be posted through ajax.</param> 2240 <param name="isAjax">form should be posted through ajax.</param>
2241 <returns>generated html code</returns> 2241 <returns>generated html code</returns>
2242 </member> 2242 </member>
2243 <member name="M:HttpServer.Helpers.ObjectForm.Tb(System.String,System.Object[])"> 2243 <member name="M:HttpServer.Helpers.ObjectForm.Tb(System.String,System.Object[])">
2244 <summary> 2244 <summary>
2245 Generates a text box. 2245 Generates a text box.
2246 </summary> 2246 </summary>
2247 <param name="propertyName"></param> 2247 <param name="propertyName"></param>
2248 <param name="options"></param> 2248 <param name="options"></param>
2249 <returns>generated html code</returns> 2249 <returns>generated html code</returns>
2250 </member> 2250 </member>
2251 <member name="M:HttpServer.Helpers.ObjectForm.Pb(System.String,System.Object[])"> 2251 <member name="M:HttpServer.Helpers.ObjectForm.Pb(System.String,System.Object[])">
2252 <summary> 2252 <summary>
2253 password box 2253 password box
2254 </summary> 2254 </summary>
2255 <param name="propertyName"></param> 2255 <param name="propertyName"></param>
2256 <param name="options"></param> 2256 <param name="options"></param>
2257 <returns>generated html code</returns> 2257 <returns>generated html code</returns>
2258 </member> 2258 </member>
2259 <member name="M:HttpServer.Helpers.ObjectForm.Hidden(System.String,System.Object[])"> 2259 <member name="M:HttpServer.Helpers.ObjectForm.Hidden(System.String,System.Object[])">
2260 <summary> 2260 <summary>
2261 Hiddens the specified property name. 2261 Hiddens the specified property name.
2262 </summary> 2262 </summary>
2263 <param name="propertyName">Name of the property.</param> 2263 <param name="propertyName">Name of the property.</param>
2264 <param name="options">The options.</param> 2264 <param name="options">The options.</param>
2265 <returns>generated html code</returns> 2265 <returns>generated html code</returns>
2266 </member> 2266 </member>
2267 <member name="M:HttpServer.Helpers.ObjectForm.Label(System.String,System.String)"> 2267 <member name="M:HttpServer.Helpers.ObjectForm.Label(System.String,System.String)">
2268 <summary> 2268 <summary>
2269 Labels the specified property name. 2269 Labels the specified property name.
2270 </summary> 2270 </summary>
2271 <param name="propertyName">property in object.</param> 2271 <param name="propertyName">property in object.</param>
2272 <param name="label">caption</param> 2272 <param name="label">caption</param>
2273 <returns>generated html code</returns> 2273 <returns>generated html code</returns>
2274 </member> 2274 </member>
2275 <member name="M:HttpServer.Helpers.ObjectForm.Cb(System.String,System.String,System.Object[])"> 2275 <member name="M:HttpServer.Helpers.ObjectForm.Cb(System.String,System.String,System.Object[])">
2276 <summary> 2276 <summary>
2277 Generate a checkbox 2277 Generate a checkbox
2278 </summary> 2278 </summary>
2279 <param name="propertyName">property in object</param> 2279 <param name="propertyName">property in object</param>
2280 <param name="value">checkbox value</param> 2280 <param name="value">checkbox value</param>
2281 <param name="options">additional html attributes.</param> 2281 <param name="options">additional html attributes.</param>
2282 <returns>generated html code</returns> 2282 <returns>generated html code</returns>
2283 </member> 2283 </member>
2284 <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.String,System.String,System.Object[])"> 2284 <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.String,System.String,System.Object[])">
2285 <summary> 2285 <summary>
2286 Write a html select tag 2286 Write a html select tag
2287 </summary> 2287 </summary>
2288 <param name="propertyName">object property.</param> 2288 <param name="propertyName">object property.</param>
2289 <param name="idColumn">id column</param> 2289 <param name="idColumn">id column</param>
2290 <param name="titleColumn">The title column.</param> 2290 <param name="titleColumn">The title column.</param>
2291 <param name="options">The options.</param> 2291 <param name="options">The options.</param>
2292 <returns></returns> 2292 <returns></returns>
2293 </member> 2293 </member>
2294 <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.Collections.IEnumerable,System.String,System.String,System.Object[])"> 2294 <member name="M:HttpServer.Helpers.ObjectForm.Select(System.String,System.Collections.IEnumerable,System.String,System.String,System.Object[])">
2295 <summary> 2295 <summary>
2296 Selects the specified property name. 2296 Selects the specified property name.
2297 </summary> 2297 </summary>
2298 <param name="propertyName">Name of the property.</param> 2298 <param name="propertyName">Name of the property.</param>
2299 <param name="items">The items.</param> 2299 <param name="items">The items.</param>
2300 <param name="idColumn">The id column.</param> 2300 <param name="idColumn">The id column.</param>
2301 <param name="titleColumn">The title column.</param> 2301 <param name="titleColumn">The title column.</param>
2302 <param name="options">The options.</param> 2302 <param name="options">The options.</param>
2303 <returns></returns> 2303 <returns></returns>
2304 </member> 2304 </member>
2305 <member name="M:HttpServer.Helpers.ObjectForm.Submit(System.String)"> 2305 <member name="M:HttpServer.Helpers.ObjectForm.Submit(System.String)">
2306 <summary> 2306 <summary>
2307 Write a submit tag. 2307 Write a submit tag.
2308 </summary> 2308 </summary>
2309 <param name="value">button caption</param> 2309 <param name="value">button caption</param>
2310 <returns>html submit tag</returns> 2310 <returns>html submit tag</returns>
2311 </member> 2311 </member>
2312 <member name="M:HttpServer.Helpers.ObjectForm.End"> 2312 <member name="M:HttpServer.Helpers.ObjectForm.End">
2313 <summary> 2313 <summary>
2314 html end form tag 2314 html end form tag
2315 </summary> 2315 </summary>
2316 <returns>html</returns> 2316 <returns>html</returns>
2317 </member> 2317 </member>
2318 <member name="T:HttpServer.FormDecoders.FormDecoderProvider"> 2318 <member name="T:HttpServer.FormDecoders.FormDecoderProvider">
2319 <summary> 2319 <summary>
2320 This provider is used to let us implement any type of form decoding we want without 2320 This provider is used to let us implement any type of form decoding we want without
2321 having to rewrite anything else in the server. 2321 having to rewrite anything else in the server.
2322 </summary> 2322 </summary>
2323 </member> 2323 </member>
2324 <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Decode(System.String,System.IO.Stream,System.Text.Encoding)"> 2324 <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Decode(System.String,System.IO.Stream,System.Text.Encoding)">
2325 <summary> 2325 <summary>
2326 2326
2327 </summary> 2327 </summary>
2328 <param name="contentType">Should contain boundary and type, as in: multipart/form-data; boundary=---------------------------230051238959</param> 2328 <param name="contentType">Should contain boundary and type, as in: multipart/form-data; boundary=---------------------------230051238959</param>
2329 <param name="stream">Stream containg form data.</param> 2329 <param name="stream">Stream containg form data.</param>
2330 <param name="encoding">Encoding used when decoding the stream</param> 2330 <param name="encoding">Encoding used when decoding the stream</param>
2331 <returns>HttpInput.EmptyLanguageNode if no parser was found. Must always return something (HttpInput.Empty instead of null)</returns> 2331 <returns>HttpInput.EmptyLanguageNode if no parser was found. Must always return something (HttpInput.Empty instead of null)</returns>
2332 <exception cref="T:System.ArgumentException">If stream is null or not readable.</exception> 2332 <exception cref="T:System.ArgumentException">If stream is null or not readable.</exception>
2333 <exception cref="T:System.IO.InvalidDataException">If stream contents cannot be decoded properly.</exception> 2333 <exception cref="T:System.IO.InvalidDataException">If stream contents cannot be decoded properly.</exception>
2334 </member> 2334 </member>
2335 <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Add(HttpServer.FormDecoders.IFormDecoder)"> 2335 <member name="M:HttpServer.FormDecoders.FormDecoderProvider.Add(HttpServer.FormDecoders.IFormDecoder)">
2336 <summary> 2336 <summary>
2337 Add a decoder. 2337 Add a decoder.
2338 </summary> 2338 </summary>
2339 <param name="decoder"></param> 2339 <param name="decoder"></param>
2340 <exception cref="T:System.ArgumentNullException"></exception> 2340 <exception cref="T:System.ArgumentNullException"></exception>
2341 </member> 2341 </member>
2342 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Count"> 2342 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Count">
2343 <summary> 2343 <summary>
2344 Number of added decoders. 2344 Number of added decoders.
2345 </summary> 2345 </summary>
2346 </member> 2346 </member>
2347 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Decoders"> 2347 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.Decoders">
2348 <summary> 2348 <summary>
2349 Use with care. 2349 Use with care.
2350 </summary> 2350 </summary>
2351 </member> 2351 </member>
2352 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.DefaultDecoder"> 2352 <member name="P:HttpServer.FormDecoders.FormDecoderProvider.DefaultDecoder">
2353 <summary> 2353 <summary>
2354 Decoder used for unknown content types. 2354 Decoder used for unknown content types.
2355 </summary> 2355 </summary>
2356 </member> 2356 </member>
2357 <member name="T:HttpServer.Rendering.Haml.Rules.AttributesRule"> 2357 <member name="T:HttpServer.Rendering.Haml.Rules.AttributesRule">
2358 <summary> 2358 <summary>
2359 Contains an (html) attribute list. 2359 Contains an (html) attribute list.
2360 </summary> 2360 </summary>
2361 </member> 2361 </member>
2362 <member name="T:HttpServer.Rendering.Haml.Rules.Rule"> 2362 <member name="T:HttpServer.Rendering.Haml.Rules.Rule">
2363 <summary> 2363 <summary>
2364 Rules are used during preparse 2364 Rules are used during preparse
2365 </summary> 2365 </summary>
2366 </member> 2366 </member>
2367 <member name="M:HttpServer.Rendering.Haml.Rules.Rule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)"> 2367 <member name="M:HttpServer.Rendering.Haml.Rules.Rule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)">
2368 <summary> 2368 <summary>
2369 Determines if this node spans over multiple lines. 2369 Determines if this node spans over multiple lines.
2370 </summary> 2370 </summary>
2371 <param name="line">contains line information (and text)</param> 2371 <param name="line">contains line information (and text)</param>
2372 <param name="isContinued">true if rule have previously inited a multiline.</param> 2372 <param name="isContinued">true if rule have previously inited a multiline.</param>
2373 <returns>true if this line continues onto the next.</returns>/// 2373 <returns>true if this line continues onto the next.</returns>///
2374 </member> 2374 </member>
2375 <member name="M:HttpServer.Rendering.Haml.Rules.AttributesRule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)"> 2375 <member name="M:HttpServer.Rendering.Haml.Rules.AttributesRule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)">
2376 <summary> 2376 <summary>
2377 Determines if this node spans over multiple lines. 2377 Determines if this node spans over multiple lines.
2378 </summary> 2378 </summary>
2379 <param name="line">contains line information (and text)</param> 2379 <param name="line">contains line information (and text)</param>
2380 <param name="isContinued">true if the previous line was continued.</param> 2380 <param name="isContinued">true if the previous line was continued.</param>
2381 <returns>true if this line continues onto the next.</returns> 2381 <returns>true if this line continues onto the next.</returns>
2382 </member> 2382 </member>
2383 <member name="T:HttpServer.Rendering.Haml.Nodes.TextNode"> 2383 <member name="T:HttpServer.Rendering.Haml.Nodes.TextNode">
2384 <summary> 2384 <summary>
2385 A text only node. 2385 A text only node.
2386 </summary> 2386 </summary>
2387 </member> 2387 </member>
2388 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node,System.String)"> 2388 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node,System.String)">
2389 <summary> 2389 <summary>
2390 2390
2391 </summary> 2391 </summary>
2392 <param name="parent">parent node</param> 2392 <param name="parent">parent node</param>
2393 <param name="text">plain text</param> 2393 <param name="text">plain text</param>
2394 </member> 2394 </member>
2395 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 2395 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
2396 <summary> 2396 <summary>
2397 Parse node contents add return a fresh node. 2397 Parse node contents add return a fresh node.
2398 </summary> 2398 </summary>
2399 <param name="prototypes">List containing all node types</param> 2399 <param name="prototypes">List containing all node types</param>
2400 <param name="parent">Node that this is a subnode to. Can be null</param> 2400 <param name="parent">Node that this is a subnode to. Can be null</param>
2401 <param name="line">Line to parse</param> 2401 <param name="line">Line to parse</param>
2402 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 2402 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
2403 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 2403 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
2404 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 2404 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
2405 </member> 2405 </member>
2406 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.CanHandle(System.String,System.Boolean)"> 2406 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.CanHandle(System.String,System.Boolean)">
2407 <summary> 2407 <summary>
2408 determines if this node can handle the line (by checking the first word); 2408 determines if this node can handle the line (by checking the first word);
2409 </summary> 2409 </summary>
2410 <param name="word">Controller char (word)</param> 2410 <param name="word">Controller char (word)</param>
2411 <returns>true if text belongs to this node type</returns> 2411 <returns>true if text belongs to this node type</returns>
2412 <param name="firstNode">true if this is the first node on the line.</param> 2412 <param name="firstNode">true if this is the first node on the line.</param>
2413 </member> 2413 </member>
2414 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.ToHtml"> 2414 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.ToHtml">
2415 <summary> 2415 <summary>
2416 Generate HTML for this node. 2416 Generate HTML for this node.
2417 </summary> 2417 </summary>
2418 <returns></returns> 2418 <returns></returns>
2419 </member> 2419 </member>
2420 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 2420 <member name="M:HttpServer.Rendering.Haml.Nodes.TextNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
2421 <summary> 2421 <summary>
2422 Convert the node to c# code 2422 Convert the node to c# code
2423 </summary> 2423 </summary>
2424 <param name="inString">True if we are inside the internal stringbuilder</param> 2424 <param name="inString">True if we are inside the internal stringbuilder</param>
2425 <param name="smallEnough">true if all subnodes fit on one line</param> 2425 <param name="smallEnough">true if all subnodes fit on one line</param>
2426 <param name="smallEnoughIsDefaultValue">todo: add description</param> 2426 <param name="smallEnoughIsDefaultValue">todo: add description</param>
2427 <returns>c# code</returns> 2427 <returns>c# code</returns>
2428 </member> 2428 </member>
2429 <member name="P:HttpServer.Rendering.Haml.Nodes.TextNode.Text"> 2429 <member name="P:HttpServer.Rendering.Haml.Nodes.TextNode.Text">
2430 <summary> 2430 <summary>
2431 The text. 2431 The text.
2432 </summary> 2432 </summary>
2433 </member> 2433 </member>
2434 <member name="P:HttpServer.Rendering.Haml.Nodes.TextNode.IsTextNode"> 2434 <member name="P:HttpServer.Rendering.Haml.Nodes.TextNode.IsTextNode">
2435 <summary> 2435 <summary>
2436 Is this a text node (containing plain text)? 2436 Is this a text node (containing plain text)?
2437 </summary> 2437 </summary>
2438 </member> 2438 </member>
2439 <member name="T:HttpServer.HttpModules.ResourceFileModule"> 2439 <member name="T:HttpServer.HttpModules.ResourceFileModule">
2440 <summary> 2440 <summary>
2441 Serves files that are stored in embedded resources. 2441 Serves files that are stored in embedded resources.
2442 </summary> 2442 </summary>
2443 </member> 2443 </member>
2444 <member name="M:HttpServer.HttpModules.ResourceFileModule.#ctor"> 2444 <member name="M:HttpServer.HttpModules.ResourceFileModule.#ctor">
2445 <summary> 2445 <summary>
2446 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ResourceFileModule"/> class. 2446 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.ResourceFileModule"/> class.
2447 Runs <see cref="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes"/> to make sure the basic mime types are available, they can be cleared later 2447 Runs <see cref="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes"/> to make sure the basic mime types are available, they can be cleared later
2448 through the use of <see cref="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes"/> if desired. 2448 through the use of <see cref="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes"/> if desired.
2449 </summary> 2449 </summary>
2450 </member> 2450 </member>
2451 <member name="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes"> 2451 <member name="M:HttpServer.HttpModules.ResourceFileModule.AddDefaultMimeTypes">
2452 <summary> 2452 <summary>
2453 Mimtypes that this class can handle per default 2453 Mimtypes that this class can handle per default
2454 </summary> 2454 </summary>
2455 </member> 2455 </member>
2456 <member name="M:HttpServer.HttpModules.ResourceFileModule.AddResources(System.String,System.Reflection.Assembly,System.String)"> 2456 <member name="M:HttpServer.HttpModules.ResourceFileModule.AddResources(System.String,System.Reflection.Assembly,System.String)">
2457 <summary> 2457 <summary>
2458 Loads resources from a namespace in the given assembly to an uri 2458 Loads resources from a namespace in the given assembly to an uri
2459 </summary> 2459 </summary>
2460 <param name="toUri">The uri to map the resources to</param> 2460 <param name="toUri">The uri to map the resources to</param>
2461 <param name="fromAssembly">The assembly in which the resources reside</param> 2461 <param name="fromAssembly">The assembly in which the resources reside</param>
2462 <param name="fromNamespace">The namespace from which to load the resources</param> 2462 <param name="fromNamespace">The namespace from which to load the resources</param>
2463 <usage> 2463 <usage>
2464 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views"); 2464 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views");
2465 2465
2466 will make ie the resource MyLib.Models.User.Views.stylesheet.css accessible via /user/stylesheet.css 2466 will make ie the resource MyLib.Models.User.Views.stylesheet.css accessible via /user/stylesheet.css
2467 </usage> 2467 </usage>
2468 </member> 2468 </member>
2469 <member name="M:HttpServer.HttpModules.ResourceFileModule.CanHandle(HttpServer.IHttpRequest)"> 2469 <member name="M:HttpServer.HttpModules.ResourceFileModule.CanHandle(HttpServer.IHttpRequest)">
2470 <summary> 2470 <summary>
2471 Returns true if the module can handle the request 2471 Returns true if the module can handle the request
2472 </summary> 2472 </summary>
2473 </member> 2473 </member>
2474 <member name="M:HttpServer.HttpModules.ResourceFileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 2474 <member name="M:HttpServer.HttpModules.ResourceFileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
2475 <summary> 2475 <summary>
2476 Method that process the url 2476 Method that process the url
2477 </summary> 2477 </summary>
2478 <param name="request">Information sent by the browser about the request</param> 2478 <param name="request">Information sent by the browser about the request</param>
2479 <param name="response">Information that is being sent back to the client.</param> 2479 <param name="response">Information that is being sent back to the client.</param>
2480 <param name="session">Session used to </param> 2480 <param name="session">Session used to </param>
2481 <returns>true if this module handled the request.</returns> 2481 <returns>true if this module handled the request.</returns>
2482 </member> 2482 </member>
2483 <member name="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes"> 2483 <member name="P:HttpServer.HttpModules.ResourceFileModule.MimeTypes">
2484 <summary> 2484 <summary>
2485 List with all mime-type that are allowed. 2485 List with all mime-type that are allowed.
2486 </summary> 2486 </summary>
2487 <remarks>All other mime types will result in a Forbidden http status code.</remarks> 2487 <remarks>All other mime types will result in a Forbidden http status code.</remarks>
2488 </member> 2488 </member>
2489 <member name="T:HttpServer.FormDecoders.XmlDecoder"> 2489 <member name="T:HttpServer.FormDecoders.XmlDecoder">
2490 <summary> 2490 <summary>
2491 This decoder converts XML documents to form items. 2491 This decoder converts XML documents to form items.
2492 Each element becomes a subitem in the form, and each attribute becomes an item. 2492 Each element becomes a subitem in the form, and each attribute becomes an item.
2493 </summary> 2493 </summary>
2494 <example> 2494 <example>
2495 // xml: <hello id="1">something<world id="2">data</world></hello> 2495 // xml: <hello id="1">something<world id="2">data</world></hello>
2496 // result: 2496 // result:
2497 // form["hello"].Value = "something" 2497 // form["hello"].Value = "something"
2498 // form["hello"]["id"].Value = 1 2498 // form["hello"]["id"].Value = 1
2499 // form["hello"]["world]["id"].Value = 1 2499 // form["hello"]["world]["id"].Value = 1
2500 // form["hello"]["world"].Value = "data" 2500 // form["hello"]["world"].Value = "data"
2501 </example> 2501 </example>
2502 <remarks> 2502 <remarks>
2503 The original xml document is stored in form["__xml__"].Value. 2503 The original xml document is stored in form["__xml__"].Value.
2504 </remarks> 2504 </remarks>
2505 </member> 2505 </member>
2506 <member name="T:HttpServer.FormDecoders.IFormDecoder"> 2506 <member name="T:HttpServer.FormDecoders.IFormDecoder">
2507 <summary> 2507 <summary>
2508 Interface for form content decoders. 2508 Interface for form content decoders.
2509 </summary> 2509 </summary>
2510 </member> 2510 </member>
2511 <member name="M:HttpServer.FormDecoders.IFormDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)"> 2511 <member name="M:HttpServer.FormDecoders.IFormDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
2512 <summary> 2512 <summary>
2513 2513
2514 </summary> 2514 </summary>
2515 <param name="stream">Stream containing the content</param> 2515 <param name="stream">Stream containing the content</param>
2516 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param> 2516 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
2517 <param name="encoding">Stream enconding</param> 2517 <param name="encoding">Stream enconding</param>
2518 <returns>A http form, or null if content could not be parsed.</returns> 2518 <returns>A http form, or null if content could not be parsed.</returns>
2519 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception> 2519 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
2520 </member> 2520 </member>
2521 <member name="M:HttpServer.FormDecoders.IFormDecoder.CanParse(System.String)"> 2521 <member name="M:HttpServer.FormDecoders.IFormDecoder.CanParse(System.String)">
2522 <summary> 2522 <summary>
2523 Checks if the decoder can handle the mime type 2523 Checks if the decoder can handle the mime type
2524 </summary> 2524 </summary>
2525 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param> 2525 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
2526 <returns>True if the decoder can parse the specified content type</returns> 2526 <returns>True if the decoder can parse the specified content type</returns>
2527 </member> 2527 </member>
2528 <member name="M:HttpServer.FormDecoders.XmlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)"> 2528 <member name="M:HttpServer.FormDecoders.XmlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
2529 <summary> 2529 <summary>
2530 2530
2531 </summary> 2531 </summary>
2532 <param name="stream">Stream containing the content</param> 2532 <param name="stream">Stream containing the content</param>
2533 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param> 2533 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
2534 <param name="encoding">Stream encoding</param> 2534 <param name="encoding">Stream encoding</param>
2535 Note: contentType and encoding are not used? 2535 Note: contentType and encoding are not used?
2536 <returns>A http form, or null if content could not be parsed.</returns> 2536 <returns>A http form, or null if content could not be parsed.</returns>
2537 <exception cref="T:System.IO.InvalidDataException"></exception> 2537 <exception cref="T:System.IO.InvalidDataException"></exception>
2538 </member> 2538 </member>
2539 <member name="M:HttpServer.FormDecoders.XmlDecoder.TraverseNode(HttpServer.IHttpInput,System.Xml.XmlNode)"> 2539 <member name="M:HttpServer.FormDecoders.XmlDecoder.TraverseNode(HttpServer.IHttpInput,System.Xml.XmlNode)">
2540 <summary> 2540 <summary>
2541 Recursive function that will go through an xml element and store it's content 2541 Recursive function that will go through an xml element and store it's content
2542 to the form item. 2542 to the form item.
2543 </summary> 2543 </summary>
2544 <param name="item">(parent) Item in form that content should be added to.</param> 2544 <param name="item">(parent) Item in form that content should be added to.</param>
2545 <param name="node">Node that should be parsed.</param> 2545 <param name="node">Node that should be parsed.</param>
2546 </member> 2546 </member>
2547 <member name="M:HttpServer.FormDecoders.XmlDecoder.CanParse(System.String)"> 2547 <member name="M:HttpServer.FormDecoders.XmlDecoder.CanParse(System.String)">
2548 <summary> 2548 <summary>
2549 Checks if the decoder can handle the mime type 2549 Checks if the decoder can handle the mime type
2550 </summary> 2550 </summary>
2551 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param> 2551 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
2552 <returns>True if the decoder can parse the specified content type</returns> 2552 <returns>True if the decoder can parse the specified content type</returns>
2553 </member> 2553 </member>
2554 <member name="T:HttpServer.Controllers.ControllerNameAttribute"> 2554 <member name="T:HttpServer.Controllers.ControllerNameAttribute">
2555 <summary> 2555 <summary>
2556 This attribute can be used to map a controller to a specific url without using 2556 This attribute can be used to map a controller to a specific url without using
2557 the class name. 2557 the class name.
2558 </summary> 2558 </summary>
2559 </member> 2559 </member>
2560 <member name="M:HttpServer.Controllers.ControllerNameAttribute.#ctor(System.String)"> 2560 <member name="M:HttpServer.Controllers.ControllerNameAttribute.#ctor(System.String)">
2561 <summary> 2561 <summary>
2562 Maps a controller to a url without using the controller name. 2562 Maps a controller to a url without using the controller name.
2563 </summary> 2563 </summary>
2564 <remarks> 2564 <remarks>
2565 <para>Per default the class name is used to determine which url to handle. 2565 <para>Per default the class name is used to determine which url to handle.
2566 For instance, "class UserController" or "class User" tells the framework that 2566 For instance, "class UserController" or "class User" tells the framework that
2567 the urls that starts with "/user" should be handled by that controller.</para> 2567 the urls that starts with "/user" should be handled by that controller.</para>
2568 <para>This attribute can be used to circumvent that.</para> 2568 <para>This attribute can be used to circumvent that.</para>
2569 </remarks> 2569 </remarks>
2570 <param name="name">The name.</param> 2570 <param name="name">The name.</param>
2571 </member> 2571 </member>
2572 <member name="P:HttpServer.Controllers.ControllerNameAttribute.Name"> 2572 <member name="P:HttpServer.Controllers.ControllerNameAttribute.Name">
2573 <summary> 2573 <summary>
2574 The name that the controller should use 2574 The name that the controller should use
2575 </summary> 2575 </summary>
2576 </member> 2576 </member>
2577 <member name="T:HttpServer.Sessions.IHttpSessionStore"> 2577 <member name="T:HttpServer.Sessions.IHttpSessionStore">
2578 <summary> 2578 <summary>
2579 A session store is used to store and load sessions on a media. 2579 A session store is used to store and load sessions on a media.
2580 The default implementation (<see cref="T:HttpServer.Sessions.MemorySessionStore"/>) saves/retrieves sessions from memory. 2580 The default implementation (<see cref="T:HttpServer.Sessions.MemorySessionStore"/>) saves/retrieves sessions from memory.
2581 </summary> 2581 </summary>
2582 </member> 2582 </member>
2583 <member name="M:HttpServer.Sessions.IHttpSessionStore.Create"> 2583 <member name="M:HttpServer.Sessions.IHttpSessionStore.Create">
2584 <summary> 2584 <summary>
2585 Creates a new http session with a generated id. 2585 Creates a new http session with a generated id.
2586 </summary> 2586 </summary>
2587 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object</returns> 2587 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object</returns>
2588 </member> 2588 </member>
2589 <member name="M:HttpServer.Sessions.IHttpSessionStore.Create(System.String)"> 2589 <member name="M:HttpServer.Sessions.IHttpSessionStore.Create(System.String)">
2590 <summary> 2590 <summary>
2591 Creates a new http session with a specific id 2591 Creates a new http session with a specific id
2592 </summary> 2592 </summary>
2593 <param name="id">Id used to identify the new cookie..</param> 2593 <param name="id">Id used to identify the new cookie..</param>
2594 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns> 2594 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns>
2595 <remarks> 2595 <remarks>
2596 Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>. 2596 Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>.
2597 </remarks> 2597 </remarks>
2598 </member> 2598 </member>
2599 <member name="M:HttpServer.Sessions.IHttpSessionStore.Load(System.String)"> 2599 <member name="M:HttpServer.Sessions.IHttpSessionStore.Load(System.String)">
2600 <summary> 2600 <summary>
2601 Load an existing session. 2601 Load an existing session.
2602 </summary> 2602 </summary>
2603 <param name="sessionId">Session id (usually retrieved from a client side cookie).</param> 2603 <param name="sessionId">Session id (usually retrieved from a client side cookie).</param>
2604 <returns>A session if found; otherwise null.</returns> 2604 <returns>A session if found; otherwise null.</returns>
2605 </member> 2605 </member>
2606 <member name="M:HttpServer.Sessions.IHttpSessionStore.Save(HttpServer.Sessions.IHttpSession)"> 2606 <member name="M:HttpServer.Sessions.IHttpSessionStore.Save(HttpServer.Sessions.IHttpSession)">
2607 <summary> 2607 <summary>
2608 Save an updated session to the store. 2608 Save an updated session to the store.
2609 </summary> 2609 </summary>
2610 <param name="session">Session id (usually retrieved from a client side cookie).</param> 2610 <param name="session">Session id (usually retrieved from a client side cookie).</param>
2611 <exception cref="T:System.ArgumentException">If Id property have not been specified.</exception> 2611 <exception cref="T:System.ArgumentException">If Id property have not been specified.</exception>
2612 </member> 2612 </member>
2613 <member name="M:HttpServer.Sessions.IHttpSessionStore.AddUnused(HttpServer.Sessions.IHttpSession)"> 2613 <member name="M:HttpServer.Sessions.IHttpSessionStore.AddUnused(HttpServer.Sessions.IHttpSession)">
2614 <summary> 2614 <summary>
2615 We use the flyweight pattern which reuses small objects 2615 We use the flyweight pattern which reuses small objects
2616 instead of creating new each time. 2616 instead of creating new each time.
2617 </summary> 2617 </summary>
2618 <param name="session">Unused session that should be reused next time Create is called.</param> 2618 <param name="session">Unused session that should be reused next time Create is called.</param>
2619 </member> 2619 </member>
2620 <member name="M:HttpServer.Sessions.IHttpSessionStore.Cleanup"> 2620 <member name="M:HttpServer.Sessions.IHttpSessionStore.Cleanup">
2621 <summary> 2621 <summary>
2622 Remove expired sessions 2622 Remove expired sessions
2623 </summary> 2623 </summary>
2624 </member> 2624 </member>
2625 <member name="M:HttpServer.Sessions.IHttpSessionStore.Remove(System.String)"> 2625 <member name="M:HttpServer.Sessions.IHttpSessionStore.Remove(System.String)">
2626 <summary> 2626 <summary>
2627 Remove a session 2627 Remove a session
2628 </summary> 2628 </summary>
2629 <param name="sessionId">id of the session.</param> 2629 <param name="sessionId">id of the session.</param>
2630 </member> 2630 </member>
2631 <member name="P:HttpServer.Sessions.IHttpSessionStore.Item(System.String)"> 2631 <member name="P:HttpServer.Sessions.IHttpSessionStore.Item(System.String)">
2632 <summary> 2632 <summary>
2633 Load a session from the store 2633 Load a session from the store
2634 </summary> 2634 </summary>
2635 <param name="sessionId"></param> 2635 <param name="sessionId"></param>
2636 <returns>null if session is not found.</returns> 2636 <returns>null if session is not found.</returns>
2637 </member> 2637 </member>
2638 <member name="P:HttpServer.Sessions.IHttpSessionStore.ExpireTime"> 2638 <member name="P:HttpServer.Sessions.IHttpSessionStore.ExpireTime">
2639 <summary> 2639 <summary>
2640 Number of minutes before a session expires. 2640 Number of minutes before a session expires.
2641 </summary> 2641 </summary>
2642 <value>Default time is 20 minutes.</value> 2642 <value>Default time is 20 minutes.</value>
2643 </member> 2643 </member>
2644 <member name="T:HttpServer.HttpListener"> 2644 <member name="T:HttpServer.HttpListener">
2645 <summary> 2645 <summary>
2646 HTTP Listener waits for HTTP connections and provide us with <see cref="T:System.Net.HttpListenerContext"/>s using the 2646 HTTP Listener waits for HTTP connections and provide us with <see cref="T:System.Net.HttpListenerContext"/>s using the
2647 <see cref="P:HttpServer.HttpListener.RequestHandler"/> delegate. 2647 <see cref="P:HttpServer.HttpListener.RequestHandler"/> delegate.
2648 </summary> 2648 </summary>
2649 </member> 2649 </member>
2650 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32)"> 2650 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32)">
2651 <summary> 2651 <summary>
2652 Listen for regular HTTP connections 2652 Listen for regular HTTP connections
2653 </summary> 2653 </summary>
2654 <param name="address">IP Address to accept connections on</param> 2654 <param name="address">IP Address to accept connections on</param>
2655 <param name="port">TCP Port to listen on, default HTTP port is 80.</param> 2655 <param name="port">TCP Port to listen on, default HTTP port is 80.</param>
2656 </member> 2656 </member>
2657 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)"> 2657 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
2658 <summary> 2658 <summary>
2659 Launch HttpListener in SSL mode 2659 Launch HttpListener in SSL mode
2660 </summary> 2660 </summary>
2661 <param name="address">IP Address to accept connections on</param> 2661 <param name="address">IP Address to accept connections on</param>
2662 <param name="port">TCP Port to listen on, default HTTPS port is 443</param> 2662 <param name="port">TCP Port to listen on, default HTTPS port is 443</param>
2663 <param name="certificate">Certificate to use</param> 2663 <param name="certificate">Certificate to use</param>
2664 </member> 2664 </member>
2665 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)"> 2665 <member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols)">
2666 <summary> 2666 <summary>
2667 Launch HttpListener in SSL mode 2667 Launch HttpListener in SSL mode
2668 </summary> 2668 </summary>
2669 <param name="address">IP Address to accept connections on</param> 2669 <param name="address">IP Address to accept connections on</param>
2670 <param name="port">TCP Port to listen on, default HTTPS port is 443</param> 2670 <param name="port">TCP Port to listen on, default HTTPS port is 443</param>
2671 <param name="certificate">Certificate to use</param> 2671 <param name="certificate">Certificate to use</param>
2672 <param name="protocol">which HTTPS protocol to use, default is TLS.</param> 2672 <param name="protocol">which HTTPS protocol to use, default is TLS.</param>
2673 </member> 2673 </member>
2674 <member name="M:HttpServer.HttpListener.Start(System.Int32)"> 2674 <member name="M:HttpServer.HttpListener.Start(System.Int32)">
2675 <summary> 2675 <summary>
2676 Start listen for new connections 2676 Start listen for new connections
2677 </summary> 2677 </summary>
2678 <param name="backlog">Number of connections that can stand in a queue to be accepted.</param> 2678 <param name="backlog">Number of connections that can stand in a queue to be accepted.</param>
2679 </member> 2679 </member>
2680 <member name="M:HttpServer.HttpListener.Stop"> 2680 <member name="M:HttpServer.HttpListener.Stop">
2681 <summary> 2681 <summary>
2682 Stop the listener 2682 Stop the listener
2683 </summary> 2683 </summary>
2684 <exception cref="T:System.Net.Sockets.SocketException"></exception> 2684 <exception cref="T:System.Net.Sockets.SocketException"></exception>
2685 </member> 2685 </member>
2686 <member name="E:HttpServer.HttpListener.Accepted"> 2686 <member name="E:HttpServer.HttpListener.Accepted">
2687 <summary> 2687 <summary>
2688 A client have been accepted, but not handled, by the listener. 2688 A client have been accepted, but not handled, by the listener.
2689 </summary> 2689 </summary>
2690 </member> 2690 </member>
2691 <member name="P:HttpServer.HttpListener.DisconnectHandler"> 2691 <member name="P:HttpServer.HttpListener.DisconnectHandler">
2692 <summary> 2692 <summary>
2693 Invoked when a client disconnects 2693 Invoked when a client disconnects
2694 </summary> 2694 </summary>
2695 </member> 2695 </member>
2696 <member name="P:HttpServer.HttpListener.LogWriter"> 2696 <member name="P:HttpServer.HttpListener.LogWriter">
2697 <summary> 2697 <summary>
2698 Gives you a change to receive log entries for all internals of the HTTP library. 2698 Gives you a change to receive log entries for all internals of the HTTP library.
2699 </summary> 2699 </summary>
2700 <remarks> 2700 <remarks>
2701 You may not switch log writer after starting the listener. 2701 You may not switch log writer after starting the listener.
2702 </remarks> 2702 </remarks>
2703 </member> 2703 </member>
2704 <member name="P:HttpServer.HttpListener.RequestHandler"> 2704 <member name="P:HttpServer.HttpListener.RequestHandler">
2705 <summary> 2705 <summary>
2706 This handler will be invoked each time a new connection is accepted. 2706 This handler will be invoked each time a new connection is accepted.
2707 </summary> 2707 </summary>
2708 </member> 2708 </member>
2709 <member name="P:HttpServer.HttpListener.UseTraceLogs"> 2709 <member name="P:HttpServer.HttpListener.UseTraceLogs">
2710 <summary> 2710 <summary>
2711 True if we should turn on trace logs. 2711 True if we should turn on trace logs.
2712 </summary> 2712 </summary>
2713 </member> 2713 </member>
2714 <member name="E:HttpServer.HttpListener.ExceptionThrown"> 2714 <member name="E:HttpServer.HttpListener.ExceptionThrown">
2715 <summary> 2715 <summary>
2716 Let's to receive unhandled exceptions from the threads. 2716 Let's to receive unhandled exceptions from the threads.
2717 </summary> 2717 </summary>
2718 <remarks> 2718 <remarks>
2719 Exceptions will be thrown during debug mode if this event is not used, 2719 Exceptions will be thrown during debug mode if this event is not used,
2720 exceptions will be printed to console and suppressed during release mode. 2720 exceptions will be printed to console and suppressed during release mode.
2721 </remarks> 2721 </remarks>
2722 </member> 2722 </member>
2723 <member name="T:HttpServer.Helpers.Implementations.PrototypeImp"> 2723 <member name="T:HttpServer.Helpers.Implementations.PrototypeImp">
2724 <summary> 2724 <summary>
2725 PrototypeJS implementation of the javascript functions. 2725 PrototypeJS implementation of the javascript functions.
2726 </summary> 2726 </summary>
2727 </member> 2727 </member>
2728 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxRequest(System.String,System.String[])"> 2728 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxRequest(System.String,System.String[])">
2729 <summary> 2729 <summary>
2730 Requests a url through ajax 2730 Requests a url through ajax
2731 </summary> 2731 </summary>
2732 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param> 2732 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
2733 <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param> 2733 <param name="options">optional options in format "key, value, key, value", used in JS request object. All keys should end with colon.</param>
2734 <returns>a link tag</returns> 2734 <returns>a link tag</returns>
2735 <remarks>onclick attribute is used by this method.</remarks> 2735 <remarks>onclick attribute is used by this method.</remarks>
2736 <example> 2736 <example>
2737 <code> 2737 <code>
2738 // plain text 2738 // plain text
2739 JSHelper.AjaxRequest("'/user/show/1'"); 2739 JSHelper.AjaxRequest("'/user/show/1'");
2740 2740
2741 // ajax request using this.href 2741 // ajax request using this.href
2742 string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;"; 2742 string link = "&lt;a href=\"/user/call/1\" onclick=\"" + JSHelper.AjaxRequest("this.href") + "/&lt;call user&lt;/a&gt;";
2743 </code> 2743 </code>
2744 </example> 2744 </example>
2745 </member> 2745 </member>
2746 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.Contains(System.Collections.Generic.IEnumerable{System.String},System.String)"> 2746 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.Contains(System.Collections.Generic.IEnumerable{System.String},System.String)">
2747 <summary> 2747 <summary>
2748 Determins if a list of strings contains a specific value 2748 Determins if a list of strings contains a specific value
2749 </summary> 2749 </summary>
2750 <param name="options">options to check in</param> 2750 <param name="options">options to check in</param>
2751 <param name="value">value to find</param> 2751 <param name="value">value to find</param>
2752 <returns>true if value was found</returns> 2752 <returns>true if value was found</returns>
2753 <remarks>case insensitive</remarks> 2753 <remarks>case insensitive</remarks>
2754 </member> 2754 </member>
2755 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxUpdater(System.String,System.String,System.String[])"> 2755 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxUpdater(System.String,System.String,System.String[])">
2756 <summary> 2756 <summary>
2757 Ajax requests that updates an element with 2757 Ajax requests that updates an element with
2758 the fetched content 2758 the fetched content
2759 </summary> 2759 </summary>
2760 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param> 2760 <param name="url">url to fetch. Url is NOT enclosed in quotes by the implementation. You need to do that yourself.</param>
2761 <param name="targetId">element to update</param> 2761 <param name="targetId">element to update</param>
2762 <param name="options">options in format "key, value, key, value". All keys should end with colon.</param> 2762 <param name="options">options in format "key, value, key, value". All keys should end with colon.</param>
2763 <returns>A link tag.</returns> 2763 <returns>A link tag.</returns>
2764 <example> 2764 <example>
2765 <code> 2765 <code>
2766 JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true"); 2766 JSHelper.AjaxUpdater("'/user/show/1'", "user", "onsuccess:", "alert('hello');", "asynchronous:", "true");
2767 </code> 2767 </code>
2768 </example> 2768 </example>
2769 </member> 2769 </member>
2770 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])"> 2770 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])">
2771 <summary> 2771 <summary>
2772 A link that pop ups a Dialog (overlay div) 2772 A link that pop ups a Dialog (overlay div)
2773 </summary> 2773 </summary>
2774 <param name="url">url to contents of dialog</param> 2774 <param name="url">url to contents of dialog</param>
2775 <param name="title">link title</param> 2775 <param name="title">link title</param>
2776 <param name="htmlAttributes">name, value, name, value</param> 2776 <param name="htmlAttributes">name, value, name, value</param>
2777 <returns> 2777 <returns>
2778 A "a"-tag that popups a dialog when clicked 2778 A "a"-tag that popups a dialog when clicked
2779 </returns> 2779 </returns>
2780 <remarks><para>Requires Control.Modal found here: http://livepipe.net/projects/control_modal/</para> 2780 <remarks><para>Requires Control.Modal found here: http://livepipe.net/projects/control_modal/</para>
2781 And the following javascript (load it in application.js): 2781 And the following javascript (load it in application.js):
2782 <code> 2782 <code>
2783 Event.observe(window, 'load', 2783 Event.observe(window, 'load',
2784 function() { 2784 function() {
2785 document.getElementsByClassName('modal').each(function(link){ new Control.Modal(link); }); 2785 document.getElementsByClassName('modal').each(function(link){ new Control.Modal(link); });
2786 } 2786 }
2787 ); 2787 );
2788 </code> 2788 </code>
2789 </remarks> 2789 </remarks>
2790 <example> 2790 <example>
2791 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');"); 2791 WebHelper.DialogLink("/user/show/1", "show user", "onmouseover", "alert('booh!');");
2792 </example> 2792 </example>
2793 </member> 2793 </member>
2794 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CreateDialog(System.String,System.String,System.String[])"> 2794 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CreateDialog(System.String,System.String,System.String[])">
2795 <summary> 2795 <summary>
2796 create a modal dialog (usually using DIVs) 2796 create a modal dialog (usually using DIVs)
2797 </summary> 2797 </summary>
2798 <param name="url">url to fetch</param> 2798 <param name="url">url to fetch</param>
2799 <param name="title">dialog title</param> 2799 <param name="title">dialog title</param>
2800 <param name="options">javascript/html attributes. javascript options ends with colon ':'.</param> 2800 <param name="options">javascript/html attributes. javascript options ends with colon ':'.</param>
2801 <returns></returns> 2801 <returns></returns>
2802 </member> 2802 </member>
2803 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CloseDialog"> 2803 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.CloseDialog">
2804 <summary> 2804 <summary>
2805 Close a javascript dialog window/div. 2805 Close a javascript dialog window/div.
2806 </summary> 2806 </summary>
2807 <returns>javascript for closing a dialog.</returns> 2807 <returns>javascript for closing a dialog.</returns>
2808 <see cref="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])"/> 2808 <see cref="M:HttpServer.Helpers.Implementations.PrototypeImp.DialogLink(System.String,System.String,System.String[])"/>
2809 </member> 2809 </member>
2810 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxFormOnSubmit(System.String[])"> 2810 <member name="M:HttpServer.Helpers.Implementations.PrototypeImp.AjaxFormOnSubmit(System.String[])">
2811 <summary> 2811 <summary>
2812 javascript action that should be added to the "onsubmit" event in the form tag. 2812 javascript action that should be added to the "onsubmit" event in the form tag.
2813 </summary> 2813 </summary>
2814 <param name="options">remember to encapsulate strings in ''</param> 2814 <param name="options">remember to encapsulate strings in ''</param>
2815 <returns></returns> 2815 <returns></returns>
2816 <remarks>All javascript option names should end with colon.</remarks> 2816 <remarks>All javascript option names should end with colon.</remarks>
2817 <example> 2817 <example>
2818 <code> 2818 <code>
2819 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);"); 2819 JSHelper.AjaxRequest("/user/show/1", "onsuccess:", "$('userInfo').update(result);");
2820 </code> 2820 </code>
2821 </example> 2821 </example>
2822 </member> 2822 </member>
2823 <member name="T:HttpServer.Exceptions.NotFoundException"> 2823 <member name="T:HttpServer.Exceptions.NotFoundException">
2824 <summary> 2824 <summary>
2825 The requested resource was not found in the web server. 2825 The requested resource was not found in the web server.
2826 </summary> 2826 </summary>
2827 </member> 2827 </member>
2828 <member name="T:HttpServer.Exceptions.HttpException"> 2828 <member name="T:HttpServer.Exceptions.HttpException">
2829 <summary> 2829 <summary>
2830 All HTTP based exceptions will derive this class. 2830 All HTTP based exceptions will derive this class.
2831 </summary> 2831 </summary>
2832 </member> 2832 </member>
2833 <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String)"> 2833 <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String)">
2834 <summary> 2834 <summary>
2835 Create a new HttpException 2835 Create a new HttpException
2836 </summary> 2836 </summary>
2837 <param name="code">http status code (sent in the response)</param> 2837 <param name="code">http status code (sent in the response)</param>
2838 <param name="message">error description</param> 2838 <param name="message">error description</param>
2839 </member> 2839 </member>
2840 <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String,System.Exception)"> 2840 <member name="M:HttpServer.Exceptions.HttpException.#ctor(System.Net.HttpStatusCode,System.String,System.Exception)">
2841 <summary> 2841 <summary>
2842 Create a new HttpException 2842 Create a new HttpException
2843 </summary> 2843 </summary>
2844 <param name="code">http status code (sent in the response)</param> 2844 <param name="code">http status code (sent in the response)</param>
2845 <param name="message">error description</param> 2845 <param name="message">error description</param>
2846 <param name="inner">inner exception</param> 2846 <param name="inner">inner exception</param>
2847 </member> 2847 </member>
2848 <member name="P:HttpServer.Exceptions.HttpException.HttpStatusCode"> 2848 <member name="P:HttpServer.Exceptions.HttpException.HttpStatusCode">
2849 <summary> 2849 <summary>
2850 status code to use in the response. 2850 status code to use in the response.
2851 </summary> 2851 </summary>
2852 </member> 2852 </member>
2853 <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String,System.Exception)"> 2853 <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String,System.Exception)">
2854 <summary> 2854 <summary>
2855 Create a new exception 2855 Create a new exception
2856 </summary> 2856 </summary>
2857 <param name="message">message describing the error</param> 2857 <param name="message">message describing the error</param>
2858 <param name="inner">inner exception</param> 2858 <param name="inner">inner exception</param>
2859 </member> 2859 </member>
2860 <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String)"> 2860 <member name="M:HttpServer.Exceptions.NotFoundException.#ctor(System.String)">
2861 <summary> 2861 <summary>
2862 Create a new exception 2862 Create a new exception
2863 </summary> 2863 </summary>
2864 <param name="message">message describing the error</param> 2864 <param name="message">message describing the error</param>
2865 </member> 2865 </member>
2866 <member name="T:HttpServer.Controllers.RequestController"> 2866 <member name="T:HttpServer.Controllers.RequestController">
2867 <summary> 2867 <summary>
2868 A controller in the Model-View-Controller pattern. 2868 A controller in the Model-View-Controller pattern.
2869 Derive this class and add method with one of the following signatures: 2869 Derive this class and add method with one of the following signatures:
2870 "public string MethodName()" or "public void MyMethod()". 2870 "public string MethodName()" or "public void MyMethod()".
2871 2871
2872 The first should return a string with the response, the latter 2872 The first should return a string with the response, the latter
2873 should use SendHeader and SendBody methods to handle the response. 2873 should use SendHeader and SendBody methods to handle the response.
2874 </summary> 2874 </summary>
2875 <remarks> 2875 <remarks>
2876 Last segment of the path is always broken into the properties Id and RequestedType 2876 Last segment of the path is always broken into the properties Id and RequestedType
2877 Alhtough note that the RequestedType can also be empty if no file extension have 2877 Alhtough note that the RequestedType can also be empty if no file extension have
2878 been specified. A typical use of file extensions in controllers is to specify which type of 2878 been specified. A typical use of file extensions in controllers is to specify which type of
2879 format to return. 2879 format to return.
2880 </remarks> 2880 </remarks>
2881 <example> 2881 <example>
2882 public class MyController : RequestController 2882 public class MyController : RequestController
2883 { 2883 {
2884 public string Hello() 2884 public string Hello()
2885 { 2885 {
2886 if (RequestedType == "xml") 2886 if (RequestedType == "xml")
2887 return "&lt;hello&gt;World&lt;hello&gt;"; 2887 return "&lt;hello&gt;World&lt;hello&gt;";
2888 else 2888 else
2889 return "Hello " + Request.QueryString["user"].Value + ", welcome to my world"; 2889 return "Hello " + Request.QueryString["user"].Value + ", welcome to my world";
2890 } 2890 }
2891 2891
2892 public void File() 2892 public void File()
2893 { 2893 {
2894 Response.Headers.ContentType = "text/xml"; 2894 Response.Headers.ContentType = "text/xml";
2895 Response.SendHeader(); 2895 Response.SendHeader();
2896 } 2896 }
2897 } 2897 }
2898 </example> 2898 </example>
2899 <seealso cref="T:HttpServer.Controllers.ControllerNameAttribute"/> 2899 <seealso cref="T:HttpServer.Controllers.ControllerNameAttribute"/>
2900 <seealso cref="T:HttpServer.Controllers.AuthRequiredAttribute"/> 2900 <seealso cref="T:HttpServer.Controllers.AuthRequiredAttribute"/>
2901 <seealso cref="T:HttpServer.Controllers.AuthValidatorAttribute"/> 2901 <seealso cref="T:HttpServer.Controllers.AuthValidatorAttribute"/>
2902 </member> 2902 </member>
2903 <member name="M:HttpServer.Controllers.RequestController.#ctor(HttpServer.Controllers.RequestController)"> 2903 <member name="M:HttpServer.Controllers.RequestController.#ctor(HttpServer.Controllers.RequestController)">
2904 <summary> 2904 <summary>
2905 create a new request controller 2905 create a new request controller
2906 </summary> 2906 </summary>
2907 <param name="controller">prototype to copy information from</param> 2907 <param name="controller">prototype to copy information from</param>
2908 </member> 2908 </member>
2909 <member name="M:HttpServer.Controllers.RequestController.#ctor"> 2909 <member name="M:HttpServer.Controllers.RequestController.#ctor">
2910 <summary> 2910 <summary>
2911 create a new controller 2911 create a new controller
2912 </summary> 2912 </summary>
2913 </member> 2913 </member>
2914 <member name="M:HttpServer.Controllers.RequestController.CanHandle(HttpServer.IHttpRequest)"> 2914 <member name="M:HttpServer.Controllers.RequestController.CanHandle(HttpServer.IHttpRequest)">
2915 <summary> 2915 <summary>
2916 Method that determines if an url should be handled or not by the module 2916 Method that determines if an url should be handled or not by the module
2917 </summary> 2917 </summary>
2918 <param name="request">Url requested by the client.</param> 2918 <param name="request">Url requested by the client.</param>
2919 <returns>true if module should handle the url.</returns> 2919 <returns>true if module should handle the url.</returns>
2920 </member> 2920 </member>
2921 <member name="M:HttpServer.Controllers.RequestController.GetMethod(HttpServer.IHttpRequest)"> 2921 <member name="M:HttpServer.Controllers.RequestController.GetMethod(HttpServer.IHttpRequest)">
2922 <summary> 2922 <summary>
2923 Determines which method to use. 2923 Determines which method to use.
2924 </summary> 2924 </summary>
2925 <param name="request">Requested resource</param> 2925 <param name="request">Requested resource</param>
2926 </member> 2926 </member>
2927 <member name="M:HttpServer.Controllers.RequestController.InvokeBeforeFilters"> 2927 <member name="M:HttpServer.Controllers.RequestController.InvokeBeforeFilters">
2928 <summary> 2928 <summary>
2929 Call all before filters 2929 Call all before filters
2930 </summary> 2930 </summary>
2931 <returns>true if a before filter wants to abort the processing.</returns> 2931 <returns>true if a before filter wants to abort the processing.</returns>
2932 </member> 2932 </member>
2933 <member name="M:HttpServer.Controllers.RequestController.InvokeMethod"> 2933 <member name="M:HttpServer.Controllers.RequestController.InvokeMethod">
2934 <summary> 2934 <summary>
2935 Override this method to be able to process result 2935 Override this method to be able to process result
2936 returned by controller method. 2936 returned by controller method.
2937 </summary> 2937 </summary>
2938 </member> 2938 </member>
2939 <member name="M:HttpServer.Controllers.RequestController.OnUnhandledException(System.Exception)"> 2939 <member name="M:HttpServer.Controllers.RequestController.OnUnhandledException(System.Exception)">
2940 <summary> 2940 <summary>
2941 Override this method if you want to be able to 2941 Override this method if you want to be able to
2942 handle unhanded exceptions 2942 handle unhanded exceptions
2943 </summary> 2943 </summary>
2944 <param name="err">thrown exception</param> 2944 <param name="err">thrown exception</param>
2945 <remarks>Don't "eat" exceptions derived from HttpException since 2945 <remarks>Don't "eat" exceptions derived from HttpException since
2946 they are handled by the framework,unless your are sure of what you are 2946 they are handled by the framework,unless your are sure of what you are
2947 doing..</remarks> 2947 doing..</remarks>
2948 </member> 2948 </member>
2949 <member name="M:HttpServer.Controllers.RequestController.MapMethods"> 2949 <member name="M:HttpServer.Controllers.RequestController.MapMethods">
2950 <summary> 2950 <summary>
2951 This method goes through all methods in the controller and 2951 This method goes through all methods in the controller and
2952 add's them to a dictionary. They are later used to invoke 2952 add's them to a dictionary. They are later used to invoke
2953 the correct method depending on the url 2953 the correct method depending on the url
2954 </summary> 2954 </summary>
2955 </member> 2955 </member>
2956 <member name="M:HttpServer.Controllers.RequestController.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 2956 <member name="M:HttpServer.Controllers.RequestController.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
2957 <summary> 2957 <summary>
2958 Method that process the url 2958 Method that process the url
2959 </summary> 2959 </summary>
2960 <param name="request">Uses Uri and QueryString to determine method.</param> 2960 <param name="request">Uses Uri and QueryString to determine method.</param>
2961 <param name="response">Relays response object to invoked method.</param> 2961 <param name="response">Relays response object to invoked method.</param>
2962 <param name="session">Relays session object to invoked method. </param> 2962 <param name="session">Relays session object to invoked method. </param>
2963 </member> 2963 </member>
2964 <member name="M:HttpServer.Controllers.RequestController.SetupRequest(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 2964 <member name="M:HttpServer.Controllers.RequestController.SetupRequest(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
2965 <summary> 2965 <summary>
2966 Will assign all variables that are unique for each session 2966 Will assign all variables that are unique for each session
2967 </summary> 2967 </summary>
2968 <param name="request"></param> 2968 <param name="request"></param>
2969 <param name="response"></param> 2969 <param name="response"></param>
2970 <param name="session"></param> 2970 <param name="session"></param>
2971 </member> 2971 </member>
2972 <member name="M:HttpServer.Controllers.RequestController.Clone"> 2972 <member name="M:HttpServer.Controllers.RequestController.Clone">
2973 <summary> 2973 <summary>
2974 Make a clone of this controller 2974 Make a clone of this controller
2975 </summary> 2975 </summary>
2976 <returns>a new controller with the same base information as this one.</returns> 2976 <returns>a new controller with the same base information as this one.</returns>
2977 </member> 2977 </member>
2978 <member name="P:HttpServer.Controllers.RequestController.AuthenticationTag"> 2978 <member name="P:HttpServer.Controllers.RequestController.AuthenticationTag">
2979 <summary> 2979 <summary>
2980 object that was attached during http authentication process. 2980 object that was attached during http authentication process.
2981 </summary> 2981 </summary>
2982 <remarks> 2982 <remarks>
2983 You can also assign this tag yourself if you are using regular 2983 You can also assign this tag yourself if you are using regular
2984 http page login. 2984 http page login.
2985 </remarks> 2985 </remarks>
2986 <seealso cref="T:HttpServer.Authentication.AuthModule"/> 2986 <seealso cref="T:HttpServer.Authentication.AuthModule"/>
2987 </member> 2987 </member>
2988 <member name="P:HttpServer.Controllers.RequestController.ControllerName"> 2988 <member name="P:HttpServer.Controllers.RequestController.ControllerName">
2989 <summary> 2989 <summary>
2990 Name of this controller (class name without the "Controller" part) 2990 Name of this controller (class name without the "Controller" part)
2991 </summary> 2991 </summary>
2992 </member> 2992 </member>
2993 <member name="P:HttpServer.Controllers.RequestController.DefaultMethod"> 2993 <member name="P:HttpServer.Controllers.RequestController.DefaultMethod">
2994 <summary> 2994 <summary>
2995 Specifies the method to use if no action have been specified. 2995 Specifies the method to use if no action have been specified.
2996 </summary> 2996 </summary>
2997 <exception cref="T:System.ArgumentException">If specified method do not exist.</exception> 2997 <exception cref="T:System.ArgumentException">If specified method do not exist.</exception>
2998 </member> 2998 </member>
2999 <member name="P:HttpServer.Controllers.RequestController.Id"> 2999 <member name="P:HttpServer.Controllers.RequestController.Id">
3000 <summary> 3000 <summary>
3001 Id is the third part of the uri path. 3001 Id is the third part of the uri path.
3002 </summary> 3002 </summary>
3003 <remarks> 3003 <remarks>
3004 <para>Is extracted as in: /controllername/methodname/id/ 3004 <para>Is extracted as in: /controllername/methodname/id/
3005 </para> 3005 </para>
3006 <para>string.Empty if not specified.</para> 3006 <para>string.Empty if not specified.</para>
3007 </remarks> 3007 </remarks>
3008 <example></example> 3008 <example></example>
3009 </member> 3009 </member>
3010 <member name="P:HttpServer.Controllers.RequestController.MethodName"> 3010 <member name="P:HttpServer.Controllers.RequestController.MethodName">
3011 <summary> 3011 <summary>
3012 Method currently being invoked. 3012 Method currently being invoked.
3013 Always in lower case. 3013 Always in lower case.
3014 </summary> 3014 </summary>
3015 </member> 3015 </member>
3016 <member name="P:HttpServer.Controllers.RequestController.Request"> 3016 <member name="P:HttpServer.Controllers.RequestController.Request">
3017 <summary> 3017 <summary>
3018 Request information (like Url, form, querystring etc) 3018 Request information (like Url, form, querystring etc)
3019 </summary> 3019 </summary>
3020 </member> 3020 </member>
3021 <member name="P:HttpServer.Controllers.RequestController.RequestedExtension"> 3021 <member name="P:HttpServer.Controllers.RequestController.RequestedExtension">
3022 <summary> 3022 <summary>
3023 Extension if a filename was specified. 3023 Extension if a filename was specified.
3024 </summary> 3024 </summary>
3025 </member> 3025 </member>
3026 <member name="P:HttpServer.Controllers.RequestController.Response"> 3026 <member name="P:HttpServer.Controllers.RequestController.Response">
3027 <summary> 3027 <summary>
3028 Response information (that is going to be sent back to the browser/client) 3028 Response information (that is going to be sent back to the browser/client)
3029 </summary> 3029 </summary>
3030 </member> 3030 </member>
3031 <member name="P:HttpServer.Controllers.RequestController.Session"> 3031 <member name="P:HttpServer.Controllers.RequestController.Session">
3032 <summary> 3032 <summary>
3033 Session information, is stored between requests as long as the session cookie is valid. 3033 Session information, is stored between requests as long as the session cookie is valid.
3034 </summary> 3034 </summary>
3035 </member> 3035 </member>
3036 <member name="T:HttpServer.Controllers.AuthRequiredAttribute"> 3036 <member name="T:HttpServer.Controllers.AuthRequiredAttribute">
3037 <summary> 3037 <summary>
3038 Marks methods to let framework know that the method is protected 3038 Marks methods to let framework know that the method is protected
3039 </summary> 3039 </summary>
3040 <seealso cref="T:HttpServer.Controllers.AuthValidatorAttribute"/> 3040 <seealso cref="T:HttpServer.Controllers.AuthValidatorAttribute"/>
3041 <seealso cref="T:HttpServer.Controllers.RequestController"/> 3041 <seealso cref="T:HttpServer.Controllers.RequestController"/>
3042 </member> 3042 </member>
3043 <member name="M:HttpServer.Controllers.AuthRequiredAttribute.#ctor"> 3043 <member name="M:HttpServer.Controllers.AuthRequiredAttribute.#ctor">
3044 <summary> 3044 <summary>
3045 Initializes a new instance of the <see cref="T:HttpServer.Controllers.AuthRequiredAttribute"/> class. 3045 Initializes a new instance of the <see cref="T:HttpServer.Controllers.AuthRequiredAttribute"/> class.
3046 </summary> 3046 </summary>
3047 </member> 3047 </member>
3048 <member name="M:HttpServer.Controllers.AuthRequiredAttribute.#ctor(System.Int32)"> 3048 <member name="M:HttpServer.Controllers.AuthRequiredAttribute.#ctor(System.Int32)">
3049 <summary> 3049 <summary>
3050 3050
3051 </summary> 3051 </summary>
3052 <param name="level"> 3052 <param name="level">
3053 Level is a value defined by you. It should be used to determine the users 3053 Level is a value defined by you. It should be used to determine the users
3054 that can access the method tagged with the AuthRequired attribute. 3054 that can access the method tagged with the AuthRequired attribute.
3055 </param> 3055 </param>
3056 <example> 3056 <example>
3057 <![CDATA[ 3057 <![CDATA[
3058 public enum UserLevel 3058 public enum UserLevel
3059 { 3059 {
3060 Guest, 3060 Guest,
3061 User, 3061 User,
3062 Admin, 3062 Admin,
3063 SuperAdmin 3063 SuperAdmin
3064 } 3064 }
3065 public class UserController : RequestController 3065 public class UserController : RequestController
3066 { 3066 {
3067 [AuthRequired(UserLevel.User)] 3067 [AuthRequired(UserLevel.User)]
3068 public string View() 3068 public string View()
3069 { 3069 {
3070 return "Can also be viewed by users"; 3070 return "Can also be viewed by users";
3071 } 3071 }
3072 3072
3073 [AuthValidatorAttribute] 3073 [AuthValidatorAttribute]
3074 public bool ValidateUser(int level) 3074 public bool ValidateUser(int level)
3075 { 3075 {
3076 (User)user = Session["user"]; 3076 (User)user = Session["user"];
3077 return user != null && user.Status >= level; 3077 return user != null && user.Status >= level;
3078 } 3078 }
3079 } 3079 }
3080 ]]> 3080 ]]>
3081 </example> 3081 </example>
3082 </member> 3082 </member>
3083 <member name="P:HttpServer.Controllers.AuthRequiredAttribute.Level"> 3083 <member name="P:HttpServer.Controllers.AuthRequiredAttribute.Level">
3084 <summary> 3084 <summary>
3085 Level is a value defined by you. It should be used to determine the users 3085 Level is a value defined by you. It should be used to determine the users
3086 that can access the method tagged with the AuthRequired attribute. 3086 that can access the method tagged with the AuthRequired attribute.
3087 </summary> 3087 </summary>
3088 </member> 3088 </member>
3089 <member name="T:HttpServer.Sessions.MemorySession"> 3089 <member name="T:HttpServer.Sessions.MemorySession">
3090 <summary> 3090 <summary>
3091 A session stored in memory. 3091 A session stored in memory.
3092 </summary> 3092 </summary>
3093 </member> 3093 </member>
3094 <member name="T:HttpServer.Sessions.IHttpSession"> 3094 <member name="T:HttpServer.Sessions.IHttpSession">
3095 <summary> 3095 <summary>
3096 Interface for sessions 3096 Interface for sessions
3097 </summary> 3097 </summary>
3098 </member> 3098 </member>
3099 <member name="M:HttpServer.Sessions.IHttpSession.Clear"> 3099 <member name="M:HttpServer.Sessions.IHttpSession.Clear">
3100 <summary> 3100 <summary>
3101 Remove everything from the session 3101 Remove everything from the session
3102 </summary> 3102 </summary>
3103 </member> 3103 </member>
3104 <member name="M:HttpServer.Sessions.IHttpSession.Clear(System.Boolean)"> 3104 <member name="M:HttpServer.Sessions.IHttpSession.Clear(System.Boolean)">
3105 <summary> 3105 <summary>
3106 Remove everything from the session 3106 Remove everything from the session
3107 </summary> 3107 </summary>
3108 <param name="expires">True if the session is cleared due to expiration</param> 3108 <param name="expires">True if the session is cleared due to expiration</param>
3109 </member> 3109 </member>
3110 <member name="P:HttpServer.Sessions.IHttpSession.Id"> 3110 <member name="P:HttpServer.Sessions.IHttpSession.Id">
3111 <summary> 3111 <summary>
3112 Session id 3112 Session id
3113 </summary> 3113 </summary>
3114 </member> 3114 </member>
3115 <member name="P:HttpServer.Sessions.IHttpSession.Item(System.String)"> 3115 <member name="P:HttpServer.Sessions.IHttpSession.Item(System.String)">
3116 <summary> 3116 <summary>
3117 Should 3117 Should
3118 </summary> 3118 </summary>
3119 <param name="name">Name of the session variable</param> 3119 <param name="name">Name of the session variable</param>
3120 <returns>null if it's not set</returns> 3120 <returns>null if it's not set</returns>
3121 <exception cref="T:System.Runtime.Serialization.SerializationException">If the object cant be serialized.</exception> 3121 <exception cref="T:System.Runtime.Serialization.SerializationException">If the object cant be serialized.</exception>
3122 </member> 3122 </member>
3123 <member name="P:HttpServer.Sessions.IHttpSession.Accessed"> 3123 <member name="P:HttpServer.Sessions.IHttpSession.Accessed">
3124 <summary> 3124 <summary>
3125 When the session was last accessed. 3125 When the session was last accessed.
3126 This property is touched by the http server each time the 3126 This property is touched by the http server each time the
3127 session is requested. 3127 session is requested.
3128 </summary> 3128 </summary>
3129 </member> 3129 </member>
3130 <member name="P:HttpServer.Sessions.IHttpSession.Count"> 3130 <member name="P:HttpServer.Sessions.IHttpSession.Count">
3131 <summary> 3131 <summary>
3132 Number of session variables. 3132 Number of session variables.
3133 </summary> 3133 </summary>
3134 </member> 3134 </member>
3135 <member name="E:HttpServer.Sessions.IHttpSession.BeforeClear"> 3135 <member name="E:HttpServer.Sessions.IHttpSession.BeforeClear">
3136 <summary> 3136 <summary>
3137 Event triggered upon clearing the session 3137 Event triggered upon clearing the session
3138 </summary> 3138 </summary>
3139 </member> 3139 </member>
3140 <member name="M:HttpServer.Sessions.MemorySession.#ctor(System.String)"> 3140 <member name="M:HttpServer.Sessions.MemorySession.#ctor(System.String)">
3141 <summary> 3141 <summary>
3142 3142
3143 </summary> 3143 </summary>
3144 <param name="id">A unique id used by the sessions store to identify the session</param> 3144 <param name="id">A unique id used by the sessions store to identify the session</param>
3145 </member> 3145 </member>
3146 <member name="M:HttpServer.Sessions.MemorySession.SetId(System.String)"> 3146 <member name="M:HttpServer.Sessions.MemorySession.SetId(System.String)">
3147 <summary> 3147 <summary>
3148 Id 3148 Id
3149 </summary> 3149 </summary>
3150 <param name="id"></param> 3150 <param name="id"></param>
3151 </member> 3151 </member>
3152 <member name="M:HttpServer.Sessions.MemorySession.Clear"> 3152 <member name="M:HttpServer.Sessions.MemorySession.Clear">
3153 <summary> 3153 <summary>
3154 Remove everything from the session 3154 Remove everything from the session
3155 </summary> 3155 </summary>
3156 </member> 3156 </member>
3157 <member name="M:HttpServer.Sessions.MemorySession.Clear(System.Boolean)"> 3157 <member name="M:HttpServer.Sessions.MemorySession.Clear(System.Boolean)">
3158 <summary> 3158 <summary>
3159 Clears the specified expire. 3159 Clears the specified expire.
3160 </summary> 3160 </summary>
3161 <param name="expires">True if the session is cleared due to expiration</param> 3161 <param name="expires">True if the session is cleared due to expiration</param>
3162 </member> 3162 </member>
3163 <member name="M:HttpServer.Sessions.MemorySession.Dispose"> 3163 <member name="M:HttpServer.Sessions.MemorySession.Dispose">
3164 <summary> 3164 <summary>
3165 Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. 3165 Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
3166 </summary> 3166 </summary>
3167 <filterpriority>2</filterpriority> 3167 <filterpriority>2</filterpriority>
3168 </member> 3168 </member>
3169 <member name="P:HttpServer.Sessions.MemorySession.Id"> 3169 <member name="P:HttpServer.Sessions.MemorySession.Id">
3170 <summary> 3170 <summary>
3171 Session id 3171 Session id
3172 </summary> 3172 </summary>
3173 </member> 3173 </member>
3174 <member name="P:HttpServer.Sessions.MemorySession.Item(System.String)"> 3174 <member name="P:HttpServer.Sessions.MemorySession.Item(System.String)">
3175 <summary> 3175 <summary>
3176 Should 3176 Should
3177 </summary> 3177 </summary>
3178 <param name="name">Name of the session variable</param> 3178 <param name="name">Name of the session variable</param>
3179 <returns>null if it's not set</returns> 3179 <returns>null if it's not set</returns>
3180 </member> 3180 </member>
3181 <member name="P:HttpServer.Sessions.MemorySession.Accessed"> 3181 <member name="P:HttpServer.Sessions.MemorySession.Accessed">
3182 <summary> 3182 <summary>
3183 when the session was last accessed. 3183 when the session was last accessed.
3184 </summary> 3184 </summary>
3185 <remarks> 3185 <remarks>
3186 Used to determine when the session should be removed. 3186 Used to determine when the session should be removed.
3187 </remarks> 3187 </remarks>
3188 </member> 3188 </member>
3189 <member name="P:HttpServer.Sessions.MemorySession.Count"> 3189 <member name="P:HttpServer.Sessions.MemorySession.Count">
3190 <summary> 3190 <summary>
3191 Number of values in the session 3191 Number of values in the session
3192 </summary> 3192 </summary>
3193 </member> 3193 </member>
3194 <member name="P:HttpServer.Sessions.MemorySession.Changed"> 3194 <member name="P:HttpServer.Sessions.MemorySession.Changed">
3195 <summary> 3195 <summary>
3196 Flag to indicate that the session have been changed 3196 Flag to indicate that the session have been changed
3197 and should be saved into the session store. 3197 and should be saved into the session store.
3198 </summary> 3198 </summary>
3199 </member> 3199 </member>
3200 <member name="E:HttpServer.Sessions.MemorySession.BeforeClear"> 3200 <member name="E:HttpServer.Sessions.MemorySession.BeforeClear">
3201 <summary> 3201 <summary>
3202 Event triggered upon clearing the session 3202 Event triggered upon clearing the session
3203 </summary> 3203 </summary>
3204 </member> 3204 </member>
3205 <member name="T:HttpServer.Rendering.Haml.Rules.NewLineRule"> 3205 <member name="T:HttpServer.Rendering.Haml.Rules.NewLineRule">
3206 <summary> 3206 <summary>
3207 IRule that says that something :) 3207 IRule that says that something :)
3208 </summary> 3208 </summary>
3209 </member> 3209 </member>
3210 <member name="M:HttpServer.Rendering.Haml.Rules.NewLineRule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)"> 3210 <member name="M:HttpServer.Rendering.Haml.Rules.NewLineRule.IsMultiLine(HttpServer.Rendering.Haml.LineInfo,System.Boolean)">
3211 <summary> 3211 <summary>
3212 Determines if this node spans over multiple lines. 3212 Determines if this node spans over multiple lines.
3213 </summary> 3213 </summary>
3214 <param name="line">contains line information (and text)</param> 3214 <param name="line">contains line information (and text)</param>
3215 <param name="isContinued">true if the previous line was continued.</param> 3215 <param name="isContinued">true if the previous line was continued.</param>
3216 <returns>true if this line continues onto the next.</returns> 3216 <returns>true if this line continues onto the next.</returns>
3217 </member> 3217 </member>
3218 <member name="T:HttpServer.Rendering.Haml.Nodes.TagNode"> 3218 <member name="T:HttpServer.Rendering.Haml.Nodes.TagNode">
3219 <summary> 3219 <summary>
3220 Represents a HTML tag. 3220 Represents a HTML tag.
3221 </summary> 3221 </summary>
3222 </member> 3222 </member>
3223 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)"> 3223 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.#ctor(HttpServer.Rendering.Haml.Nodes.Node)">
3224 <summary> 3224 <summary>
3225 Create a new HTML tag node. 3225 Create a new HTML tag node.
3226 </summary> 3226 </summary>
3227 <param name="parent">parent node</param> 3227 <param name="parent">parent node</param>
3228 </member> 3228 </member>
3229 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.CanHandle(System.String,System.Boolean)"> 3229 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.CanHandle(System.String,System.Boolean)">
3230 <summary> 3230 <summary>
3231 determines if this node can handle the line (by checking the first word); 3231 determines if this node can handle the line (by checking the first word);
3232 </summary> 3232 </summary>
3233 <param name="word">Controller char (word)</param> 3233 <param name="word">Controller char (word)</param>
3234 <returns>true if text belongs to this node type</returns> 3234 <returns>true if text belongs to this node type</returns>
3235 <param name="firstNode">first node on line.</param> 3235 <param name="firstNode">first node on line.</param>
3236 </member> 3236 </member>
3237 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 3237 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
3238 <summary> 3238 <summary>
3239 Parse node contents add return a fresh node. 3239 Parse node contents add return a fresh node.
3240 </summary> 3240 </summary>
3241 <param name="parent">Node that this is a subnode to. Can be null</param> 3241 <param name="parent">Node that this is a subnode to. Can be null</param>
3242 <param name="prototypes">A list with node types</param> 3242 <param name="prototypes">A list with node types</param>
3243 <param name="line">Line to parse</param> 3243 <param name="line">Line to parse</param>
3244 <param name="offset">Where to start the parsing. Will be set to where the next node should start parsing</param> 3244 <param name="offset">Where to start the parsing. Will be set to where the next node should start parsing</param>
3245 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 3245 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
3246 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 3246 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
3247 </member> 3247 </member>
3248 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 3248 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
3249 <summary> 3249 <summary>
3250 Convert the node to c# code 3250 Convert the node to c# code
3251 </summary> 3251 </summary>
3252 <param name="inString">True if we are inside the internal stringbuilder</param> 3252 <param name="inString">True if we are inside the internal stringbuilder</param>
3253 <param name="smallEnough">true if all subnodes fit on one line</param> 3253 <param name="smallEnough">true if all subnodes fit on one line</param>
3254 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 3254 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
3255 <returns>c# code</returns> 3255 <returns>c# code</returns>
3256 </member> 3256 </member>
3257 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.ToHtml"> 3257 <member name="M:HttpServer.Rendering.Haml.Nodes.TagNode.ToHtml">
3258 <summary> 3258 <summary>
3259 Convert node to HTML (with ASP-tags) 3259 Convert node to HTML (with ASP-tags)
3260 </summary> 3260 </summary>
3261 <returns>HTML string</returns> 3261 <returns>HTML string</returns>
3262 </member> 3262 </member>
3263 <member name="P:HttpServer.Rendering.Haml.Nodes.TagNode.IsTextNode"> 3263 <member name="P:HttpServer.Rendering.Haml.Nodes.TagNode.IsTextNode">
3264 <summary> 3264 <summary>
3265 This is a plain text node 3265 This is a plain text node
3266 </summary> 3266 </summary>
3267 </member> 3267 </member>
3268 <member name="P:HttpServer.Rendering.Haml.Nodes.TagNode.Name"> 3268 <member name="P:HttpServer.Rendering.Haml.Nodes.TagNode.Name">
3269 <summary> 3269 <summary>
3270 tag name 3270 tag name
3271 </summary> 3271 </summary>
3272 </member> 3272 </member>
3273 <member name="T:HttpServer.Rendering.TemplateException"> 3273 <member name="T:HttpServer.Rendering.TemplateException">
3274 <summary> 3274 <summary>
3275 Thrown when a template cannot be compiled. 3275 Thrown when a template cannot be compiled.
3276 </summary> 3276 </summary>
3277 </member> 3277 </member>
3278 <member name="M:HttpServer.Rendering.TemplateException.#ctor(System.String,Fadd.CompilerException)"> 3278 <member name="M:HttpServer.Rendering.TemplateException.#ctor(System.String,Fadd.CompilerException)">
3279 <summary> 3279 <summary>
3280 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateException"/> class. 3280 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateException"/> class.
3281 </summary> 3281 </summary>
3282 <param name="templateName">Template that failed compilation.</param> 3282 <param name="templateName">Template that failed compilation.</param>
3283 <param name="err">Exception thrown by the compiler.</param> 3283 <param name="err">Exception thrown by the compiler.</param>
3284 </member> 3284 </member>
3285 <member name="M:HttpServer.Rendering.TemplateException.ToString"> 3285 <member name="M:HttpServer.Rendering.TemplateException.ToString">
3286 <summary> 3286 <summary>
3287 Creates and returns a string representation of the current exception. 3287 Creates and returns a string representation of the current exception.
3288 </summary> 3288 </summary>
3289 <returns> 3289 <returns>
3290 A string representation of the current exception. 3290 A string representation of the current exception.
3291 </returns> 3291 </returns>
3292 <PermissionSet> 3292 <PermissionSet>
3293 <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" PathDiscovery="*AllFiles*"/> 3293 <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" PathDiscovery="*AllFiles*"/>
3294 </PermissionSet> 3294 </PermissionSet>
3295 </member> 3295 </member>
3296 <member name="P:HttpServer.Rendering.TemplateException.Message"> 3296 <member name="P:HttpServer.Rendering.TemplateException.Message">
3297 <summary> 3297 <summary>
3298 Gets a message that describes the current exception. 3298 Gets a message that describes the current exception.
3299 </summary> 3299 </summary>
3300 <value></value> 3300 <value></value>
3301 <returns> 3301 <returns>
3302 The error message that explains the reason for the exception, or an empty string(""). 3302 The error message that explains the reason for the exception, or an empty string("").
3303 </returns> 3303 </returns>
3304 </member> 3304 </member>
3305 <member name="T:HttpServer.Method"> 3305 <member name="T:HttpServer.Method">
3306 <summary> 3306 <summary>
3307 Contains all HTTP Methods (according to the HTTP 1.1 specification) 3307 Contains all HTTP Methods (according to the HTTP 1.1 specification)
3308 <para> 3308 <para>
3309 See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 3309 See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
3310 </para> 3310 </para>
3311 </summary> 3311 </summary>
3312 </member> 3312 </member>
3313 <member name="F:HttpServer.Method.Delete"> 3313 <member name="F:HttpServer.Method.Delete">
3314 <summary> 3314 <summary>
3315 The DELETE method requests that the origin server delete the resource identified by the Request-URI. 3315 The DELETE method requests that the origin server delete the resource identified by the Request-URI.
3316 </summary> 3316 </summary>
3317 <remarks> 3317 <remarks>
3318 <para> 3318 <para>
3319 This method MAY be overridden by human intervention (or other means) on the origin server. 3319 This method MAY be overridden by human intervention (or other means) on the origin server.
3320 The client cannot be guaranteed that the operation has been carried out, even if the status code 3320 The client cannot be guaranteed that the operation has been carried out, even if the status code
3321 returned from the origin server indicates that the action has been completed successfully. 3321 returned from the origin server indicates that the action has been completed successfully.
3322 </para> 3322 </para>
3323 <para> 3323 <para>
3324 However, the server SHOULD NOT indicate success unless, at the time the response is given, 3324 However, the server SHOULD NOT indicate success unless, at the time the response is given,
3325 it intends to delete the resource or move it to an inaccessible location. 3325 it intends to delete the resource or move it to an inaccessible location.
3326 </para> 3326 </para>
3327 <para> 3327 <para>
3328 A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 3328 A successful response SHOULD be 200 (OK) if the response includes an entity describing the status,
3329 202 (Accepted) if the action has not yet been enacted, 3329 202 (Accepted) if the action has not yet been enacted,
3330 or 204 (No Content) if the action has been enacted but the response does not include an entity. 3330 or 204 (No Content) if the action has been enacted but the response does not include an entity.
3331 </para> 3331 </para>
3332 <para> 3332 <para>
3333 If the request passes through a cache and the Request-URI identifies one or more currently cached entities, 3333 If the request passes through a cache and the Request-URI identifies one or more currently cached entities,
3334 those entries SHOULD be treated as stale. Responses to this method are not cacheable. 3334 those entries SHOULD be treated as stale. Responses to this method are not cacheable.
3335 </para> 3335 </para>
3336 </remarks> 3336 </remarks>
3337 </member> 3337 </member>
3338 <member name="F:HttpServer.Method.Get"> 3338 <member name="F:HttpServer.Method.Get">
3339 <summary> 3339 <summary>
3340 The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. 3340 The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.
3341 </summary> 3341 </summary>
3342 <remarks> 3342 <remarks>
3343 <para> 3343 <para>
3344 If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the 3344 If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the
3345 entity in the response and not the source text of the process, unless that text happens to be the output of the process. 3345 entity in the response and not the source text of the process, unless that text happens to be the output of the process.
3346 </para> 3346 </para>
3347 <para> 3347 <para>
3348 The semantics of the GET method change to a "conditional GET" if the request message includes an 3348 The semantics of the GET method change to a "conditional GET" if the request message includes an
3349 If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. 3349 If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field.
3350 A conditional GET method requests that the entity be transferred only under the circumstances described 3350 A conditional GET method requests that the entity be transferred only under the circumstances described
3351 by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network 3351 by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network
3352 usage by allowing cached entities to be refreshed without requiring multiple requests or transferring 3352 usage by allowing cached entities to be refreshed without requiring multiple requests or transferring
3353 data already held by the client. 3353 data already held by the client.
3354 </para> 3354 </para>
3355 </remarks> 3355 </remarks>
3356 </member> 3356 </member>
3357 <member name="F:HttpServer.Method.Header"> 3357 <member name="F:HttpServer.Method.Header">
3358 <summary> 3358 <summary>
3359 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. 3359 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
3360 </summary> 3360 </summary>
3361 <remarks> 3361 <remarks>
3362 The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the 3362 The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the
3363 information sent in response to a GET request. This method can be used for obtaining metainformation about 3363 information sent in response to a GET request. This method can be used for obtaining metainformation about
3364 the entity implied by the request without transferring the entity-body itself. 3364 the entity implied by the request without transferring the entity-body itself.
3365 3365
3366 This method is often used for testing hypertext links for validity, accessibility, and recent modification. 3366 This method is often used for testing hypertext links for validity, accessibility, and recent modification.
3367 </remarks> 3367 </remarks>
3368 </member> 3368 </member>
3369 <member name="F:HttpServer.Method.Options"> 3369 <member name="F:HttpServer.Method.Options">
3370 <summary> 3370 <summary>
3371 <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para> 3371 <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para>
3372 </summary> 3372 </summary>
3373 <remarks> 3373 <remarks>
3374 <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para> 3374 <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para>
3375 </remarks> 3375 </remarks>
3376 </member> 3376 </member>
3377 <member name="F:HttpServer.Method.Post"> 3377 <member name="F:HttpServer.Method.Post">
3378 <summary> 3378 <summary>
3379 The POST method is used to request that the origin server accept the entity enclosed 3379 The POST method is used to request that the origin server accept the entity enclosed
3380 in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. 3380 in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
3381 </summary> 3381 </summary>
3382 <remarks> 3382 <remarks>
3383 POST is designed to allow a uniform method to cover the following functions: 3383 POST is designed to allow a uniform method to cover the following functions:
3384 <list type="bullet"> 3384 <list type="bullet">
3385 <item> 3385 <item>
3386 Annotation of existing resources; 3386 Annotation of existing resources;
3387 </item><item> 3387 </item><item>
3388 Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; 3388 Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
3389 </item><item> 3389 </item><item>
3390 Providing a block of data, such as the result of submitting a form, to a data-handling process; 3390 Providing a block of data, such as the result of submitting a form, to a data-handling process;
3391 </item><item> 3391 </item><item>
3392 Extending a database through an append operation. 3392 Extending a database through an append operation.
3393 </item> 3393 </item>
3394 </list> 3394 </list>
3395 <para> 3395 <para>
3396 If a resource has been created on the origin server, the response SHOULD be 201 (Created) and 3396 If a resource has been created on the origin server, the response SHOULD be 201 (Created) and
3397 contain an entity which describes the status of the request and refers to the new resource, and a 3397 contain an entity which describes the status of the request and refers to the new resource, and a
3398 Location header (see section 14.30). 3398 Location header (see section 14.30).
3399 </para> 3399 </para>
3400 <para> 3400 <para>
3401 The action performed by the POST method might not result in a resource that can be identified by a URI. 3401 The action performed by the POST method might not result in a resource that can be identified by a URI.
3402 In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on 3402 In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on
3403 whether or not the response includes an entity that describes the result. 3403 whether or not the response includes an entity that describes the result.
3404 </para><para> 3404 </para><para>
3405 Responses to this method are not cacheable, unless the response includes appropriate Cache-Control 3405 Responses to this method are not cacheable, unless the response includes appropriate Cache-Control
3406 or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent 3406 or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent
3407 to retrieve a cacheable resource. 3407 to retrieve a cacheable resource.
3408 </para> 3408 </para>
3409 </remarks> 3409 </remarks>
3410 </member> 3410 </member>
3411 <member name="F:HttpServer.Method.Put"> 3411 <member name="F:HttpServer.Method.Put">
3412 <summary> 3412 <summary>
3413 The PUT method requests that the enclosed entity be stored under the supplied Request-URI. 3413 The PUT method requests that the enclosed entity be stored under the supplied Request-URI.
3414 </summary> 3414 </summary>
3415 <remarks> 3415 <remarks>
3416 <list type="bullet"> 3416 <list type="bullet">
3417 <item> 3417 <item>
3418 If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a 3418 If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a
3419 modified version of the one residing on the origin server. 3419 modified version of the one residing on the origin server.
3420 </item><item> 3420 </item><item>
3421 If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new 3421 If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new
3422 resource by the requesting user agent, the origin server can create the resource with that URI. 3422 resource by the requesting user agent, the origin server can create the resource with that URI.
3423 </item><item> 3423 </item><item>
3424 If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. 3424 If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response.
3425 </item><item> 3425 </item><item>
3426 If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to 3426 If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to
3427 indicate successful completion of the request. 3427 indicate successful completion of the request.
3428 </item><item> 3428 </item><item>
3429 If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be 3429 If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be
3430 given that reflects the nature of the problem. 3430 given that reflects the nature of the problem.
3431 </item> 3431 </item>
3432 </list> 3432 </list>
3433 <para> 3433 <para>
3434 The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not 3434 The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not
3435 understand or implement and MUST return a 501 (Not Implemented) response in such cases. 3435 understand or implement and MUST return a 501 (Not Implemented) response in such cases.
3436 </para> 3436 </para>
3437 </remarks> 3437 </remarks>
3438 </member> 3438 </member>
3439 <member name="F:HttpServer.Method.Trace"> 3439 <member name="F:HttpServer.Method.Trace">
3440 <summary> 3440 <summary>
3441 The TRACE method is used to invoke a remote, application-layer loop- back of the request message. 3441 The TRACE method is used to invoke a remote, application-layer loop- back of the request message.
3442 </summary> 3442 </summary>
3443 </member> 3443 </member>
3444 <member name="T:HttpServer.Methods"> 3444 <member name="T:HttpServer.Methods">
3445 <summary> 3445 <summary>
3446 Contains all HTTP Methods (according to the HTTP 1.1 specification) 3446 Contains all HTTP Methods (according to the HTTP 1.1 specification)
3447 <para> 3447 <para>
3448 See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 3448 See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
3449 </para> 3449 </para>
3450 </summary> 3450 </summary>
3451 </member> 3451 </member>
3452 <member name="F:HttpServer.Methods.Delete"> 3452 <member name="F:HttpServer.Methods.Delete">
3453 <summary> 3453 <summary>
3454 The DELETE method requests that the origin server delete the resource identified by the Request-URI. 3454 The DELETE method requests that the origin server delete the resource identified by the Request-URI.
3455 </summary> 3455 </summary>
3456 <remarks> 3456 <remarks>
3457 <para> 3457 <para>
3458 This method MAY be overridden by human intervention (or other means) on the origin server. 3458 This method MAY be overridden by human intervention (or other means) on the origin server.
3459 The client cannot be guaranteed that the operation has been carried out, even if the status code 3459 The client cannot be guaranteed that the operation has been carried out, even if the status code
3460 returned from the origin server indicates that the action has been completed successfully. 3460 returned from the origin server indicates that the action has been completed successfully.
3461 </para> 3461 </para>
3462 <para> 3462 <para>
3463 However, the server SHOULD NOT indicate success unless, at the time the response is given, 3463 However, the server SHOULD NOT indicate success unless, at the time the response is given,
3464 it intends to delete the resource or move it to an inaccessible location. 3464 it intends to delete the resource or move it to an inaccessible location.
3465 </para> 3465 </para>
3466 <para> 3466 <para>
3467 A successful response SHOULD be 200 (OK) if the response includes an entity describing the status, 3467 A successful response SHOULD be 200 (OK) if the response includes an entity describing the status,
3468 202 (Accepted) if the action has not yet been enacted, 3468 202 (Accepted) if the action has not yet been enacted,
3469 or 204 (No Content) if the action has been enacted but the response does not include an entity. 3469 or 204 (No Content) if the action has been enacted but the response does not include an entity.
3470 </para> 3470 </para>
3471 <para> 3471 <para>
3472 If the request passes through a cache and the Request-URI identifies one or more currently cached entities, 3472 If the request passes through a cache and the Request-URI identifies one or more currently cached entities,
3473 those entries SHOULD be treated as stale. Responses to this method are not cacheable. 3473 those entries SHOULD be treated as stale. Responses to this method are not cacheable.
3474 </para> 3474 </para>
3475 </remarks> 3475 </remarks>
3476 </member> 3476 </member>
3477 <member name="F:HttpServer.Methods.Get"> 3477 <member name="F:HttpServer.Methods.Get">
3478 <summary> 3478 <summary>
3479 The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. 3479 The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI.
3480 </summary> 3480 </summary>
3481 <remarks> 3481 <remarks>
3482 <para> 3482 <para>
3483 If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the 3483 If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the
3484 entity in the response and not the source text of the process, unless that text happens to be the output of the process. 3484 entity in the response and not the source text of the process, unless that text happens to be the output of the process.
3485 </para> 3485 </para>
3486 <para> 3486 <para>
3487 The semantics of the GET method change to a "conditional GET" if the request message includes an 3487 The semantics of the GET method change to a "conditional GET" if the request message includes an
3488 If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. 3488 If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field.
3489 A conditional GET method requests that the entity be transferred only under the circumstances described 3489 A conditional GET method requests that the entity be transferred only under the circumstances described
3490 by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network 3490 by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network
3491 usage by allowing cached entities to be refreshed without requiring multiple requests or transferring 3491 usage by allowing cached entities to be refreshed without requiring multiple requests or transferring
3492 data already held by the client. 3492 data already held by the client.
3493 </para> 3493 </para>
3494 </remarks> 3494 </remarks>
3495 </member> 3495 </member>
3496 <member name="F:HttpServer.Methods.Header"> 3496 <member name="F:HttpServer.Methods.Header">
3497 <summary> 3497 <summary>
3498 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. 3498 The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
3499 </summary> 3499 </summary>
3500 <remarks> 3500 <remarks>
3501 The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the 3501 The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the
3502 information sent in response to a GET request. This method can be used for obtaining metainformation about 3502 information sent in response to a GET request. This method can be used for obtaining metainformation about
3503 the entity implied by the request without transferring the entity-body itself. 3503 the entity implied by the request without transferring the entity-body itself.
3504 3504
3505 This method is often used for testing hypertext links for validity, accessibility, and recent modification. 3505 This method is often used for testing hypertext links for validity, accessibility, and recent modification.
3506 </remarks> 3506 </remarks>
3507 </member> 3507 </member>
3508 <member name="F:HttpServer.Methods.Options"> 3508 <member name="F:HttpServer.Methods.Options">
3509 <summary> 3509 <summary>
3510 <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para> 3510 <para>The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI.</para>
3511 </summary> 3511 </summary>
3512 <remarks> 3512 <remarks>
3513 <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para> 3513 <para>This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.</para>
3514 </remarks> 3514 </remarks>
3515 </member> 3515 </member>
3516 <member name="F:HttpServer.Methods.Post"> 3516 <member name="F:HttpServer.Methods.Post">
3517 <summary> 3517 <summary>
3518 The POST method is used to request that the origin server accept the entity enclosed 3518 The POST method is used to request that the origin server accept the entity enclosed
3519 in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. 3519 in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
3520 </summary> 3520 </summary>
3521 <remarks> 3521 <remarks>
3522 POST is designed to allow a uniform method to cover the following functions: 3522 POST is designed to allow a uniform method to cover the following functions:
3523 <list type="bullet"> 3523 <list type="bullet">
3524 <item> 3524 <item>
3525 Annotation of existing resources; 3525 Annotation of existing resources;
3526 </item><item> 3526 </item><item>
3527 Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; 3527 Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
3528 </item><item> 3528 </item><item>
3529 Providing a block of data, such as the result of submitting a form, to a data-handling process; 3529 Providing a block of data, such as the result of submitting a form, to a data-handling process;
3530 </item><item> 3530 </item><item>
3531 Extending a database through an append operation. 3531 Extending a database through an append operation.
3532 </item> 3532 </item>
3533 </list> 3533 </list>
3534 <para> 3534 <para>
3535 If a resource has been created on the origin server, the response SHOULD be 201 (Created) and 3535 If a resource has been created on the origin server, the response SHOULD be 201 (Created) and
3536 contain an entity which describes the status of the request and refers to the new resource, and a 3536 contain an entity which describes the status of the request and refers to the new resource, and a
3537 Location header (see section 14.30). 3537 Location header (see section 14.30).
3538 </para> 3538 </para>
3539 <para> 3539 <para>
3540 The action performed by the POST method might not result in a resource that can be identified by a URI. 3540 The action performed by the POST method might not result in a resource that can be identified by a URI.
3541 In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on 3541 In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on
3542 whether or not the response includes an entity that describes the result. 3542 whether or not the response includes an entity that describes the result.
3543 </para><para> 3543 </para><para>
3544 Responses to this method are not cacheable, unless the response includes appropriate Cache-Control 3544 Responses to this method are not cacheable, unless the response includes appropriate Cache-Control
3545 or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent 3545 or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent
3546 to retrieve a cacheable resource. 3546 to retrieve a cacheable resource.
3547 </para> 3547 </para>
3548 </remarks> 3548 </remarks>
3549 </member> 3549 </member>
3550 <member name="F:HttpServer.Methods.Put"> 3550 <member name="F:HttpServer.Methods.Put">
3551 <summary> 3551 <summary>
3552 The PUT method requests that the enclosed entity be stored under the supplied Request-URI. 3552 The PUT method requests that the enclosed entity be stored under the supplied Request-URI.
3553 </summary> 3553 </summary>
3554 <remarks> 3554 <remarks>
3555 <list type="bullet"> 3555 <list type="bullet">
3556 <item> 3556 <item>
3557 If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a 3557 If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a
3558 modified version of the one residing on the origin server. 3558 modified version of the one residing on the origin server.
3559 </item><item> 3559 </item><item>
3560 If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new 3560 If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new
3561 resource by the requesting user agent, the origin server can create the resource with that URI. 3561 resource by the requesting user agent, the origin server can create the resource with that URI.
3562 </item><item> 3562 </item><item>
3563 If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. 3563 If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response.
3564 </item><item> 3564 </item><item>
3565 If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to 3565 If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to
3566 indicate successful completion of the request. 3566 indicate successful completion of the request.
3567 </item><item> 3567 </item><item>
3568 If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be 3568 If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be
3569 given that reflects the nature of the problem. 3569 given that reflects the nature of the problem.
3570 </item> 3570 </item>
3571 </list> 3571 </list>
3572 <para> 3572 <para>
3573 The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not 3573 The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not
3574 understand or implement and MUST return a 501 (Not Implemented) response in such cases. 3574 understand or implement and MUST return a 501 (Not Implemented) response in such cases.
3575 </para> 3575 </para>
3576 </remarks> 3576 </remarks>
3577 </member> 3577 </member>
3578 <member name="F:HttpServer.Methods.Trace"> 3578 <member name="F:HttpServer.Methods.Trace">
3579 <summary> 3579 <summary>
3580 The TRACE method is used to invoke a remote, application-layer loop- back of the request message. 3580 The TRACE method is used to invoke a remote, application-layer loop- back of the request message.
3581 </summary> 3581 </summary>
3582 </member> 3582 </member>
3583 <member name="T:HttpServer.IHttpRequest"> 3583 <member name="T:HttpServer.IHttpRequest">
3584 <summary> 3584 <summary>
3585 Contains serverside http request information. 3585 Contains serverside http request information.
3586 </summary> 3586 </summary>
3587 </member> 3587 </member>
3588 <member name="M:HttpServer.IHttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)"> 3588 <member name="M:HttpServer.IHttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)">
3589 <summary> 3589 <summary>
3590 Decode body into a form. 3590 Decode body into a form.
3591 </summary> 3591 </summary>
3592 <param name="providers">A list with form decoders.</param> 3592 <param name="providers">A list with form decoders.</param>
3593 <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception> 3593 <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception>
3594 <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception> 3594 <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception>
3595 </member> 3595 </member>
3596 <member name="M:HttpServer.IHttpRequest.SetCookies(HttpServer.RequestCookies)"> 3596 <member name="M:HttpServer.IHttpRequest.SetCookies(HttpServer.RequestCookies)">
3597 <summary> 3597 <summary>
3598 Sets the cookies. 3598 Sets the cookies.
3599 </summary> 3599 </summary>
3600 <param name="cookies">The cookies.</param> 3600 <param name="cookies">The cookies.</param>
3601 </member> 3601 </member>
3602 <member name="M:HttpServer.IHttpRequest.AddHeader(System.String,System.String)"> 3602 <member name="M:HttpServer.IHttpRequest.AddHeader(System.String,System.String)">
3603 <summary> 3603 <summary>
3604 Called during parsing of a IHttpRequest. 3604 Called during parsing of a IHttpRequest.
3605 </summary> 3605 </summary>
3606 <param name="name">Name of the header, should not be url encoded</param> 3606 <param name="name">Name of the header, should not be url encoded</param>
3607 <param name="value">Value of the header, should not be url encoded</param> 3607 <param name="value">Value of the header, should not be url encoded</param>
3608 <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception> 3608 <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception>
3609 </member> 3609 </member>
3610 <member name="M:HttpServer.IHttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)"> 3610 <member name="M:HttpServer.IHttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)">
3611 <summary> 3611 <summary>
3612 Add bytes to the body 3612 Add bytes to the body
3613 </summary> 3613 </summary>
3614 <param name="bytes">buffer to read bytes from</param> 3614 <param name="bytes">buffer to read bytes from</param>
3615 <param name="offset">where to start read</param> 3615 <param name="offset">where to start read</param>
3616 <param name="length">number of bytes to read</param> 3616 <param name="length">number of bytes to read</param>
3617 <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns> 3617 <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns>
3618 <exception cref="T:System.ArgumentException"></exception> 3618 <exception cref="T:System.ArgumentException"></exception>
3619 <exception cref="T:System.InvalidOperationException">If body is not writable</exception> 3619 <exception cref="T:System.InvalidOperationException">If body is not writable</exception>
3620 </member> 3620 </member>
3621 <member name="M:HttpServer.IHttpRequest.Clear"> 3621 <member name="M:HttpServer.IHttpRequest.Clear">
3622 <summary> 3622 <summary>
3623 Clear everything in the request 3623 Clear everything in the request
3624 </summary> 3624 </summary>
3625 </member> 3625 </member>
3626 <member name="P:HttpServer.IHttpRequest.BodyIsComplete"> 3626 <member name="P:HttpServer.IHttpRequest.BodyIsComplete">
3627 <summary> 3627 <summary>
3628 Have all body content bytes been received? 3628 Have all body content bytes been received?
3629 </summary> 3629 </summary>
3630 </member> 3630 </member>
3631 <member name="P:HttpServer.IHttpRequest.AcceptTypes"> 3631 <member name="P:HttpServer.IHttpRequest.AcceptTypes">
3632 <summary> 3632 <summary>
3633 Kind of types accepted by the client. 3633 Kind of types accepted by the client.
3634 </summary> 3634 </summary>
3635 </member> 3635 </member>
3636 <member name="P:HttpServer.IHttpRequest.Body"> 3636 <member name="P:HttpServer.IHttpRequest.Body">
3637 <summary> 3637 <summary>
3638 Submitted body contents 3638 Submitted body contents
3639 </summary> 3639 </summary>
3640 </member> 3640 </member>
3641 <member name="P:HttpServer.IHttpRequest.Connection"> 3641 <member name="P:HttpServer.IHttpRequest.Connection">
3642 <summary> 3642 <summary>
3643 Kind of connection used for the session. 3643 Kind of connection used for the session.
3644 </summary> 3644 </summary>
3645 </member> 3645 </member>
3646 <member name="P:HttpServer.IHttpRequest.ContentLength"> 3646 <member name="P:HttpServer.IHttpRequest.ContentLength">
3647 <summary> 3647 <summary>
3648 Number of bytes in the body 3648 Number of bytes in the body
3649 </summary> 3649 </summary>
3650 </member> 3650 </member>
3651 <member name="P:HttpServer.IHttpRequest.Headers"> 3651 <member name="P:HttpServer.IHttpRequest.Headers">
3652 <summary> 3652 <summary>
3653 Headers sent by the client. All names are in lower case. 3653 Headers sent by the client. All names are in lower case.
3654 </summary> 3654 </summary>
3655 </member> 3655 </member>
3656 <member name="P:HttpServer.IHttpRequest.HttpVersion"> 3656 <member name="P:HttpServer.IHttpRequest.HttpVersion">
3657 <summary> 3657 <summary>
3658 Version of http. 3658 Version of http.
3659 Probably HttpHelper.HTTP10 or HttpHelper.HTTP11 3659 Probably HttpHelper.HTTP10 or HttpHelper.HTTP11
3660 </summary> 3660 </summary>
3661 <seealso cref="T:HttpServer.HttpHelper"/> 3661 <seealso cref="T:HttpServer.HttpHelper"/>
3662 </member> 3662 </member>
3663 <member name="P:HttpServer.IHttpRequest.Method"> 3663 <member name="P:HttpServer.IHttpRequest.Method">
3664 <summary> 3664 <summary>
3665 Requested method, always upper case. 3665 Requested method, always upper case.
3666 </summary> 3666 </summary>
3667 <see cref="P:HttpServer.IHttpRequest.Method"/> 3667 <see cref="P:HttpServer.IHttpRequest.Method"/>
3668 </member> 3668 </member>
3669 <member name="P:HttpServer.IHttpRequest.QueryString"> 3669 <member name="P:HttpServer.IHttpRequest.QueryString">
3670 <summary> 3670 <summary>
3671 Variables sent in the query string 3671 Variables sent in the query string
3672 </summary> 3672 </summary>
3673 </member> 3673 </member>
3674 <member name="P:HttpServer.IHttpRequest.Uri"> 3674 <member name="P:HttpServer.IHttpRequest.Uri">
3675 <summary> 3675 <summary>
3676 Requested URI (url) 3676 Requested URI (url)
3677 </summary> 3677 </summary>
3678 </member> 3678 </member>
3679 <member name="P:HttpServer.IHttpRequest.UriParts"> 3679 <member name="P:HttpServer.IHttpRequest.UriParts">
3680 <summary> 3680 <summary>
3681 Uri absolute path splitted into parts. 3681 Uri absolute path splitted into parts.
3682 </summary> 3682 </summary>
3683 <example> 3683 <example>
3684 // uri is: http://gauffin.com/code/tiny/ 3684 // uri is: http://gauffin.com/code/tiny/
3685 Console.WriteLine(request.UriParts[0]); // result: code 3685 Console.WriteLine(request.UriParts[0]); // result: code
3686 Console.WriteLine(request.UriParts[1]); // result: tiny 3686 Console.WriteLine(request.UriParts[1]); // result: tiny
3687 </example> 3687 </example>
3688 <remarks> 3688 <remarks>
3689 If you're using controllers than the first part is controller name, 3689 If you're using controllers than the first part is controller name,
3690 the second part is method name and the third part is Id property. 3690 the second part is method name and the third part is Id property.
3691 </remarks> 3691 </remarks>
3692 <seealso cref="P:HttpServer.IHttpRequest.Uri"/> 3692 <seealso cref="P:HttpServer.IHttpRequest.Uri"/>
3693 </member> 3693 </member>
3694 <member name="P:HttpServer.IHttpRequest.Param"> 3694 <member name="P:HttpServer.IHttpRequest.Param">
3695 <summary> 3695 <summary>
3696 Check's both QueryString and Form after the parameter. 3696 Check's both QueryString and Form after the parameter.
3697 </summary> 3697 </summary>
3698 </member> 3698 </member>
3699 <member name="P:HttpServer.IHttpRequest.Form"> 3699 <member name="P:HttpServer.IHttpRequest.Form">
3700 <summary> 3700 <summary>
3701 Form parameters. 3701 Form parameters.
3702 </summary> 3702 </summary>
3703 </member> 3703 </member>
3704 <member name="P:HttpServer.IHttpRequest.IsAjax"> 3704 <member name="P:HttpServer.IHttpRequest.IsAjax">
3705 <summary>Returns true if the request was made by Ajax (Asyncronous Javascript)</summary> 3705 <summary>Returns true if the request was made by Ajax (Asyncronous Javascript)</summary>
3706 </member> 3706 </member>
3707 <member name="P:HttpServer.IHttpRequest.Cookies"> 3707 <member name="P:HttpServer.IHttpRequest.Cookies">
3708 <summary>Returns set cookies for the request</summary> 3708 <summary>Returns set cookies for the request</summary>
3709 </member> 3709 </member>
3710 <member name="T:HttpServer.HttpRequestParser"> 3710 <member name="T:HttpServer.HttpRequestParser">
3711 <summary> 3711 <summary>
3712 Parses a HTTP request directly from a stream 3712 Parses a HTTP request directly from a stream
3713 </summary> 3713 </summary>
3714 </member> 3714 </member>
3715 <member name="M:HttpServer.HttpRequestParser.#ctor(HttpServer.HttpRequestParser.RequestCompletedHandler,HttpServer.ILogWriter)"> 3715 <member name="M:HttpServer.HttpRequestParser.#ctor(HttpServer.HttpRequestParser.RequestCompletedHandler,HttpServer.ILogWriter)">
3716 <summary> 3716 <summary>
3717 Create a new request parser 3717 Create a new request parser
3718 </summary> 3718 </summary>
3719 <param name="requestCompleted">delegate called when a complete request have been generated</param> 3719 <param name="requestCompleted">delegate called when a complete request have been generated</param>
3720 <param name="logWriter">delegate receiving log entries.</param> 3720 <param name="logWriter">delegate receiving log entries.</param>
3721 </member> 3721 </member>
3722 <member name="M:HttpServer.HttpRequestParser.AddToBody(System.Byte[],System.Int32,System.Int32)"> 3722 <member name="M:HttpServer.HttpRequestParser.AddToBody(System.Byte[],System.Int32,System.Int32)">
3723 <summary> 3723 <summary>
3724 Add a number of bytes to the body 3724 Add a number of bytes to the body
3725 </summary> 3725 </summary>
3726 <param name="buffer"></param> 3726 <param name="buffer"></param>
3727 <param name="offset"></param> 3727 <param name="offset"></param>
3728 <param name="count"></param> 3728 <param name="count"></param>
3729 <returns></returns> 3729 <returns></returns>
3730 </member> 3730 </member>
3731 <member name="M:HttpServer.HttpRequestParser.Clear"> 3731 <member name="M:HttpServer.HttpRequestParser.Clear">
3732 <summary> 3732 <summary>
3733 Remove all state information for the request. 3733 Remove all state information for the request.
3734 </summary> 3734 </summary>
3735 </member> 3735 </member>
3736 <member name="M:HttpServer.HttpRequestParser.OnFirstLine(System.String)"> 3736 <member name="M:HttpServer.HttpRequestParser.OnFirstLine(System.String)">
3737 <summary> 3737 <summary>
3738 Parse request line 3738 Parse request line
3739 </summary> 3739 </summary>
3740 <param name="value"></param> 3740 <param name="value"></param>
3741 <exception cref="T:HttpServer.Exceptions.BadRequestException">If line is incorrect</exception> 3741 <exception cref="T:HttpServer.Exceptions.BadRequestException">If line is incorrect</exception>
3742 <remarks>Expects the following format: "Method SP Request-URI SP HTTP-Version CRLF"</remarks> 3742 <remarks>Expects the following format: "Method SP Request-URI SP HTTP-Version CRLF"</remarks>
3743 </member> 3743 </member>
3744 <member name="M:HttpServer.HttpRequestParser.OnHeader(System.String,System.String)"> 3744 <member name="M:HttpServer.HttpRequestParser.OnHeader(System.String,System.String)">
3745 <summary> 3745 <summary>
3746 We've parsed a new header. 3746 We've parsed a new header.
3747 </summary> 3747 </summary>
3748 <param name="name">Name in lower case</param> 3748 <param name="name">Name in lower case</param>
3749 <param name="value">Value, unmodified.</param> 3749 <param name="value">Value, unmodified.</param>
3750 <exception cref="T:HttpServer.Exceptions.BadRequestException">If content length cannot be parsed.</exception> 3750 <exception cref="T:HttpServer.Exceptions.BadRequestException">If content length cannot be parsed.</exception>
3751 </member> 3751 </member>
3752 <member name="M:HttpServer.HttpRequestParser.ParseMessage(System.Byte[],System.Int32,System.Int32)"> 3752 <member name="M:HttpServer.HttpRequestParser.ParseMessage(System.Byte[],System.Int32,System.Int32)">
3753 <summary> 3753 <summary>
3754 Parse a message 3754 Parse a message
3755 </summary> 3755 </summary>
3756 <param name="buffer"></param> 3756 <param name="buffer"></param>
3757 <param name="offset">where in buffer that parsing should start</param> 3757 <param name="offset">where in buffer that parsing should start</param>
3758 <param name="size">number of bytes to parse</param> 3758 <param name="size">number of bytes to parse</param>
3759 <returns>Unparsed bytes left in buffer.</returns> 3759 <returns>Unparsed bytes left in buffer.</returns>
3760 </member> 3760 </member>
3761 <member name="P:HttpServer.HttpRequestParser.CurrentState"> 3761 <member name="P:HttpServer.HttpRequestParser.CurrentState">
3762 <summary> 3762 <summary>
3763 Current state in parser. 3763 Current state in parser.
3764 </summary> 3764 </summary>
3765 </member> 3765 </member>
3766 <member name="T:HttpServer.HttpRequestParser.RequestCompletedHandler"> 3766 <member name="T:HttpServer.HttpRequestParser.RequestCompletedHandler">
3767 <summary> 3767 <summary>
3768 Invoked when a request have been completed. 3768 Invoked when a request have been completed.
3769 </summary> 3769 </summary>
3770 <param name="request"></param> 3770 <param name="request"></param>
3771 </member> 3771 </member>
3772 <member name="T:HttpServer.HttpRequestParser.State"> 3772 <member name="T:HttpServer.HttpRequestParser.State">
3773 <summary> 3773 <summary>
3774 Current state in the parsing. 3774 Current state in the parsing.
3775 </summary> 3775 </summary>
3776 </member> 3776 </member>
3777 <member name="F:HttpServer.HttpRequestParser.State.FirstLine"> 3777 <member name="F:HttpServer.HttpRequestParser.State.FirstLine">
3778 <summary> 3778 <summary>
3779 Should parse the request line 3779 Should parse the request line
3780 </summary> 3780 </summary>
3781 </member> 3781 </member>
3782 <member name="F:HttpServer.HttpRequestParser.State.HeaderName"> 3782 <member name="F:HttpServer.HttpRequestParser.State.HeaderName">
3783 <summary> 3783 <summary>
3784 Searching for a complete header name 3784 Searching for a complete header name
3785 </summary> 3785 </summary>
3786 </member> 3786 </member>
3787 <member name="F:HttpServer.HttpRequestParser.State.AfterName"> 3787 <member name="F:HttpServer.HttpRequestParser.State.AfterName">
3788 <summary> 3788 <summary>
3789 Searching for colon after header name (ignoring white spaces) 3789 Searching for colon after header name (ignoring white spaces)
3790 </summary> 3790 </summary>
3791 </member> 3791 </member>
3792 <member name="F:HttpServer.HttpRequestParser.State.Between"> 3792 <member name="F:HttpServer.HttpRequestParser.State.Between">
3793 <summary> 3793 <summary>
3794 Searching for start of header value (ignoring white spaces) 3794 Searching for start of header value (ignoring white spaces)
3795 </summary> 3795 </summary>
3796 </member> 3796 </member>
3797 <member name="F:HttpServer.HttpRequestParser.State.HeaderValue"> 3797 <member name="F:HttpServer.HttpRequestParser.State.HeaderValue">
3798 <summary> 3798 <summary>
3799 Searching for a complete header value (can span over multiple lines, as long as they are prefixed with one/more whitespaces) 3799 Searching for a complete header value (can span over multiple lines, as long as they are prefixed with one/more whitespaces)
3800 </summary> 3800 </summary>
3801 </member> 3801 </member>
3802 <member name="F:HttpServer.HttpRequestParser.State.Body"> 3802 <member name="F:HttpServer.HttpRequestParser.State.Body">
3803 <summary> 3803 <summary>
3804 Adding bytes to body 3804 Adding bytes to body
3805 </summary> 3805 </summary>
3806 </member> 3806 </member>
3807 <member name="T:HttpServer.HttpRequest"> 3807 <member name="T:HttpServer.HttpRequest">
3808 <summary> 3808 <summary>
3809 Contains serverside http request information. 3809 Contains serverside http request information.
3810 </summary> 3810 </summary>
3811 </member> 3811 </member>
3812 <member name="F:HttpServer.HttpRequest.UriSplitters"> 3812 <member name="F:HttpServer.HttpRequest.UriSplitters">
3813 <summary> 3813 <summary>
3814 Chars used to split an url path into multiple parts. 3814 Chars used to split an url path into multiple parts.
3815 </summary> 3815 </summary>
3816 </member> 3816 </member>
3817 <member name="M:HttpServer.HttpRequest.AssignForm(HttpServer.HttpForm)"> 3817 <member name="M:HttpServer.HttpRequest.AssignForm(HttpServer.HttpForm)">
3818 <summary> 3818 <summary>
3819 Assign a form. 3819 Assign a form.
3820 </summary> 3820 </summary>
3821 <param name="form"></param> 3821 <param name="form"></param>
3822 </member> 3822 </member>
3823 <member name="M:HttpServer.HttpRequest.Clone"> 3823 <member name="M:HttpServer.HttpRequest.Clone">
3824 <summary> 3824 <summary>
3825 Creates a new object that is a copy of the current instance. 3825 Creates a new object that is a copy of the current instance.
3826 </summary> 3826 </summary>
3827 3827
3828 <returns> 3828 <returns>
3829 A new object that is a copy of this instance. 3829 A new object that is a copy of this instance.
3830 </returns> 3830 </returns>
3831 <filterpriority>2</filterpriority> 3831 <filterpriority>2</filterpriority>
3832 </member> 3832 </member>
3833 <member name="M:HttpServer.HttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)"> 3833 <member name="M:HttpServer.HttpRequest.DecodeBody(HttpServer.FormDecoders.FormDecoderProvider)">
3834 <summary> 3834 <summary>
3835 Decode body into a form. 3835 Decode body into a form.
3836 </summary> 3836 </summary>
3837 <param name="providers">A list with form decoders.</param> 3837 <param name="providers">A list with form decoders.</param>
3838 <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception> 3838 <exception cref="T:System.IO.InvalidDataException">If body contents is not valid for the chosen decoder.</exception>
3839 <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception> 3839 <exception cref="T:System.InvalidOperationException">If body is still being transferred.</exception>
3840 </member> 3840 </member>
3841 <member name="M:HttpServer.HttpRequest.SetCookies(HttpServer.RequestCookies)"> 3841 <member name="M:HttpServer.HttpRequest.SetCookies(HttpServer.RequestCookies)">
3842 <summary> 3842 <summary>
3843 Cookies 3843 Cookies
3844 </summary> 3844 </summary>
3845 <param name="cookies">the cookies</param> 3845 <param name="cookies">the cookies</param>
3846 </member> 3846 </member>
3847 <member name="M:HttpServer.HttpRequest.AddHeader(System.String,System.String)"> 3847 <member name="M:HttpServer.HttpRequest.AddHeader(System.String,System.String)">
3848 <summary> 3848 <summary>
3849 Called during parsing of a IHttpRequest. 3849 Called during parsing of a IHttpRequest.
3850 </summary> 3850 </summary>
3851 <param name="name">Name of the header, should not be url encoded</param> 3851 <param name="name">Name of the header, should not be url encoded</param>
3852 <param name="value">Value of the header, should not be url encoded</param> 3852 <param name="value">Value of the header, should not be url encoded</param>
3853 <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception> 3853 <exception cref="T:HttpServer.Exceptions.BadRequestException">If a header is incorrect.</exception>
3854 </member> 3854 </member>
3855 <member name="M:HttpServer.HttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)"> 3855 <member name="M:HttpServer.HttpRequest.AddToBody(System.Byte[],System.Int32,System.Int32)">
3856 <summary> 3856 <summary>
3857 Add bytes to the body 3857 Add bytes to the body
3858 </summary> 3858 </summary>
3859 <param name="bytes">buffer to read bytes from</param> 3859 <param name="bytes">buffer to read bytes from</param>
3860 <param name="offset">where to start read</param> 3860 <param name="offset">where to start read</param>
3861 <param name="length">number of bytes to read</param> 3861 <param name="length">number of bytes to read</param>
3862 <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns> 3862 <returns>Number of bytes actually read (same as length unless we got all body bytes).</returns>
3863 <exception cref="T:System.ArgumentException"></exception> 3863 <exception cref="T:System.ArgumentException"></exception>
3864 <exception cref="T:System.InvalidOperationException">If body is not writable</exception> 3864 <exception cref="T:System.InvalidOperationException">If body is not writable</exception>
3865 </member> 3865 </member>
3866 <member name="M:HttpServer.HttpRequest.Clear"> 3866 <member name="M:HttpServer.HttpRequest.Clear">
3867 <summary> 3867 <summary>
3868 Clear everything in the request 3868 Clear everything in the request
3869 </summary> 3869 </summary>
3870 </member> 3870 </member>
3871 <member name="P:HttpServer.HttpRequest.BodyIsComplete"> 3871 <member name="P:HttpServer.HttpRequest.BodyIsComplete">
3872 <summary> 3872 <summary>
3873 Have all body content bytes been received? 3873 Have all body content bytes been received?
3874 </summary> 3874 </summary>
3875 </member> 3875 </member>
3876 <member name="P:HttpServer.HttpRequest.AcceptTypes"> 3876 <member name="P:HttpServer.HttpRequest.AcceptTypes">
3877 <summary> 3877 <summary>
3878 Kind of types accepted by the client. 3878 Kind of types accepted by the client.
3879 </summary> 3879 </summary>
3880 </member> 3880 </member>
3881 <member name="P:HttpServer.HttpRequest.Body"> 3881 <member name="P:HttpServer.HttpRequest.Body">
3882 <summary> 3882 <summary>
3883 Submitted body contents 3883 Submitted body contents
3884 </summary> 3884 </summary>
3885 </member> 3885 </member>
3886 <member name="P:HttpServer.HttpRequest.Connection"> 3886 <member name="P:HttpServer.HttpRequest.Connection">
3887 <summary> 3887 <summary>
3888 Kind of connection used for the session. 3888 Kind of connection used for the session.
3889 </summary> 3889 </summary>
3890 </member> 3890 </member>
3891 <member name="P:HttpServer.HttpRequest.ContentLength"> 3891 <member name="P:HttpServer.HttpRequest.ContentLength">
3892 <summary> 3892 <summary>
3893 Number of bytes in the body 3893 Number of bytes in the body
3894 </summary> 3894 </summary>
3895 </member> 3895 </member>
3896 <member name="P:HttpServer.HttpRequest.Headers"> 3896 <member name="P:HttpServer.HttpRequest.Headers">
3897 <summary> 3897 <summary>
3898 Headers sent by the client. All names are in lower case. 3898 Headers sent by the client. All names are in lower case.
3899 </summary> 3899 </summary>
3900 </member> 3900 </member>
3901 <member name="P:HttpServer.HttpRequest.HttpVersion"> 3901 <member name="P:HttpServer.HttpRequest.HttpVersion">
3902 <summary> 3902 <summary>
3903 Version of http. 3903 Version of http.
3904 Probably HttpHelper.HTTP10 or HttpHelper.HTTP11 3904 Probably HttpHelper.HTTP10 or HttpHelper.HTTP11
3905 </summary> 3905 </summary>
3906 <seealso cref="T:HttpServer.HttpHelper"/> 3906 <seealso cref="T:HttpServer.HttpHelper"/>
3907 </member> 3907 </member>
3908 <member name="P:HttpServer.HttpRequest.Method"> 3908 <member name="P:HttpServer.HttpRequest.Method">
3909 <summary> 3909 <summary>
3910 Requested method, always upper case. 3910 Requested method, always upper case.
3911 </summary> 3911 </summary>
3912 <see cref="P:HttpServer.HttpRequest.Method"/> 3912 <see cref="P:HttpServer.HttpRequest.Method"/>
3913 </member> 3913 </member>
3914 <member name="P:HttpServer.HttpRequest.QueryString"> 3914 <member name="P:HttpServer.HttpRequest.QueryString">
3915 <summary> 3915 <summary>
3916 Variables sent in the query string 3916 Variables sent in the query string
3917 </summary> 3917 </summary>
3918 </member> 3918 </member>
3919 <member name="P:HttpServer.HttpRequest.Uri"> 3919 <member name="P:HttpServer.HttpRequest.Uri">
3920 <summary> 3920 <summary>
3921 Requested URI (url) 3921 Requested URI (url)
3922 </summary> 3922 </summary>
3923 <seealso cref="P:HttpServer.HttpRequest.UriPath"/> 3923 <seealso cref="P:HttpServer.HttpRequest.UriPath"/>
3924 </member> 3924 </member>
3925 <member name="P:HttpServer.HttpRequest.UriParts"> 3925 <member name="P:HttpServer.HttpRequest.UriParts">
3926 <summary> 3926 <summary>
3927 Uri absolute path splitted into parts. 3927 Uri absolute path splitted into parts.
3928 </summary> 3928 </summary>
3929 <example> 3929 <example>
3930 // uri is: http://gauffin.com/code/tiny/ 3930 // uri is: http://gauffin.com/code/tiny/
3931 Console.WriteLine(request.UriParts[0]); // result: code 3931 Console.WriteLine(request.UriParts[0]); // result: code
3932 Console.WriteLine(request.UriParts[1]); // result: tiny 3932 Console.WriteLine(request.UriParts[1]); // result: tiny
3933 </example> 3933 </example>
3934 <remarks> 3934 <remarks>
3935 If you're using controllers than the first part is controller name, 3935 If you're using controllers than the first part is controller name,
3936 the second part is method name and the third part is Id property. 3936 the second part is method name and the third part is Id property.
3937 </remarks> 3937 </remarks>
3938 <seealso cref="P:HttpServer.HttpRequest.Uri"/> 3938 <seealso cref="P:HttpServer.HttpRequest.Uri"/>
3939 </member> 3939 </member>
3940 <member name="P:HttpServer.HttpRequest.UriPath"> 3940 <member name="P:HttpServer.HttpRequest.UriPath">
3941 <summary> 3941 <summary>
3942 Path and query (will be merged with the host header) and put in Uri 3942 Path and query (will be merged with the host header) and put in Uri
3943 </summary> 3943 </summary>
3944 <see cref="P:HttpServer.HttpRequest.Uri"/> 3944 <see cref="P:HttpServer.HttpRequest.Uri"/>
3945 </member> 3945 </member>
3946 <member name="P:HttpServer.HttpRequest.Param"> 3946 <member name="P:HttpServer.HttpRequest.Param">
3947 <summary> 3947 <summary>
3948 Check's both QueryString and Form after the parameter. 3948 Check's both QueryString and Form after the parameter.
3949 </summary> 3949 </summary>
3950 </member> 3950 </member>
3951 <member name="P:HttpServer.HttpRequest.Form"> 3951 <member name="P:HttpServer.HttpRequest.Form">
3952 <summary> 3952 <summary>
3953 Form parameters. 3953 Form parameters.
3954 </summary> 3954 </summary>
3955 </member> 3955 </member>
3956 <member name="P:HttpServer.HttpRequest.IsAjax"> 3956 <member name="P:HttpServer.HttpRequest.IsAjax">
3957 <summary>Returns true if the request was made by Ajax (Asyncronous Javascript)</summary> 3957 <summary>Returns true if the request was made by Ajax (Asyncronous Javascript)</summary>
3958 </member> 3958 </member>
3959 <member name="P:HttpServer.HttpRequest.Cookies"> 3959 <member name="P:HttpServer.HttpRequest.Cookies">
3960 <summary>Returns set cookies for the request</summary> 3960 <summary>Returns set cookies for the request</summary>
3961 </member> 3961 </member>
3962 <member name="P:HttpServer.HttpRequest.Secure"> 3962 <member name="P:HttpServer.HttpRequest.Secure">
3963 <summary> 3963 <summary>
3964 Current request is sent over secure protocol 3964 Current request is sent over secure protocol
3965 </summary> 3965 </summary>
3966 </member> 3966 </member>
3967 <member name="T:HttpServer.HttpModules.WebSiteModule"> 3967 <member name="T:HttpServer.HttpModules.WebSiteModule">
3968 <summary> 3968 <summary>
3969 The website module let's you handle multiple websites in the same server. 3969 The website module let's you handle multiple websites in the same server.
3970 It uses the "Host" header to check which site you want. 3970 It uses the "Host" header to check which site you want.
3971 </summary> 3971 </summary>
3972 <remarks>It's recommended that you do not 3972 <remarks>It's recommended that you do not
3973 add any other modules to HttpServer if you are using the website module. Instead, 3973 add any other modules to HttpServer if you are using the website module. Instead,
3974 add all wanted modules to each website.</remarks> 3974 add all wanted modules to each website.</remarks>
3975 </member> 3975 </member>
3976 <member name="M:HttpServer.HttpModules.WebSiteModule.#ctor(System.String,System.String)"> 3976 <member name="M:HttpServer.HttpModules.WebSiteModule.#ctor(System.String,System.String)">
3977 <summary> 3977 <summary>
3978 3978
3979 </summary> 3979 </summary>
3980 <param name="host">domain name that should be handled.</param> 3980 <param name="host">domain name that should be handled.</param>
3981 <param name="name"></param> 3981 <param name="name"></param>
3982 </member> 3982 </member>
3983 <member name="M:HttpServer.HttpModules.WebSiteModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 3983 <member name="M:HttpServer.HttpModules.WebSiteModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
3984 <summary> 3984 <summary>
3985 Method that process the url 3985 Method that process the url
3986 </summary> 3986 </summary>
3987 <param name="request">Information sent by the browser about the request</param> 3987 <param name="request">Information sent by the browser about the request</param>
3988 <param name="response">Information that is being sent back to the client.</param> 3988 <param name="response">Information that is being sent back to the client.</param>
3989 <param name="session">Session used to </param> 3989 <param name="session">Session used to </param>
3990 </member> 3990 </member>
3991 <member name="P:HttpServer.HttpModules.WebSiteModule.SiteName"> 3991 <member name="P:HttpServer.HttpModules.WebSiteModule.SiteName">
3992 <summary> 3992 <summary>
3993 Name of site. 3993 Name of site.
3994 </summary> 3994 </summary>
3995 </member> 3995 </member>
3996 <member name="T:HttpServer.Helpers.FormHelper"> 3996 <member name="T:HttpServer.Helpers.FormHelper">
3997 <summary> 3997 <summary>
3998 Helpers making it easier to work with forms. 3998 Helpers making it easier to work with forms.
3999 </summary> 3999 </summary>
4000 <seealso cref="T:HttpServer.Helpers.ObjectForm"/> 4000 <seealso cref="T:HttpServer.Helpers.ObjectForm"/>
4001 </member> 4001 </member>
4002 <member name="F:HttpServer.Helpers.FormHelper.JSImplementation"> 4002 <member name="F:HttpServer.Helpers.FormHelper.JSImplementation">
4003 <summary> 4003 <summary>
4004 Used to let the website use different javascript libraries. 4004 Used to let the website use different javascript libraries.
4005 Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/> 4005 Default is <see cref="T:HttpServer.Helpers.Implementations.PrototypeImp"/>
4006 </summary> 4006 </summary>
4007 </member> 4007 </member>
4008 <member name="M:HttpServer.Helpers.FormHelper.Start(System.String,System.String,System.Boolean,System.String[])"> 4008 <member name="M:HttpServer.Helpers.FormHelper.Start(System.String,System.String,System.Boolean,System.String[])">
4009 <summary> 4009 <summary>
4010 Create a &lt;form&gt; tag. 4010 Create a &lt;form&gt; tag.
4011 </summary> 4011 </summary>
4012 <param name="name">name of form</param> 4012 <param name="name">name of form</param>
4013 <param name="action">action to invoke on submit</param> 4013 <param name="action">action to invoke on submit</param>
4014 <param name="isAjax">form should be posted as ajax</param> 4014 <param name="isAjax">form should be posted as ajax</param>
4015 <returns>html code</returns> 4015 <returns>html code</returns>
4016 <example> 4016 <example>
4017 <code> 4017 <code>
4018 // without options 4018 // without options
4019 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax); 4019 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax);
4020 4020
4021 // with options 4021 // with options
4022 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax, "style", "display:inline", "class", "greenForm"); 4022 WebHelper.FormStart("frmLogin", "/user/login", Request.IsAjax, "style", "display:inline", "class", "greenForm");
4023 </code> 4023 </code>
4024 </example> 4024 </example>
4025 <param name="options">html attributes or javscript options.</param> 4025 <param name="options">html attributes or javscript options.</param>
4026 <remarks>Method will ALWAYS be POST.</remarks> 4026 <remarks>Method will ALWAYS be POST.</remarks>
4027 </member> 4027 </member>
4028 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"> 4028 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
4029 <summary> 4029 <summary>
4030 Creates a select list with the values in a collection. 4030 Creates a select list with the values in a collection.
4031 </summary> 4031 </summary>
4032 <param name="name">Name of the SELECT-tag</param> 4032 <param name="name">Name of the SELECT-tag</param>
4033 <param name="collection">collection used to generate options.</param> 4033 <param name="collection">collection used to generate options.</param>
4034 <param name="getIdTitle">delegate used to return id and title from objects.</param> 4034 <param name="getIdTitle">delegate used to return id and title from objects.</param>
4035 <param name="selectedValue">value that should be marked as selected.</param> 4035 <param name="selectedValue">value that should be marked as selected.</param>
4036 <param name="firstEmpty">First row should contain an empty value.</param> 4036 <param name="firstEmpty">First row should contain an empty value.</param>
4037 <returns>string containtain a SELECT-tag.</returns> 4037 <returns>string containtain a SELECT-tag.</returns>
4038 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/> 4038 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
4039 </member> 4039 </member>
4040 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"> 4040 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
4041 <summary> 4041 <summary>
4042 Creates a select list with the values in a collection. 4042 Creates a select list with the values in a collection.
4043 </summary> 4043 </summary>
4044 <param name="name">Name of the SELECT-tag</param> 4044 <param name="name">Name of the SELECT-tag</param>
4045 <param name="id">Id of the SELECT-tag</param> 4045 <param name="id">Id of the SELECT-tag</param>
4046 <param name="collection">collection used to generate options.</param> 4046 <param name="collection">collection used to generate options.</param>
4047 <param name="getIdTitle">delegate used to return id and title from objects.</param> 4047 <param name="getIdTitle">delegate used to return id and title from objects.</param>
4048 <param name="selectedValue">value that should be marked as selected.</param> 4048 <param name="selectedValue">value that should be marked as selected.</param>
4049 <param name="firstEmpty">First row should contain an empty value.</param> 4049 <param name="firstEmpty">First row should contain an empty value.</param>
4050 <returns>string containtain a SELECT-tag.</returns> 4050 <returns>string containtain a SELECT-tag.</returns>
4051 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/> 4051 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
4052 <example> 4052 <example>
4053 <code> 4053 <code>
4054 // Class that is going to be used in a SELECT-tag. 4054 // Class that is going to be used in a SELECT-tag.
4055 public class User 4055 public class User
4056 { 4056 {
4057 private readonly string _realName; 4057 private readonly string _realName;
4058 private readonly int _id; 4058 private readonly int _id;
4059 public User(int id, string realName) 4059 public User(int id, string realName)
4060 { 4060 {
4061 _id = id; 4061 _id = id;
4062 _realName = realName; 4062 _realName = realName;
4063 } 4063 }
4064 public string RealName 4064 public string RealName
4065 { 4065 {
4066 get { return _realName; } 4066 get { return _realName; }
4067 } 4067 }
4068 4068
4069 public int Id 4069 public int Id
4070 { 4070 {
4071 get { return _id; } 4071 get { return _id; }
4072 } 4072 }
4073 } 4073 }
4074 4074
4075 // Using an inline delegate to generate the select list 4075 // Using an inline delegate to generate the select list
4076 public void UserInlineDelegate() 4076 public void UserInlineDelegate()
4077 { 4077 {
4078 List&lt;User&gt; items = new List&lt;User&gt;(); 4078 List&lt;User&gt; items = new List&lt;User&gt;();
4079 items.Add(new User(1, "adam")); 4079 items.Add(new User(1, "adam"));
4080 items.Add(new User(2, "bertial")); 4080 items.Add(new User(2, "bertial"));
4081 items.Add(new User(3, "david")); 4081 items.Add(new User(3, "david"));
4082 string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value) 4082 string htmlSelect = Select("users", "users", items, delegate(object o, out object id, out object value)
4083 { 4083 {
4084 User user = (User)o; 4084 User user = (User)o;
4085 id = user.Id; 4085 id = user.Id;
4086 value = user.RealName; 4086 value = user.RealName;
4087 }, 2, true); 4087 }, 2, true);
4088 } 4088 }
4089 4089
4090 // Using an method as delegate to generate the select list. 4090 // Using an method as delegate to generate the select list.
4091 public void UseExternalDelegate() 4091 public void UseExternalDelegate()
4092 { 4092 {
4093 List&lt;User&gt; items = new List&lt;User&gt;(); 4093 List&lt;User&gt; items = new List&lt;User&gt;();
4094 items.Add(new User(1, "adam")); 4094 items.Add(new User(1, "adam"));
4095 items.Add(new User(2, "bertial")); 4095 items.Add(new User(2, "bertial"));
4096 items.Add(new User(3, "david")); 4096 items.Add(new User(3, "david"));
4097 string htmlSelect = Select("users", "users", items, UserOptions, 1, true); 4097 string htmlSelect = Select("users", "users", items, UserOptions, 1, true);
4098 } 4098 }
4099 4099
4100 // delegate returning id and title 4100 // delegate returning id and title
4101 public static void UserOptions(object o, out object id, out object title) 4101 public static void UserOptions(object o, out object id, out object title)
4102 { 4102 {
4103 User user = (User)o; 4103 User user = (User)o;
4104 id = user.Id; 4104 id = user.Id;
4105 value = user.RealName; 4105 value = user.RealName;
4106 } 4106 }
4107 </code> 4107 </code>
4108 </example> 4108 </example>
4109 </member> 4109 </member>
4110 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean,System.String[])"> 4110 <member name="M:HttpServer.Helpers.FormHelper.Select(System.String,System.String,System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean,System.String[])">
4111 <summary> 4111 <summary>
4112 Creates a select list with the values in a collection. 4112 Creates a select list with the values in a collection.
4113 </summary> 4113 </summary>
4114 <param name="name">Name of the SELECT-tag</param> 4114 <param name="name">Name of the SELECT-tag</param>
4115 <param name="id">Id of the SELECT-tag</param> 4115 <param name="id">Id of the SELECT-tag</param>
4116 <param name="collection">collection used to generate options.</param> 4116 <param name="collection">collection used to generate options.</param>
4117 <param name="getIdTitle">delegate used to return id and title from objects.</param> 4117 <param name="getIdTitle">delegate used to return id and title from objects.</param>
4118 <param name="selectedValue">value that should be marked as selected.</param> 4118 <param name="selectedValue">value that should be marked as selected.</param>
4119 <param name="firstEmpty">First row should contain an empty value.</param> 4119 <param name="firstEmpty">First row should contain an empty value.</param>
4120 <param name="htmlAttributes">name, value collection of extra html attributes.</param> 4120 <param name="htmlAttributes">name, value collection of extra html attributes.</param>
4121 <returns>string containtain a SELECT-tag.</returns> 4121 <returns>string containtain a SELECT-tag.</returns>
4122 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/> 4122 <seealso cref="T:HttpServer.Helpers.GetIdTitle"/>
4123 </member> 4123 </member>
4124 <member name="M:HttpServer.Helpers.FormHelper.Options(System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)"> 4124 <member name="M:HttpServer.Helpers.FormHelper.Options(System.Collections.IEnumerable,HttpServer.Helpers.GetIdTitle,System.Object,System.Boolean)">
4125 <summary> 4125 <summary>
4126 Generate a list of HTML options 4126 Generate a list of HTML options
4127 </summary> 4127 </summary>
4128 <param name="collection">collection used to generate options.</param> 4128 <param name="collection">collection used to generate options.</param>
4129 <param name="getIdTitle">delegate used to return id and title from objects.</param> 4129 <param name="getIdTitle">delegate used to return id and title from objects.</param>
4130 <param name="selectedValue">value that should be marked as selected.</param> 4130 <param name="selectedValue">value that should be marked as selected.</param>
4131 <param name="firstEmpty">First row should contain an empty value.</param> 4131 <param name="firstEmpty">First row should contain an empty value.</param>
4132 <returns></returns> 4132 <returns></returns>
4133 </member> 4133 </member>
4134 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.Object,System.Object,System.String[])"> 4134 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.Object,System.Object,System.String[])">
4135 <summary> 4135 <summary>
4136 Creates a checkbox. 4136 Creates a checkbox.
4137 </summary> 4137 </summary>
4138 <param name="name">element name</param> 4138 <param name="name">element name</param>
4139 <param name="value">element value</param> 4139 <param name="value">element value</param>
4140 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the 4140 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the
4141 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if 4141 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if
4142 the box is checked or not. </param> 4142 the box is checked or not. </param>
4143 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param> 4143 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
4144 <returns>a generated radio button</returns> 4144 <returns>a generated radio button</returns>
4145 </member> 4145 </member>
4146 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.Object,System.String[])"> 4146 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.Object,System.String[])">
4147 <summary> 4147 <summary>
4148 Creates a checkbox. 4148 Creates a checkbox.
4149 </summary> 4149 </summary>
4150 <param name="name">element name</param> 4150 <param name="name">element name</param>
4151 <param name="id">element id</param> 4151 <param name="id">element id</param>
4152 <param name="value">element value</param> 4152 <param name="value">element value</param>
4153 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the 4153 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the
4154 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if 4154 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if
4155 the box is checked or not. </param> 4155 the box is checked or not. </param>
4156 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param> 4156 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
4157 <returns>a generated radio button</returns> 4157 <returns>a generated radio button</returns>
4158 <remarks> 4158 <remarks>
4159 value in your business object. (check box will be selected if it matches the element value) 4159 value in your business object. (check box will be selected if it matches the element value)
4160 </remarks> 4160 </remarks>
4161 </member> 4161 </member>
4162 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.String[])"> 4162 <member name="M:HttpServer.Helpers.FormHelper.CheckBox(System.String,System.String,System.Object,System.String[])">
4163 <summary> 4163 <summary>
4164 Creates a checkbox. 4164 Creates a checkbox.
4165 </summary> 4165 </summary>
4166 <param name="name">element name</param> 4166 <param name="name">element name</param>
4167 <param name="id">element id</param> 4167 <param name="id">element id</param>
4168 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the 4168 <param name="isChecked">determines if the check box is selected or not. This is done diffrently depending on the
4169 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if 4169 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if
4170 the box is checked or not. </param> 4170 the box is checked or not. </param>
4171 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param> 4171 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
4172 <returns>a generated radio button</returns> 4172 <returns>a generated radio button</returns>
4173 <remarks>will set value to "1".</remarks> 4173 <remarks>will set value to "1".</remarks>
4174 </member> 4174 </member>
4175 <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.Object,System.Object,System.String[])"> 4175 <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.Object,System.Object,System.String[])">
4176 <summary> 4176 <summary>
4177 Creates a RadioButton. 4177 Creates a RadioButton.
4178 </summary> 4178 </summary>
4179 <param name="name">element name</param> 4179 <param name="name">element name</param>
4180 <param name="value">element value</param> 4180 <param name="value">element value</param>
4181 <param name="isSelected">determines if the radio button is selected or not. This is done diffrently depending on the 4181 <param name="isSelected">determines if the radio button is selected or not. This is done diffrently depending on the
4182 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if 4182 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if
4183 the box is checked or not. </param> 4183 the box is checked or not. </param>
4184 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param> 4184 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
4185 <returns>a generated radio button</returns> 4185 <returns>a generated radio button</returns>
4186 </member> 4186 </member>
4187 <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.String,System.Object,System.Object,System.String[])"> 4187 <member name="M:HttpServer.Helpers.FormHelper.RadioButton(System.String,System.String,System.Object,System.Object,System.String[])">
4188 <summary> 4188 <summary>
4189 Creates a RadioButton. 4189 Creates a RadioButton.
4190 </summary> 4190 </summary>
4191 <param name="name">element name</param> 4191 <param name="name">element name</param>
4192 <param name="id">element id</param> 4192 <param name="id">element id</param>
4193 <param name="value">element value</param> 4193 <param name="value">element value</param>
4194 <param name="isSelected">determines if the radio button is selected or not. This is done diffrently depending on the 4194 <param name="isSelected">determines if the radio button is selected or not. This is done diffrently depending on the
4195 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if 4195 type of variable. A bool simply trigges checked or not, all other types are compared with "value" to determine if
4196 the box is checked or not. </param> 4196 the box is checked or not. </param>
4197 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param> 4197 <param name="htmlAttributes">a list with additional attributes (name, value, name, value).</param>
4198 <returns>a generated radio button</returns> 4198 <returns>a generated radio button</returns>
4199 </member> 4199 </member>
4200 <member name="M:HttpServer.Helpers.FormHelper.End"> 4200 <member name="M:HttpServer.Helpers.FormHelper.End">
4201 <summary> 4201 <summary>
4202 form close tag 4202 form close tag
4203 </summary> 4203 </summary>
4204 <returns></returns> 4204 <returns></returns>
4205 </member> 4205 </member>
4206 <member name="T:HttpServer.Exceptions.BadRequestException"> 4206 <member name="T:HttpServer.Exceptions.BadRequestException">
4207 <summary> 4207 <summary>
4208 The request could not be understood by the server due to malformed syntax. 4208 The request could not be understood by the server due to malformed syntax.
4209 The client SHOULD NOT repeat the request without modifications. 4209 The client SHOULD NOT repeat the request without modifications.
4210 4210
4211 Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php 4211 Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php
4212 </summary> 4212 </summary>
4213 </member> 4213 </member>
4214 <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String)"> 4214 <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String)">
4215 <summary> 4215 <summary>
4216 Create a new bad request exception. 4216 Create a new bad request exception.
4217 </summary> 4217 </summary>
4218 <param name="errMsg">reason to why the request was bad.</param> 4218 <param name="errMsg">reason to why the request was bad.</param>
4219 </member> 4219 </member>
4220 <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String,System.Exception)"> 4220 <member name="M:HttpServer.Exceptions.BadRequestException.#ctor(System.String,System.Exception)">
4221 <summary> 4221 <summary>
4222 Create a new bad request exception. 4222 Create a new bad request exception.
4223 </summary> 4223 </summary>
4224 <param name="errMsg">reason to why the request was bad.</param> 4224 <param name="errMsg">reason to why the request was bad.</param>
4225 <param name="inner">inner exception</param> 4225 <param name="inner">inner exception</param>
4226 </member> 4226 </member>
4227 <member name="T:HttpServer.Authentication.DigestAuthentication"> 4227 <member name="T:HttpServer.Authentication.DigestAuthentication">
4228 <summary> 4228 <summary>
4229 Implements HTTP Digest authentication. It's more secure than Basic auth since password is 4229 Implements HTTP Digest authentication. It's more secure than Basic auth since password is
4230 encrypted with a "key" from the server. 4230 encrypted with a "key" from the server.
4231 </summary> 4231 </summary>
4232 <remarks> 4232 <remarks>
4233 Keep in mind that the password is encrypted with MD5. Use a combination of SSL and digest auth to be secure. 4233 Keep in mind that the password is encrypted with MD5. Use a combination of SSL and digest auth to be secure.
4234 </remarks> 4234 </remarks>
4235 </member> 4235 </member>
4236 <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)"> 4236 <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler,HttpServer.Authentication.AuthRequiredDelegate)">
4237 <summary> 4237 <summary>
4238 Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class. 4238 Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class.
4239 </summary> 4239 </summary>
4240 <param name="authenticator">Delegate used to provide information used during authentication.</param> 4240 <param name="authenticator">Delegate used to provide information used during authentication.</param>
4241 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param> 4241 <param name="authRequiredDelegate">Delegate used to determine if authentication is required (may be null).</param>
4242 </member> 4242 </member>
4243 <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)"> 4243 <member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.AuthenticationHandler)">
4244 <summary> 4244 <summary>
4245 Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class. 4245 Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class.
4246 </summary> 4246 </summary>
4247 <param name="authenticator">Delegate used to provide information used during authentication.</param> 4247 <param name="authenticator">Delegate used to provide information used during authentication.</param>
4248 </member> 4248 </member>
4249 <member name="F:HttpServer.Authentication.DigestAuthentication.DisableNonceCheck"> 4249 <member name="F:HttpServer.Authentication.DigestAuthentication.DisableNonceCheck">
4250 <summary> 4250 <summary>
4251 Used by test classes to be able to use hardcoded values 4251 Used by test classes to be able to use hardcoded values
4252 </summary> 4252 </summary>
4253 </member> 4253 </member>
4254 <member name="M:HttpServer.Authentication.DigestAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])"> 4254 <member name="M:HttpServer.Authentication.DigestAuthentication.Authenticate(System.String,System.String,System.String,System.Object[])">
4255 <summary> 4255 <summary>
4256 An authentication response have been received from the web browser. 4256 An authentication response have been received from the web browser.
4257 Check if it's correct 4257 Check if it's correct
4258 </summary> 4258 </summary>
4259 <param name="authenticationHeader">Contents from the Authorization header</param> 4259 <param name="authenticationHeader">Contents from the Authorization header</param>
4260 <param name="realm">Realm that should be authenticated</param> 4260 <param name="realm">Realm that should be authenticated</param>
4261 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param> 4261 <param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
4262 <param name="options">First option: true if username/password is correct but not cnonce</param> 4262 <param name="options">First option: true if username/password is correct but not cnonce</param>
4263 <returns> 4263 <returns>
4264 Authentication object that is stored for the request. A user class or something like that. 4264 Authentication object that is stored for the request. A user class or something like that.
4265 </returns> 4265 </returns>
4266 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception> 4266 <exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
4267 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception> 4267 <exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
4268 </member> 4268 </member>
4269 <member name="M:HttpServer.Authentication.DigestAuthentication.Encrypt(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)"> 4269 <member name="M:HttpServer.Authentication.DigestAuthentication.Encrypt(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
4270 <summary> 4270 <summary>
4271 Encrypts parameters into a Digest string 4271 Encrypts parameters into a Digest string
4272 </summary> 4272 </summary>
4273 <param name="realm">Realm that the user want's to log into.</param> 4273 <param name="realm">Realm that the user want's to log into.</param>
4274 <param name="userName">User logging in</param> 4274 <param name="userName">User logging in</param>
4275 <param name="password">Users password.</param> 4275 <param name="password">Users password.</param>
4276 <param name="method">HTTP metod.</param> 4276 <param name="method">HTTP metod.</param>
4277 <param name="uri">Uri/domain that generated the login prompt.</param> 4277 <param name="uri">Uri/domain that generated the login prompt.</param>
4278 <param name="qop">The qop.</param> 4278 <param name="qop">The qop.</param>
4279 <param name="nonce">The nonce.</param> 4279 <param name="nonce">The nonce.</param>
4280 <param name="nc">The nc.</param> 4280 <param name="nc">The nc.</param>
4281 <param name="cnonce">The cnonce.</param> 4281 <param name="cnonce">The cnonce.</param>
4282 <returns>Digest enrypted string</returns> 4282 <returns>Digest enrypted string</returns>
4283 </member> 4283 </member>
4284 <member name="M:HttpServer.Authentication.DigestAuthentication.CreateResponse(System.String,System.Object[])"> 4284 <member name="M:HttpServer.Authentication.DigestAuthentication.CreateResponse(System.String,System.Object[])">
4285 <summary> 4285 <summary>
4286 Create a response that can be sent in the WWW-Authenticate header. 4286 Create a response that can be sent in the WWW-Authenticate header.
4287 </summary> 4287 </summary>
4288 <param name="realm">Realm that the user should authenticate in</param> 4288 <param name="realm">Realm that the user should authenticate in</param>
4289 <param name="options">First options specifies if true if username/password is correct but not cnonce.</param> 4289 <param name="options">First options specifies if true if username/password is correct but not cnonce.</param>
4290 <returns>A correct auth request.</returns> 4290 <returns>A correct auth request.</returns>
4291 <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception> 4291 <exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception>
4292 </member> 4292 </member>
4293 <member name="M:HttpServer.Authentication.DigestAuthentication.Decode(System.String,System.Text.Encoding)"> 4293 <member name="M:HttpServer.Authentication.DigestAuthentication.Decode(System.String,System.Text.Encoding)">
4294 <summary> 4294 <summary>
4295 Decodes authorization header value 4295 Decodes authorization header value
4296 </summary> 4296 </summary>
4297 <param name="buffer">header value</param> 4297 <param name="buffer">header value</param>
4298 <param name="encoding">Encoding that the buffer is in</param> 4298 <param name="encoding">Encoding that the buffer is in</param>
4299 <returns>All headers and their values if successful; otherwise null</returns> 4299 <returns>All headers and their values if successful; otherwise null</returns>
4300 <example> 4300 <example>
4301 NameValueCollection header = DigestAuthentication.Decode("response=\"6629fae49393a05397450978507c4ef1\",\r\nc=00001", Encoding.ASCII); 4301 NameValueCollection header = DigestAuthentication.Decode("response=\"6629fae49393a05397450978507c4ef1\",\r\nc=00001", Encoding.ASCII);
4302 </example> 4302 </example>
4303 <remarks>Can handle lots of whitespaces and new lines without failing.</remarks> 4303 <remarks>Can handle lots of whitespaces and new lines without failing.</remarks>
4304 </member> 4304 </member>
4305 <member name="M:HttpServer.Authentication.DigestAuthentication.GetCurrentNonce"> 4305 <member name="M:HttpServer.Authentication.DigestAuthentication.GetCurrentNonce">
4306 <summary> 4306 <summary>
4307 Gets the current nonce. 4307 Gets the current nonce.
4308 </summary> 4308 </summary>
4309 <returns></returns> 4309 <returns></returns>
4310 </member> 4310 </member>
4311 <member name="M:HttpServer.Authentication.DigestAuthentication.GetMD5HashBinHex2(System.String)"> 4311 <member name="M:HttpServer.Authentication.DigestAuthentication.GetMD5HashBinHex2(System.String)">
4312 <summary> 4312 <summary>
4313 Gets the Md5 hash bin hex2. 4313 Gets the Md5 hash bin hex2.
4314 </summary> 4314 </summary>
4315 <param name="toBeHashed">To be hashed.</param> 4315 <param name="toBeHashed">To be hashed.</param>
4316 <returns></returns> 4316 <returns></returns>
4317 </member> 4317 </member>
4318 <member name="M:HttpServer.Authentication.DigestAuthentication.IsValidNonce(System.String)"> 4318 <member name="M:HttpServer.Authentication.DigestAuthentication.IsValidNonce(System.String)">
4319 <summary> 4319 <summary>
4320 determines if the nonce is valid or has expired. 4320 determines if the nonce is valid or has expired.
4321 </summary> 4321 </summary>
4322 <param name="nonce">nonce value (check wikipedia for info)</param> 4322 <param name="nonce">nonce value (check wikipedia for info)</param>
4323 <returns>true if the nonce has not expired.</returns> 4323 <returns>true if the nonce has not expired.</returns>
4324 </member> 4324 </member>
4325 <member name="P:HttpServer.Authentication.DigestAuthentication.Name"> 4325 <member name="P:HttpServer.Authentication.DigestAuthentication.Name">
4326 <summary> 4326 <summary>
4327 name used in http request. 4327 name used in http request.
4328 </summary> 4328 </summary>
4329 </member> 4329 </member>
4330 <member name="T:HttpServer.Sessions.MemorySessionStore"> 4330 <member name="T:HttpServer.Sessions.MemorySessionStore">
4331 <summary> 4331 <summary>
4332 Session store using memory for each session. 4332 Session store using memory for each session.
4333 </summary> 4333 </summary>
4334 </member> 4334 </member>
4335 <member name="M:HttpServer.Sessions.MemorySessionStore.#ctor"> 4335 <member name="M:HttpServer.Sessions.MemorySessionStore.#ctor">
4336 <summary> 4336 <summary>
4337 Initializes the class setting the expirationtimer to clean the session every minute 4337 Initializes the class setting the expirationtimer to clean the session every minute
4338 </summary> 4338 </summary>
4339 </member> 4339 </member>
4340 <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup(System.Object)"> 4340 <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup(System.Object)">
4341 <summary> 4341 <summary>
4342 Delegate for the cleanup timer 4342 Delegate for the cleanup timer
4343 </summary> 4343 </summary>
4344 </member> 4344 </member>
4345 <member name="M:HttpServer.Sessions.MemorySessionStore.Create"> 4345 <member name="M:HttpServer.Sessions.MemorySessionStore.Create">
4346 <summary> 4346 <summary>
4347 Creates a new http session 4347 Creates a new http session
4348 </summary> 4348 </summary>
4349 <returns></returns> 4349 <returns></returns>
4350 </member> 4350 </member>
4351 <member name="M:HttpServer.Sessions.MemorySessionStore.Create(System.String)"> 4351 <member name="M:HttpServer.Sessions.MemorySessionStore.Create(System.String)">
4352 <summary> 4352 <summary>
4353 Creates a new http session with a specific id 4353 Creates a new http session with a specific id
4354 </summary> 4354 </summary>
4355 <param name="id">Id used to identify the new cookie..</param> 4355 <param name="id">Id used to identify the new cookie..</param>
4356 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns> 4356 <returns>A <see cref="T:HttpServer.Sessions.IHttpSession"/> object.</returns>
4357 <remarks> 4357 <remarks>
4358 Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>. 4358 Id should be generated by the store implementation if it's null or <see cref="F:System.String.Empty"/>.
4359 </remarks> 4359 </remarks>
4360 </member> 4360 </member>
4361 <member name="M:HttpServer.Sessions.MemorySessionStore.Load(System.String)"> 4361 <member name="M:HttpServer.Sessions.MemorySessionStore.Load(System.String)">
4362 <summary> 4362 <summary>
4363 Load an existing session. 4363 Load an existing session.
4364 </summary> 4364 </summary>
4365 <param name="sessionId"></param> 4365 <param name="sessionId"></param>
4366 <returns></returns> 4366 <returns></returns>
4367 </member> 4367 </member>
4368 <member name="M:HttpServer.Sessions.MemorySessionStore.Save(HttpServer.Sessions.IHttpSession)"> 4368 <member name="M:HttpServer.Sessions.MemorySessionStore.Save(HttpServer.Sessions.IHttpSession)">
4369 <summary> 4369 <summary>
4370 Save an updated session to the store. 4370 Save an updated session to the store.
4371 </summary> 4371 </summary>
4372 <param name="session"></param> 4372 <param name="session"></param>
4373 </member> 4373 </member>
4374 <member name="M:HttpServer.Sessions.MemorySessionStore.AddUnused(HttpServer.Sessions.IHttpSession)"> 4374 <member name="M:HttpServer.Sessions.MemorySessionStore.AddUnused(HttpServer.Sessions.IHttpSession)">
4375 <summary> 4375 <summary>
4376 We use the flyweight pattern which reuses small objects 4376 We use the flyweight pattern which reuses small objects
4377 instead of creating new each time. 4377 instead of creating new each time.
4378 </summary> 4378 </summary>
4379 <param name="session">EmptyLanguageNode (unused) session that should be reused next time Create is called.</param> 4379 <param name="session">EmptyLanguageNode (unused) session that should be reused next time Create is called.</param>
4380 </member> 4380 </member>
4381 <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup"> 4381 <member name="M:HttpServer.Sessions.MemorySessionStore.Cleanup">
4382 <summary> 4382 <summary>
4383 Remove expired sessions 4383 Remove expired sessions
4384 </summary> 4384 </summary>
4385 </member> 4385 </member>
4386 <member name="M:HttpServer.Sessions.MemorySessionStore.Remove(System.String)"> 4386 <member name="M:HttpServer.Sessions.MemorySessionStore.Remove(System.String)">
4387 <summary> 4387 <summary>
4388 Remove a session 4388 Remove a session
4389 </summary> 4389 </summary>
4390 <param name="sessionId">id of the session.</param> 4390 <param name="sessionId">id of the session.</param>
4391 </member> 4391 </member>
4392 <member name="P:HttpServer.Sessions.MemorySessionStore.Item(System.String)"> 4392 <member name="P:HttpServer.Sessions.MemorySessionStore.Item(System.String)">
4393 <summary> 4393 <summary>
4394 Load a session from the store 4394 Load a session from the store
4395 </summary> 4395 </summary>
4396 <param name="sessionId"></param> 4396 <param name="sessionId"></param>
4397 <returns>null if session is not found.</returns> 4397 <returns>null if session is not found.</returns>
4398 </member> 4398 </member>
4399 <member name="P:HttpServer.Sessions.MemorySessionStore.ExpireTime"> 4399 <member name="P:HttpServer.Sessions.MemorySessionStore.ExpireTime">
4400 <summary> 4400 <summary>
4401 Number of minutes before a session expires. 4401 Number of minutes before a session expires.
4402 Default is 20 minutes. 4402 Default is 20 minutes.
4403 </summary> 4403 </summary>
4404 </member> 4404 </member>
4405 <member name="T:HttpServer.Rendering.ITemplateInfo"> 4405 <member name="T:HttpServer.Rendering.ITemplateInfo">
4406 <summary> 4406 <summary>
4407 Keeps information about templates, so we know when to regenerate it. 4407 Keeps information about templates, so we know when to regenerate it.
4408 </summary> 4408 </summary>
4409 </member> 4409 </member>
4410 <member name="P:HttpServer.Rendering.ITemplateInfo.CompiledWhen"> 4410 <member name="P:HttpServer.Rendering.ITemplateInfo.CompiledWhen">
4411 <summary> 4411 <summary>
4412 When the template was compiled. 4412 When the template was compiled.
4413 </summary> 4413 </summary>
4414 <remarks>Use this date to determine if the template is old and needs to be recompiled.</remarks> 4414 <remarks>Use this date to determine if the template is old and needs to be recompiled.</remarks>
4415 </member> 4415 </member>
4416 <member name="P:HttpServer.Rendering.ITemplateInfo.Filename"> 4416 <member name="P:HttpServer.Rendering.ITemplateInfo.Filename">
4417 <summary> 4417 <summary>
4418 Template file name. 4418 Template file name.
4419 </summary> 4419 </summary>
4420 </member> 4420 </member>
4421 <member name="P:HttpServer.Rendering.ITemplateInfo.Template"> 4421 <member name="P:HttpServer.Rendering.ITemplateInfo.Template">
4422 <summary> 4422 <summary>
4423 The actual template. 4423 The actual template.
4424 </summary> 4424 </summary>
4425 </member> 4425 </member>
4426 <member name="T:HttpServer.Helpers.FormValidator"> 4426 <member name="T:HttpServer.Helpers.FormValidator">
4427 <summary> 4427 <summary>
4428 Validator is used to validate all input items in a form. 4428 Validator is used to validate all input items in a form.
4429 </summary> 4429 </summary>
4430 </member> 4430 </member>
4431 <member name="M:HttpServer.Helpers.FormValidator.#ctor(System.Collections.Specialized.NameValueCollection)"> 4431 <member name="M:HttpServer.Helpers.FormValidator.#ctor(System.Collections.Specialized.NameValueCollection)">
4432 <summary> 4432 <summary>
4433 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class. 4433 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class.
4434 </summary> 4434 </summary>
4435 <param name="errors">collection to be filled with errors</param> 4435 <param name="errors">collection to be filled with errors</param>
4436 </member> 4436 </member>
4437 <member name="M:HttpServer.Helpers.FormValidator.#ctor(System.Collections.Specialized.NameValueCollection,Fadd.Globalization.LanguageNode)"> 4437 <member name="M:HttpServer.Helpers.FormValidator.#ctor(System.Collections.Specialized.NameValueCollection,Fadd.Globalization.LanguageNode)">
4438 <summary> 4438 <summary>
4439 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class. 4439 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class.
4440 </summary> 4440 </summary>
4441 <param name="errors">collection to be filled with errors</param> 4441 <param name="errors">collection to be filled with errors</param>
4442 <param name="modelLanguage">Translation used to translate the "name" parameters in all validation methods.</param> 4442 <param name="modelLanguage">Translation used to translate the "name" parameters in all validation methods.</param>
4443 </member> 4443 </member>
4444 <member name="M:HttpServer.Helpers.FormValidator.#ctor(Fadd.Globalization.LanguageNode)"> 4444 <member name="M:HttpServer.Helpers.FormValidator.#ctor(Fadd.Globalization.LanguageNode)">
4445 <summary> 4445 <summary>
4446 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class. 4446 Initializes a new instance of the <see cref="T:HttpServer.Helpers.FormValidator"/> class.
4447 </summary> 4447 </summary>
4448 <param name="modelLanguage">Translation used to translate the "name" parameters in all validation methods.</param> 4448 <param name="modelLanguage">Translation used to translate the "name" parameters in all validation methods.</param>
4449 </member> 4449 </member>
4450 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput)"> 4450 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput)">
4451 <summary> 4451 <summary>
4452 4452
4453 </summary> 4453 </summary>
4454 <param name="form">form that validation should be made on.</param> 4454 <param name="form">form that validation should be made on.</param>
4455 </member> 4455 </member>
4456 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput,System.Collections.Specialized.NameValueCollection)"> 4456 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput,System.Collections.Specialized.NameValueCollection)">
4457 <summary> 4457 <summary>
4458 4458
4459 </summary> 4459 </summary>
4460 <param name="errors">collection that all validation errors are added to.</param> 4460 <param name="errors">collection that all validation errors are added to.</param>
4461 <param name="form">form that validation should be made on.</param> 4461 <param name="form">form that validation should be made on.</param>
4462 </member> 4462 </member>
4463 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput,System.Collections.Specialized.NameValueCollection,Fadd.Globalization.LanguageNode)"> 4463 <member name="M:HttpServer.Helpers.FormValidator.#ctor(HttpServer.IHttpInput,System.Collections.Specialized.NameValueCollection,Fadd.Globalization.LanguageNode)">
4464 <summary> 4464 <summary>
4465 4465
4466 </summary> 4466 </summary>
4467 <param name="errors">collection that all validation errors are added to.</param> 4467 <param name="errors">collection that all validation errors are added to.</param>
4468 <param name="form">form that validation should be made on.</param> 4468 <param name="form">form that validation should be made on.</param>
4469 <param name="modelLanguage">Language category used to translate field names.</param> 4469 <param name="modelLanguage">Language category used to translate field names.</param>
4470 </member> 4470 </member>
4471 <member name="M:HttpServer.Helpers.FormValidator.SetForm(HttpServer.IHttpInput)"> 4471 <member name="M:HttpServer.Helpers.FormValidator.SetForm(HttpServer.IHttpInput)">
4472 <summary> 4472 <summary>
4473 Switch to a new http input. 4473 Switch to a new http input.
4474 </summary> 4474 </summary>
4475 <param name="form">form to use validation for now</param> 4475 <param name="form">form to use validation for now</param>
4476 </member> 4476 </member>
4477 <member name="M:HttpServer.Helpers.FormValidator.SetForm(HttpServer.IHttpInput,Fadd.Globalization.LanguageNode)"> 4477 <member name="M:HttpServer.Helpers.FormValidator.SetForm(HttpServer.IHttpInput,Fadd.Globalization.LanguageNode)">
4478 <summary> 4478 <summary>
4479 Switch to a new http input. 4479 Switch to a new http input.
4480 </summary> 4480 </summary>
4481 <param name="form">form to use validation for now</param> 4481 <param name="form">form to use validation for now</param>
4482 <param name="modelLanguage">language for the validation</param> 4482 <param name="modelLanguage">language for the validation</param>
4483 </member> 4483 </member>
4484 <member name="M:HttpServer.Helpers.FormValidator.Digits(System.String,System.Boolean)"> 4484 <member name="M:HttpServer.Helpers.FormValidator.Digits(System.String,System.Boolean)">
4485 <summary> 4485 <summary>
4486 Check if a value is digits only 4486 Check if a value is digits only
4487 </summary> 4487 </summary>
4488 <param name="name">Field name.</param> 4488 <param name="name">Field name.</param>
4489 <param name="required">true if field is required (may not be empty)</param> 4489 <param name="required">true if field is required (may not be empty)</param>
4490 <returns>string if validated, otherwise string.Empty</returns> 4490 <returns>string if validated, otherwise string.Empty</returns>
4491 </member> 4491 </member>
4492 <member name="M:HttpServer.Helpers.FormValidator.Digits(System.String,System.Boolean,System.String)"> 4492 <member name="M:HttpServer.Helpers.FormValidator.Digits(System.String,System.Boolean,System.String)">
4493 <summary> 4493 <summary>
4494 Check if a value is digits only 4494 Check if a value is digits only
4495 </summary> 4495 </summary>
4496 <param name="name">Field name.</param> 4496 <param name="name">Field name.</param>
4497 <param name="extraAllowedCharacters">extra characters that is allowed.</param> 4497 <param name="extraAllowedCharacters">extra characters that is allowed.</param>
4498 <param name="required">true if field is required (may not be empty)</param> 4498 <param name="required">true if field is required (may not be empty)</param>
4499 <returns>string if validated, otherwise string.Empty</returns> 4499 <returns>string if validated, otherwise string.Empty</returns>
4500 </member> 4500 </member>
4501 <member name="M:HttpServer.Helpers.FormValidator.Integer(System.String)"> 4501 <member name="M:HttpServer.Helpers.FormValidator.Integer(System.String)">
4502 <summary> 4502 <summary>
4503 Check whether the specified form item is an integer. 4503 Check whether the specified form item is an integer.
4504 </summary> 4504 </summary>
4505 <param name="name">Form parameter to validate</param> 4505 <param name="name">Form parameter to validate</param>
4506 <returns>value if parameter is an int; 0 if not.</returns> 4506 <returns>value if parameter is an int; 0 if not.</returns>
4507 </member> 4507 </member>
4508 <member name="M:HttpServer.Helpers.FormValidator.Integer(System.String,System.Boolean)"> 4508 <member name="M:HttpServer.Helpers.FormValidator.Integer(System.String,System.Boolean)">
4509 <summary> 4509 <summary>
4510 Check whether the specified form item is an integer. 4510 Check whether the specified form item is an integer.
4511 </summary> 4511 </summary>
4512 <param name="name">Form parameter to validate</param> 4512 <param name="name">Form parameter to validate</param>
4513 <param name="required">Paramater is required (adds an error if it's not specified)</param> 4513 <param name="required">Paramater is required (adds an error if it's not specified)</param>
4514 <returns>value if parameter is an int; 0 if not.</returns> 4514 <returns>value if parameter is an int; 0 if not.</returns>
4515 </member> 4515 </member>
4516 <member name="M:HttpServer.Helpers.FormValidator.Double(System.String,System.Boolean)"> 4516 <member name="M:HttpServer.Helpers.FormValidator.Double(System.String,System.Boolean)">
4517 <summary> 4517 <summary>
4518 Check whether the specified value is a double. 4518 Check whether the specified value is a double.
4519 </summary> 4519 </summary>
4520 <param name="name">Name of the parameter</param> 4520 <param name="name">Name of the parameter</param>
4521 <param name="required">Paramater is required (adds an error if it's not specified)</param> 4521 <param name="required">Paramater is required (adds an error if it's not specified)</param>
4522 <returns>value if parameter is a double; 0 if not.</returns> 4522 <returns>value if parameter is a double; 0 if not.</returns>
4523 </member> 4523 </member>
4524 <member name="M:HttpServer.Helpers.FormValidator.Currency(System.String,System.Boolean)"> 4524 <member name="M:HttpServer.Helpers.FormValidator.Currency(System.String,System.Boolean)">
4525 <summary> 4525 <summary>
4526 Check whether the specified value is a currency amount. 4526 Check whether the specified value is a currency amount.
4527 </summary> 4527 </summary>
4528 <param name="name">Name of the parameter</param> 4528 <param name="name">Name of the parameter</param>
4529 <param name="required">Paramater is required (adds an error if it's not specified)</param> 4529 <param name="required">Paramater is required (adds an error if it's not specified)</param>
4530 <returns>value if parameter is a currency amount; 0 if not.</returns> 4530 <returns>value if parameter is a currency amount; 0 if not.</returns>
4531 </member> 4531 </member>
4532 <member name="M:HttpServer.Helpers.FormValidator.Hex(System.String,System.Boolean)"> 4532 <member name="M:HttpServer.Helpers.FormValidator.Hex(System.String,System.Boolean)">
4533 <summary> 4533 <summary>
4534 Validates a string to hex 4534 Validates a string to hex
4535 </summary> 4535 </summary>
4536 <param name="name">The name of the field to validate</param> 4536 <param name="name">The name of the field to validate</param>
4537 <param name="required">If the field must be set</param> 4537 <param name="required">If the field must be set</param>
4538 <returns>The value if validated otherwise string.Empty</returns> 4538 <returns>The value if validated otherwise string.Empty</returns>
4539 </member> 4539 </member>
4540 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String,System.Boolean)"> 4540 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String,System.Boolean)">
4541 <summary> 4541 <summary>
4542 Validate that a string only contains letters or digits. 4542 Validate that a string only contains letters or digits.
4543 </summary> 4543 </summary>
4544 <param name="name">Name of form parameter to validate.</param> 4544 <param name="name">Name of form parameter to validate.</param>
4545 <param name="required">Value is required.</param> 4545 <param name="required">Value is required.</param>
4546 <returns>value if valid; otherwise string.EmptyLanguageNode.</returns> 4546 <returns>value if valid; otherwise string.EmptyLanguageNode.</returns>
4547 </member> 4547 </member>
4548 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String)"> 4548 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String)">
4549 <summary> 4549 <summary>
4550 Validate that a string only contains letters or digits. 4550 Validate that a string only contains letters or digits.
4551 </summary> 4551 </summary>
4552 <param name="name">Form parameter name.</param> 4552 <param name="name">Form parameter name.</param>
4553 <returns>vaue if found; otherwise string.Empty</returns> 4553 <returns>vaue if found; otherwise string.Empty</returns>
4554 </member> 4554 </member>
4555 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String,System.Boolean,System.String)"> 4555 <member name="M:HttpServer.Helpers.FormValidator.LettersOrDigits(System.String,System.Boolean,System.String)">
4556 <summary> 4556 <summary>
4557 Validate that a string only contains letters, digits or the specified characters 4557 Validate that a string only contains letters, digits or the specified characters
4558 </summary> 4558 </summary>
4559 <param name="name">Form parameter name.</param> 4559 <param name="name">Form parameter name.</param>
4560 <param name="required">may not be null or empty if true.</param> 4560 <param name="required">may not be null or empty if true.</param>
4561 <param name="extraCharacters">any other allowed characters.</param> 4561 <param name="extraCharacters">any other allowed characters.</param>
4562 <returns>value if valid; otherwise string.Empty</returns> 4562 <returns>value if valid; otherwise string.Empty</returns>
4563 </member> 4563 </member>
4564 <member name="M:HttpServer.Helpers.FormValidator.Letters(System.String,System.Boolean)"> 4564 <member name="M:HttpServer.Helpers.FormValidator.Letters(System.String,System.Boolean)">
4565 <summary> 4565 <summary>
4566 Validate that a string consists of only letters (including special letters) 4566 Validate that a string consists of only letters (including special letters)
4567 </summary> 4567 </summary>
4568 <param name="name"></param> 4568 <param name="name"></param>
4569 <param name="required">If a value must be passed</param> 4569 <param name="required">If a value must be passed</param>
4570 <returns></returns> 4570 <returns></returns>
4571 </member> 4571 </member>
4572 <member name="M:HttpServer.Helpers.FormValidator.Letters(System.String,System.Boolean,System.String)"> 4572 <member name="M:HttpServer.Helpers.FormValidator.Letters(System.String,System.Boolean,System.String)">
4573 <summary> 4573 <summary>
4574 Validate that a string consists of only letters (a-z and A-Z) 4574 Validate that a string consists of only letters (a-z and A-Z)
4575 </summary> 4575 </summary>
4576 <param name="name"></param> 4576 <param name="name"></param>
4577 <param name="required">If a value must be passed</param> 4577 <param name="required">If a value must be passed</param>
4578 <param name="extraCharacters">A string of extra character to test against, dont forget language specific characters and spaces if wished for</param> 4578 <param name="extraCharacters">A string of extra character to test against, dont forget language specific characters and spaces if wished for</param>
4579 <returns></returns> 4579 <returns></returns>
4580 </member> 4580 </member>
4581 <member name="M:HttpServer.Helpers.FormValidator.AlphaNumeric(System.String)"> 4581 <member name="M:HttpServer.Helpers.FormValidator.AlphaNumeric(System.String)">
4582 <summary> 4582 <summary>
4583 Check whether the specified value is an integer. 4583 Check whether the specified value is an integer.
4584 </summary> 4584 </summary>
4585 <param name="name">Name of the parameter</param> 4585 <param name="name">Name of the parameter</param>
4586 <returns>value if parameter contains valid characters; string.Empty if not.</returns> 4586 <returns>value if parameter contains valid characters; string.Empty if not.</returns>
4587 </member> 4587 </member>
4588 <member name="M:HttpServer.Helpers.FormValidator.AlphaNumeric(System.String,System.Boolean)"> 4588 <member name="M:HttpServer.Helpers.FormValidator.AlphaNumeric(System.String,System.Boolean)">
4589 <summary> 4589 <summary>
4590 Check whether the specified value is an integer. 4590 Check whether the specified value is an integer.
4591 </summary> 4591 </summary>
4592 <param name="name">Name of the parameter</param> 4592 <param name="name">Name of the parameter</param>
4593 <param name="required">Paramater is required (adds an error if it's not specified)</param> 4593 <param name="required">Paramater is required (adds an error if it's not specified)</param>
4594 <returns>value if parameter contains valid characters; string.Empty if not.</returns> 4594 <returns>value if parameter contains valid characters; string.Empty if not.</returns>
4595 </member> 4595 </member>
4596 <member name="M:HttpServer.Helpers.FormValidator.Password(System.String,System.Boolean)"> 4596 <member name="M:HttpServer.Helpers.FormValidator.Password(System.String,System.Boolean)">
4597 <summary> 4597 <summary>
4598 Validate that a string only contains letters or digits or any of the <see cref="F:Fadd.Validator.PasswordChars"/>. 4598 Validate that a string only contains letters or digits or any of the <see cref="F:Fadd.Validator.PasswordChars"/>.
4599 </summary> 4599 </summary>
4600 <param name="name">Name of form parameter to validate.</param> 4600 <param name="name">Name of form parameter to validate.</param>
4601 <param name="required">Value is required.</param> 4601 <param name="required">Value is required.</param>
4602 <returns>value if valid; otherwise string.Empty.</returns> 4602 <returns>value if valid; otherwise string.Empty.</returns>
4603 </member> 4603 </member>
4604 <member name="M:HttpServer.Helpers.FormValidator.Password(System.String)"> 4604 <member name="M:HttpServer.Helpers.FormValidator.Password(System.String)">
4605 <summary> 4605 <summary>
4606 Validate that a string only contains letters or digits or any of the <see cref="F:Fadd.Validator.PasswordChars"/>. 4606 Validate that a string only contains letters or digits or any of the <see cref="F:Fadd.Validator.PasswordChars"/>.
4607 </summary> 4607 </summary>
4608 <param name="name">Form parameter name.</param> 4608 <param name="name">Form parameter name.</param>
4609 <returns>vaue if found; otherwise string.Empty</returns> 4609 <returns>vaue if found; otherwise string.Empty</returns>
4610 </member> 4610 </member>
4611 <member name="M:HttpServer.Helpers.FormValidator.Required(System.String)"> 4611 <member name="M:HttpServer.Helpers.FormValidator.Required(System.String)">
4612 <summary> 4612 <summary>
4613 Check's weather a parameter is null or not. 4613 Check's weather a parameter is null or not.
4614 </summary> 4614 </summary>
4615 <param name="name">Parameter in form</param> 4615 <param name="name">Parameter in form</param>
4616 <returns>true if value is not null; otherwise false.</returns> 4616 <returns>true if value is not null; otherwise false.</returns>
4617 </member> 4617 </member>
4618 <member name="M:HttpServer.Helpers.FormValidator.String(System.String,System.Boolean)"> 4618 <member name="M:HttpServer.Helpers.FormValidator.String(System.String,System.Boolean)">
4619 <summary> 4619 <summary>
4620 Validate a string value 4620 Validate a string value
4621 </summary> 4621 </summary>
4622 <param name="name">Name of form parameter to validate.</param> 4622 <param name="name">Name of form parameter to validate.</param>
4623 <param name="required">Value is required.</param> 4623 <param name="required">Value is required.</param>
4624 <returns>value if valid; otherwise string.Empty.</returns> 4624 <returns>value if valid; otherwise string.Empty.</returns>
4625 </member> 4625 </member>
4626 <member name="M:HttpServer.Helpers.FormValidator.String(System.String)"> 4626 <member name="M:HttpServer.Helpers.FormValidator.String(System.String)">
4627 <summary> 4627 <summary>
4628 Validate a string parameter in the form 4628 Validate a string parameter in the form
4629 </summary> 4629 </summary>
4630 <param name="name">Form parameter name.</param> 4630 <param name="name">Form parameter name.</param>
4631 <returns>vaue if found; otherwise string.Empty</returns> 4631 <returns>vaue if found; otherwise string.Empty</returns>
4632 </member> 4632 </member>
4633 <member name="M:HttpServer.Helpers.FormValidator.Email(System.String,System.Boolean)"> 4633 <member name="M:HttpServer.Helpers.FormValidator.Email(System.String,System.Boolean)">
4634 <summary> 4634 <summary>
4635 validates email address using a regexp. 4635 validates email address using a regexp.
4636 </summary> 4636 </summary>
4637 <param name="name">field name</param> 4637 <param name="name">field name</param>
4638 <param name="required">field is required (may not be null or empty).</param> 4638 <param name="required">field is required (may not be null or empty).</param>
4639 <returns>value if validation is ok; otherwise string.Empty.</returns> 4639 <returns>value if validation is ok; otherwise string.Empty.</returns>
4640 </member> 4640 </member>
4641 <member name="M:HttpServer.Helpers.FormValidator.Char(System.String,System.Boolean)"> 4641 <member name="M:HttpServer.Helpers.FormValidator.Char(System.String,System.Boolean)">
4642 <summary> 4642 <summary>
4643 Check whether the specified value is an character. 4643 Check whether the specified value is an character.
4644 </summary> 4644 </summary>
4645 <param name="name">Name of the parameter</param> 4645 <param name="name">Name of the parameter</param>
4646 <param name="required">Paramater is required (adds an error if it's not specified)</param> 4646 <param name="required">Paramater is required (adds an error if it's not specified)</param>
4647 <returns>value if parameter is an int; char.MinValue if not.</returns> 4647 <returns>value if parameter is an int; char.MinValue if not.</returns>
4648 </member> 4648 </member>
4649 <member name="M:HttpServer.Helpers.FormValidator.Char(System.String)"> 4649 <member name="M:HttpServer.Helpers.FormValidator.Char(System.String)">
4650 <summary> 4650 <summary>
4651 Check whether the specified value is an character. 4651 Check whether the specified value is an character.
4652 </summary> 4652 </summary>
4653 <param name="name">Name of the parameter</param> 4653 <param name="name">Name of the parameter</param>
4654 <returns>value if parameter is an int; char.MinValue if not.</returns> 4654 <returns>value if parameter is an int; char.MinValue if not.</returns>
4655 </member> 4655 </member>
4656 <member name="M:HttpServer.Helpers.FormValidator.Boolean(System.String,System.Boolean)"> 4656 <member name="M:HttpServer.Helpers.FormValidator.Boolean(System.String,System.Boolean)">
4657 <summary> 4657 <summary>
4658 Checks whether a field is true (can also be in native language). 4658 Checks whether a field is true (can also be in native language).
4659 </summary> 4659 </summary>
4660 <param name="name">field name</param> 4660 <param name="name">field name</param>
4661 <param name="required">field is required (may not be null or empty).</param> 4661 <param name="required">field is required (may not be null or empty).</param>
4662 <returns>true if value is true; false if value is false or if validation failed.</returns> 4662 <returns>true if value is true; false if value is false or if validation failed.</returns>
4663 <remarks>Check validation errors to see if error ocurred.</remarks> 4663 <remarks>Check validation errors to see if error ocurred.</remarks>
4664 </member> 4664 </member>
4665 <member name="M:HttpServer.Helpers.FormValidator.Boolean(System.String)"> 4665 <member name="M:HttpServer.Helpers.FormValidator.Boolean(System.String)">
4666 <summary> 4666 <summary>
4667 Checks whether a field is true (can also be in native language). 4667 Checks whether a field is true (can also be in native language).
4668 </summary> 4668 </summary>
4669 <param name="name">field name</param> 4669 <param name="name">field name</param>
4670 <returns>true if value is true; false if value is false or if validation failed.</returns> 4670 <returns>true if value is true; false if value is false or if validation failed.</returns>
4671 <remarks>Check validation errors to see if error ocurred.</remarks> 4671 <remarks>Check validation errors to see if error ocurred.</remarks>
4672 </member> 4672 </member>
4673 <member name="T:HttpServer.Rendering.ResourceManager"> 4673 <member name="T:HttpServer.Rendering.ResourceManager">
4674 <summary> 4674 <summary>
4675 Class to handle loading of resource files 4675 Class to handle loading of resource files
4676 </summary> 4676 </summary>
4677 </member> 4677 </member>
4678 <member name="F:HttpServer.Rendering.ResourceManager._loadedResources"> 4678 <member name="F:HttpServer.Rendering.ResourceManager._loadedResources">
4679 <summary><![CDATA[ 4679 <summary><![CDATA[
4680 Maps uri's to resources, Dictionary<uri, resource> 4680 Maps uri's to resources, Dictionary<uri, resource>
4681 ]]></summary> 4681 ]]></summary>
4682 </member> 4682 </member>
4683 <member name="M:HttpServer.Rendering.ResourceManager.ParseName(System.String@,System.String@)"> 4683 <member name="M:HttpServer.Rendering.ResourceManager.ParseName(System.String@,System.String@)">
4684 <summary> 4684 <summary>
4685 Parses a filename and sets it to the extensionless name in lowercase. The extension is cut out without the dot. 4685 Parses a filename and sets it to the extensionless name in lowercase. The extension is cut out without the dot.
4686 </summary> 4686 </summary>
4687 <param name="filename"></param> 4687 <param name="filename"></param>
4688 <param name="extension"></param> 4688 <param name="extension"></param>
4689 <usage> 4689 <usage>
4690 string ext; 4690 string ext;
4691 string filename = "/uSeR/teSt.haMl"; 4691 string filename = "/uSeR/teSt.haMl";
4692 ParseName(ref filename, out ext); 4692 ParseName(ref filename, out ext);
4693 Console.WriteLine("File: " + filename); 4693 Console.WriteLine("File: " + filename);
4694 Console.WriteLine("Ext: " + ext); 4694 Console.WriteLine("Ext: " + ext);
4695 -> user/test 4695 -> user/test
4696 -> haml 4696 -> haml
4697 </usage> 4697 </usage>
4698 </member> 4698 </member>
4699 <member name="M:HttpServer.Rendering.ResourceManager.AddResource(System.String,HttpServer.Rendering.ResourceInfo)"> 4699 <member name="M:HttpServer.Rendering.ResourceManager.AddResource(System.String,HttpServer.Rendering.ResourceInfo)">
4700 <summary> 4700 <summary>
4701 Add a resource to a specified uri without extension, ie user/test 4701 Add a resource to a specified uri without extension, ie user/test
4702 </summary> 4702 </summary>
4703 <param name="uri">The uri to add the resource to</param> 4703 <param name="uri">The uri to add the resource to</param>
4704 <param name="info">The <see cref="T:HttpServer.Rendering.ResourceInfo"/> instance describing the resource</param> 4704 <param name="info">The <see cref="T:HttpServer.Rendering.ResourceInfo"/> instance describing the resource</param>
4705 </member> 4705 </member>
4706 <member name="M:HttpServer.Rendering.ResourceManager.LoadResources(System.String,System.Reflection.Assembly,System.String)"> 4706 <member name="M:HttpServer.Rendering.ResourceManager.LoadResources(System.String,System.Reflection.Assembly,System.String)">
4707 <summary> 4707 <summary>
4708 Loads resources from a namespace in the given assembly to an uri 4708 Loads resources from a namespace in the given assembly to an uri
4709 </summary> 4709 </summary>
4710 <param name="toUri">The uri to map the resources to</param> 4710 <param name="toUri">The uri to map the resources to</param>
4711 <param name="fromAssembly">The assembly in which the resources reside</param> 4711 <param name="fromAssembly">The assembly in which the resources reside</param>
4712 <param name="fromNamespace">The namespace from which to load the resources</param> 4712 <param name="fromNamespace">The namespace from which to load the resources</param>
4713 <usage> 4713 <usage>
4714 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views"); 4714 resourceLoader.LoadResources("/user/", typeof(User).Assembly, "MyLib.Models.User.Views");
4715 4715
4716 will make ie the resource MyLib.Models.User.Views.list.Haml accessible via /user/list.haml or /user/list/ 4716 will make ie the resource MyLib.Models.User.Views.list.Haml accessible via /user/list.haml or /user/list/
4717 </usage> 4717 </usage>
4718 </member> 4718 </member>
4719 <member name="M:HttpServer.Rendering.ResourceManager.GetResourceStream(System.String)"> 4719 <member name="M:HttpServer.Rendering.ResourceManager.GetResourceStream(System.String)">
4720 <summary> 4720 <summary>
4721 Retrieves a stream for the specified resource path if loaded otherwise null 4721 Retrieves a stream for the specified resource path if loaded otherwise null
4722 </summary> 4722 </summary>
4723 <param name="path">Path to the resource to retrieve a stream for</param> 4723 <param name="path">Path to the resource to retrieve a stream for</param>
4724 <returns>A stream or null if the resource couldn't be found</returns> 4724 <returns>A stream or null if the resource couldn't be found</returns>
4725 </member> 4725 </member>
4726 <member name="M:HttpServer.Rendering.ResourceManager.GetFiles(System.String)"> 4726 <member name="M:HttpServer.Rendering.ResourceManager.GetFiles(System.String)">
4727 <summary> 4727 <summary>
4728 Fetch all files from the resource that matches the specified arguments. 4728 Fetch all files from the resource that matches the specified arguments.
4729 </summary> 4729 </summary>
4730 <param name="path">The path to the resource to extract</param> 4730 <param name="path">The path to the resource to extract</param>
4731 <returns> 4731 <returns>
4732 a list of files if found; or an empty array if no files are found. 4732 a list of files if found; or an empty array if no files are found.
4733 </returns> 4733 </returns>
4734 </member> 4734 </member>
4735 <member name="M:HttpServer.Rendering.ResourceManager.GetFiles(System.String,System.String)"> 4735 <member name="M:HttpServer.Rendering.ResourceManager.GetFiles(System.String,System.String)">
4736 <summary> 4736 <summary>
4737 Fetch all files from the resource that matches the specified arguments. 4737 Fetch all files from the resource that matches the specified arguments.
4738 </summary> 4738 </summary>
4739 <param name="path">Where the file should reside.</param> 4739 <param name="path">Where the file should reside.</param>
4740 <param name="filename">Files to check</param> 4740 <param name="filename">Files to check</param>
4741 <returns> 4741 <returns>
4742 a list of files if found; or an empty array if no files are found. 4742 a list of files if found; or an empty array if no files are found.
4743 </returns> 4743 </returns>
4744 </member> 4744 </member>
4745 <member name="M:HttpServer.Rendering.ResourceManager.ContainsResource(System.String)"> 4745 <member name="M:HttpServer.Rendering.ResourceManager.ContainsResource(System.String)">
4746 <summary> 4746 <summary>
4747 Returns whether or not the loader has an instance of the file requested 4747 Returns whether or not the loader has an instance of the file requested
4748 </summary> 4748 </summary>
4749 <param name="filename">The name of the template/file</param> 4749 <param name="filename">The name of the template/file</param>
4750 <returns>True if the loader can provide the file</returns> 4750 <returns>True if the loader can provide the file</returns>
4751 </member> 4751 </member>
4752 <member name="T:HttpServer.ExceptionHandler"> 4752 <member name="T:HttpServer.ExceptionHandler">
4753 <summary> 4753 <summary>
4754 We dont want to let the server to die due to exceptions thrown in worker threads. 4754 We dont want to let the server to die due to exceptions thrown in worker threads.
4755 therefore we use this delegate to give you a change to handle uncaught exceptions. 4755 therefore we use this delegate to give you a change to handle uncaught exceptions.
4756 </summary> 4756 </summary>
4757 <param name="source">Class that the exception was thrown in.</param> 4757 <param name="source">Class that the exception was thrown in.</param>
4758 <param name="exception">Exception</param> 4758 <param name="exception">Exception</param>
4759 <remarks> 4759 <remarks>
4760 Server will throw a InternalServerException in release version if you dont 4760 Server will throw a InternalServerException in release version if you dont
4761 handle this delegate. 4761 handle this delegate.
4762 </remarks> 4762 </remarks>
4763 </member> 4763 </member>
4764 <member name="T:HttpServer.Controllers.AuthValidatorAttribute"> 4764 <member name="T:HttpServer.Controllers.AuthValidatorAttribute">
4765 <summary> 4765 <summary>
4766 Method marked with this attribute determines if authentication is required. 4766 Method marked with this attribute determines if authentication is required.
4767 </summary> 4767 </summary>
4768 <seealso cref="T:HttpServer.HttpModules.ControllerModule"/> 4768 <seealso cref="T:HttpServer.HttpModules.ControllerModule"/>
4769 <seealso cref="T:HttpServer.HttpServer"/> 4769 <seealso cref="T:HttpServer.HttpServer"/>
4770 <seealso cref="T:HttpServer.Controllers.AuthRequiredAttribute"/> 4770 <seealso cref="T:HttpServer.Controllers.AuthRequiredAttribute"/>
4771 <seealso cref="T:HttpServer.HttpModules.WebSiteModule"/> 4771 <seealso cref="T:HttpServer.HttpModules.WebSiteModule"/>
4772 <remarks> 4772 <remarks>
4773 <para>The method should take one parameter (int level), return a bool and be protected/private.</para> 4773 <para>The method should take one parameter (int level), return a bool and be protected/private.</para>
4774 <para>You should throw UnauthorizedException if you are using HTTP authentication.</para> 4774 <para>You should throw UnauthorizedException if you are using HTTP authentication.</para>
4775 </remarks> 4775 </remarks>
4776 <example> 4776 <example>
4777 <![CDATA[ 4777 <![CDATA[
4778 public enum UserLevel 4778 public enum UserLevel
4779 { 4779 {
4780 Guest, 4780 Guest,
4781 User, 4781 User,
4782 Admin, 4782 Admin,
4783 SuperAdmin 4783 SuperAdmin
4784 } 4784 }
4785 public class UserController : RequestController 4785 public class UserController : RequestController
4786 { 4786 {
4787 [AuthRequired(UserLevel.User)] 4787 [AuthRequired(UserLevel.User)]
4788 public string View() 4788 public string View()
4789 { 4789 {
4790 return "Can also be viewed by users"; 4790 return "Can also be viewed by users";
4791 } 4791 }
4792 4792
4793 [AuthValidatorAttribute] 4793 [AuthValidatorAttribute]
4794 public bool ValidateUser(int level) 4794 public bool ValidateUser(int level)
4795 { 4795 {
4796 (User)user = Session["user"]; 4796 (User)user = Session["user"];
4797 return user != null && user.Status >= level; 4797 return user != null && user.Status >= level;
4798 } 4798 }
4799 } 4799 }
4800 ]]> 4800 ]]>
4801 </example> 4801 </example>
4802 </member> 4802 </member>
4803 <member name="T:HttpServer.RequestCookies"> 4803 <member name="T:HttpServer.RequestCookies">
4804 <summary> 4804 <summary>
4805 This class is created as a wrapper, since there are two different cookie types in .Net (Cookie and HttpCookie). 4805 This class is created as a wrapper, since there are two different cookie types in .Net (Cookie and HttpCookie).
4806 The framework might switch class in the future and we dont want to have to replace all instances 4806 The framework might switch class in the future and we dont want to have to replace all instances
4807 </summary> 4807 </summary>
4808 </member> 4808 </member>
4809 <member name="M:HttpServer.RequestCookies.#ctor(System.String)"> 4809 <member name="M:HttpServer.RequestCookies.#ctor(System.String)">
4810 <summary> 4810 <summary>
4811 Let's copy all the cookies. 4811 Let's copy all the cookies.
4812 </summary> 4812 </summary>
4813 <param name="cookies">value from cookie header.</param> 4813 <param name="cookies">value from cookie header.</param>
4814 </member> 4814 </member>
4815 <member name="M:HttpServer.RequestCookies.Add(HttpServer.RequestCookie)"> 4815 <member name="M:HttpServer.RequestCookies.Add(HttpServer.RequestCookie)">
4816 <summary> 4816 <summary>
4817 Adds a cookie in the collection. 4817 Adds a cookie in the collection.
4818 </summary> 4818 </summary>
4819 <param name="cookie">cookie to add</param> 4819 <param name="cookie">cookie to add</param>
4820 <exception cref="T:System.ArgumentNullException">cookie is null</exception> 4820 <exception cref="T:System.ArgumentNullException">cookie is null</exception>
4821 </member> 4821 </member>
4822 <member name="M:HttpServer.RequestCookies.GetEnumerator"> 4822 <member name="M:HttpServer.RequestCookies.GetEnumerator">
4823 <summary> 4823 <summary>
4824 Gets a collection enumerator on the cookie list. 4824 Gets a collection enumerator on the cookie list.
4825 </summary> 4825 </summary>
4826 <returns>collection enumerator</returns> 4826 <returns>collection enumerator</returns>
4827 </member> 4827 </member>
4828 <member name="M:HttpServer.RequestCookies.Clear"> 4828 <member name="M:HttpServer.RequestCookies.Clear">
4829 <summary> 4829 <summary>
4830 Remove all cookies. 4830 Remove all cookies.
4831 </summary> 4831 </summary>
4832 </member> 4832 </member>
4833 <member name="M:HttpServer.RequestCookies.System#Collections#Generic#IEnumerable{HttpServer#RequestCookie}#GetEnumerator"> 4833 <member name="M:HttpServer.RequestCookies.System#Collections#Generic#IEnumerable{HttpServer#RequestCookie}#GetEnumerator">
4834 <summary> 4834 <summary>
4835 Returns an enumerator that iterates through the collection. 4835 Returns an enumerator that iterates through the collection.
4836 </summary> 4836 </summary>
4837 4837
4838 <returns> 4838 <returns>
4839 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection. 4839 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
4840 </returns> 4840 </returns>
4841 <filterpriority>1</filterpriority> 4841 <filterpriority>1</filterpriority>
4842 </member> 4842 </member>
4843 <member name="P:HttpServer.RequestCookies.Count"> 4843 <member name="P:HttpServer.RequestCookies.Count">
4844 <summary> 4844 <summary>
4845 Gets the count of cookies in the collection. 4845 Gets the count of cookies in the collection.
4846 </summary> 4846 </summary>
4847 </member> 4847 </member>
4848 <member name="P:HttpServer.RequestCookies.Item(System.String)"> 4848 <member name="P:HttpServer.RequestCookies.Item(System.String)">
4849 <summary> 4849 <summary>
4850 Gets the cookie of a given identifier (null if not existing). 4850 Gets the cookie of a given identifier (null if not existing).
4851 </summary> 4851 </summary>
4852 </member> 4852 </member>
4853 <member name="T:HttpServer.RealmHandler"> 4853 <member name="T:HttpServer.RealmHandler">
4854 <summary> 4854 <summary>
4855 Delegate used to find a realm/domain. 4855 Delegate used to find a realm/domain.
4856 </summary> 4856 </summary>
4857 <param name="domain"></param> 4857 <param name="domain"></param>
4858 <returns></returns> 4858 <returns></returns>
4859 <remarks> 4859 <remarks>
4860 Realms are used during HTTP Authentication 4860 Realms are used during HTTP Authentication
4861 </remarks> 4861 </remarks>
4862 <seealso cref="T:HttpServer.Authentication.AuthModule"/> 4862 <seealso cref="T:HttpServer.Authentication.AuthModule"/>
4863 <seealso cref="T:HttpServer.Authentication.AuthenticationHandler"/> 4863 <seealso cref="T:HttpServer.Authentication.AuthenticationHandler"/>
4864 </member> 4864 </member>
4865 <member name="T:HttpServer.HttpServer"> 4865 <member name="T:HttpServer.HttpServer">
4866 <summary> 4866 <summary>
4867 A complete HTTP server, you need to add a module to it to be able to handle incoming requests. 4867 A complete HTTP server, you need to add a module to it to be able to handle incoming requests.
4868 </summary> 4868 </summary>
4869 <example> 4869 <example>
4870 <code> 4870 <code>
4871 // this small example will add two web site modules, thus handling 4871 // this small example will add two web site modules, thus handling
4872 // two different sites. In reality you should add Controller modules or something 4872 // two different sites. In reality you should add Controller modules or something
4873 // two the website modules to be able to handle different requests. 4873 // two the website modules to be able to handle different requests.
4874 HttpServer server = new HttpServer(); 4874 HttpServer server = new HttpServer();
4875 server.Add(new WebSiteModule("www.gauffin.com", "Gauffin Telecom AB")); 4875 server.Add(new WebSiteModule("www.gauffin.com", "Gauffin Telecom AB"));
4876 server.Add(new WebSiteModule("www.vapadi.se", "Remote PBX")); 4876 server.Add(new WebSiteModule("www.vapadi.se", "Remote PBX"));
4877 4877
4878 // start regular http 4878 // start regular http
4879 server.Start(IPAddress.Any, 80); 4879 server.Start(IPAddress.Any, 80);
4880 4880
4881 // start https 4881 // start https
4882 server.Start(IPAddress.Any, 443, myCertificate); 4882 server.Start(IPAddress.Any, 443, myCertificate);
4883 </code> 4883 </code>
4884 </example> 4884 </example>
4885 <seealso cref="T:HttpServer.HttpModules.HttpModule"/> 4885 <seealso cref="T:HttpServer.HttpModules.HttpModule"/>
4886 <seealso cref="T:HttpServer.HttpModules.ControllerModule"/> 4886 <seealso cref="T:HttpServer.HttpModules.ControllerModule"/>
4887 <seealso cref="T:HttpServer.HttpModules.FileModule"/> 4887 <seealso cref="T:HttpServer.HttpModules.FileModule"/>
4888 <seealso cref="T:HttpServer.HttpListener"/> 4888 <seealso cref="T:HttpServer.HttpListener"/>
4889 </member> 4889 </member>
4890 <member name="M:HttpServer.HttpServer.#ctor"> 4890 <member name="M:HttpServer.HttpServer.#ctor">
4891 <summary> 4891 <summary>
4892 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4892 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4893 </summary> 4893 </summary>
4894 </member> 4894 </member>
4895 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider)"> 4895 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider)">
4896 <summary> 4896 <summary>
4897 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4897 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4898 </summary> 4898 </summary>
4899 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param> 4899 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
4900 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/> 4900 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
4901 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/> 4901 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
4902 </member> 4902 </member>
4903 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.Sessions.IHttpSessionStore)"> 4903 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.Sessions.IHttpSessionStore)">
4904 <summary> 4904 <summary>
4905 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4905 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4906 </summary> 4906 </summary>
4907 <param name="sessionStore">A session store is used to save and retrieve sessions</param> 4907 <param name="sessionStore">A session store is used to save and retrieve sessions</param>
4908 <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/> 4908 <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/>
4909 </member> 4909 </member>
4910 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.ILogWriter)"> 4910 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.ILogWriter)">
4911 <summary> 4911 <summary>
4912 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4912 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4913 </summary> 4913 </summary>
4914 <param name="logWriter">The log writer.</param> 4914 <param name="logWriter">The log writer.</param>
4915 <seealso cref="P:HttpServer.HttpServer.LogWriter"/> 4915 <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
4916 </member> 4916 </member>
4917 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.ILogWriter)"> 4917 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.ILogWriter)">
4918 <summary> 4918 <summary>
4919 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4919 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4920 </summary> 4920 </summary>
4921 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param> 4921 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
4922 <param name="logWriter">The log writer.</param> 4922 <param name="logWriter">The log writer.</param>
4923 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/> 4923 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
4924 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/> 4924 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
4925 <seealso cref="P:HttpServer.HttpServer.LogWriter"/> 4925 <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
4926 </member> 4926 </member>
4927 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.Sessions.IHttpSessionStore,HttpServer.ILogWriter)"> 4927 <member name="M:HttpServer.HttpServer.#ctor(HttpServer.FormDecoders.FormDecoderProvider,HttpServer.Sessions.IHttpSessionStore,HttpServer.ILogWriter)">
4928 <summary> 4928 <summary>
4929 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class. 4929 Initializes a new instance of the <see cref="T:HttpServer.HttpServer"/> class.
4930 </summary> 4930 </summary>
4931 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param> 4931 <param name="decoderProvider">Form decoders are used to convert different types of posted data to the <see cref="T:HttpServer.HttpInput"/> object types.</param>
4932 <param name="sessionStore">A session store is used to save and retrieve sessions</param> 4932 <param name="sessionStore">A session store is used to save and retrieve sessions</param>
4933 <param name="logWriter">The log writer.</param> 4933 <param name="logWriter">The log writer.</param>
4934 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/> 4934 <seealso cref="T:HttpServer.FormDecoders.IFormDecoder"/>
4935 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/> 4935 <seealso cref="P:HttpServer.HttpServer.FormDecoderProviders"/>
4936 <seealso cref="P:HttpServer.HttpServer.LogWriter"/> 4936 <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
4937 <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/> 4937 <seealso cref="T:HttpServer.Sessions.IHttpSessionStore"/>
4938 </member> 4938 </member>
4939 <member name="M:HttpServer.HttpServer.Add(HttpServer.Rules.RedirectRule)"> 4939 <member name="M:HttpServer.HttpServer.Add(HttpServer.Rules.RedirectRule)">
4940 <summary> 4940 <summary>
4941 Adds the specified rule. 4941 Adds the specified rule.
4942 </summary> 4942 </summary>
4943 <param name="rule">The rule.</param> 4943 <param name="rule">The rule.</param>
4944 </member> 4944 </member>
4945 <member name="M:HttpServer.HttpServer.Add(HttpServer.HttpModules.HttpModule)"> 4945 <member name="M:HttpServer.HttpServer.Add(HttpServer.HttpModules.HttpModule)">
4946 <summary> 4946 <summary>
4947 Add a <see cref="T:HttpServer.HttpModules.HttpModule"/> to the server. 4947 Add a <see cref="T:HttpServer.HttpModules.HttpModule"/> to the server.
4948 </summary> 4948 </summary>
4949 <param name="module">mode to add</param> 4949 <param name="module">mode to add</param>
4950 </member> 4950 </member>
4951 <member name="M:HttpServer.HttpServer.DecodeBody(HttpServer.IHttpRequest)"> 4951 <member name="M:HttpServer.HttpServer.DecodeBody(HttpServer.IHttpRequest)">
4952 <summary> 4952 <summary>
4953 Decodes the request body. 4953 Decodes the request body.
4954 </summary> 4954 </summary>
4955 <param name="request">The request.</param> 4955 <param name="request">The request.</param>
4956 </member> 4956 </member>
4957 <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,System.Net.HttpStatusCode,System.String)"> 4957 <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,System.Net.HttpStatusCode,System.String)">
4958 <summary> 4958 <summary>
4959 Generate a HTTP error page (that will be added to the response body). 4959 Generate a HTTP error page (that will be added to the response body).
4960 response status code is also set. 4960 response status code is also set.
4961 </summary> 4961 </summary>
4962 <param name="response">Response that the page will be generated in.</param> 4962 <param name="response">Response that the page will be generated in.</param>
4963 <param name="error"><see cref="T:System.Net.HttpStatusCode"/>.</param> 4963 <param name="error"><see cref="T:System.Net.HttpStatusCode"/>.</param>
4964 <param name="body">response body contents.</param> 4964 <param name="body">response body contents.</param>
4965 </member> 4965 </member>
4966 <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,HttpServer.Exceptions.HttpException)"> 4966 <member name="M:HttpServer.HttpServer.ErrorPage(HttpServer.IHttpResponse,HttpServer.Exceptions.HttpException)">
4967 <summary> 4967 <summary>
4968 Generate a HTTP error page (that will be added to the response body). 4968 Generate a HTTP error page (that will be added to the response body).
4969 response status code is also set. 4969 response status code is also set.
4970 </summary> 4970 </summary>
4971 <param name="response">Response that the page will be generated in.</param> 4971 <param name="response">Response that the page will be generated in.</param>
4972 <param name="err">exception.</param> 4972 <param name="err">exception.</param>
4973 </member> 4973 </member>
4974 <member name="M:HttpServer.HttpServer.GetRealm(HttpServer.IHttpRequest)"> 4974 <member name="M:HttpServer.HttpServer.GetRealm(HttpServer.IHttpRequest)">
4975 <summary> 4975 <summary>
4976 Realms are used by the <see cref="T:HttpServer.Authentication.AuthModule"/>s. 4976 Realms are used by the <see cref="T:HttpServer.Authentication.AuthModule"/>s.
4977 </summary> 4977 </summary>
4978 <param name="request">HTTP request</param> 4978 <param name="request">HTTP request</param>
4979 <returns>domain/realm.</returns> 4979 <returns>domain/realm.</returns>
4980 </member> 4980 </member>
4981 <member name="M:HttpServer.HttpServer.HandleRequest(HttpServer.IHttpClientContext,HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 4981 <member name="M:HttpServer.HttpServer.HandleRequest(HttpServer.IHttpClientContext,HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
4982 <summary> 4982 <summary>
4983 Process an incoming request. 4983 Process an incoming request.
4984 </summary> 4984 </summary>
4985 <param name="context">connection to client</param> 4985 <param name="context">connection to client</param>
4986 <param name="request">request information</param> 4986 <param name="request">request information</param>
4987 <param name="response">response that should be filled</param> 4987 <param name="response">response that should be filled</param>
4988 <param name="session">session information</param> 4988 <param name="session">session information</param>
4989 </member> 4989 </member>
4990 <member name="M:HttpServer.HttpServer.OnClientDisconnected(HttpServer.IHttpClientContext,System.Net.Sockets.SocketError)"> 4990 <member name="M:HttpServer.HttpServer.OnClientDisconnected(HttpServer.IHttpClientContext,System.Net.Sockets.SocketError)">
4991 <summary> 4991 <summary>
4992 Can be overloaded to implement stuff when a client have been connected. 4992 Can be overloaded to implement stuff when a client have been connected.
4993 </summary> 4993 </summary>
4994 <remarks> 4994 <remarks>
4995 Default implementation does nothing. 4995 Default implementation does nothing.
4996 </remarks> 4996 </remarks>
4997 <param name="client">client that disconnected</param> 4997 <param name="client">client that disconnected</param>
4998 <param name="error">disconnect reason</param> 4998 <param name="error">disconnect reason</param>
4999 </member> 4999 </member>
5000 <member name="M:HttpServer.HttpServer.ProcessAuthentication(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 5000 <member name="M:HttpServer.HttpServer.ProcessAuthentication(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
5001 <summary> 5001 <summary>
5002 Handle authentication 5002 Handle authentication
5003 </summary> 5003 </summary>
5004 <param name="request"></param> 5004 <param name="request"></param>
5005 <param name="response"></param> 5005 <param name="response"></param>
5006 <param name="session"></param> 5006 <param name="session"></param>
5007 <returns>true if request can be handled; false if not.</returns> 5007 <returns>true if request can be handled; false if not.</returns>
5008 </member> 5008 </member>
5009 <member name="M:HttpServer.HttpServer.RequestAuthentication(HttpServer.Authentication.AuthModule,HttpServer.IHttpRequest,HttpServer.IHttpResponse)"> 5009 <member name="M:HttpServer.HttpServer.RequestAuthentication(HttpServer.Authentication.AuthModule,HttpServer.IHttpRequest,HttpServer.IHttpResponse)">
5010 <summary> 5010 <summary>
5011 Will request authentication. 5011 Will request authentication.
5012 </summary> 5012 </summary>
5013 <remarks> 5013 <remarks>
5014 Sends respond to client, nothing else can be done with the response after this. 5014 Sends respond to client, nothing else can be done with the response after this.
5015 </remarks> 5015 </remarks>
5016 <param name="mod"></param> 5016 <param name="mod"></param>
5017 <param name="request"></param> 5017 <param name="request"></param>
5018 <param name="response"></param> 5018 <param name="response"></param>
5019 </member> 5019 </member>
5020 <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32)"> 5020 <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32)">
5021 <summary> 5021 <summary>
5022 Start the web server using regular HTTP. 5022 Start the web server using regular HTTP.
5023 </summary> 5023 </summary>
5024 <param name="address">IP Address to listen on, use IpAddress.Any to accept connections on all ip addresses/network cards.</param> 5024 <param name="address">IP Address to listen on, use IpAddress.Any to accept connections on all ip addresses/network cards.</param>
5025 <param name="port">Port to listen on. 80 can be a good idea =)</param> 5025 <param name="port">Port to listen on. 80 can be a good idea =)</param>
5026 </member> 5026 </member>
5027 <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)"> 5027 <member name="M:HttpServer.HttpServer.Start(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
5028 <summary> 5028 <summary>
5029 Accept secure connections. 5029 Accept secure connections.
5030 </summary> 5030 </summary>
5031 <param name="address">IP Address to listen on, use IpAddress.Any to accept connections on all ipaddresses/network cards.</param> 5031 <param name="address">IP Address to listen on, use IpAddress.Any to accept connections on all ipaddresses/network cards.</param>
5032 <param name="port">Port to listen on. 80 can be a good idea =)</param> 5032 <param name="port">Port to listen on. 80 can be a good idea =)</param>
5033 <param name="certificate">Certificate to use</param> 5033 <param name="certificate">Certificate to use</param>
5034 </member> 5034 </member>
5035 <member name="M:HttpServer.HttpServer.Stop"> 5035 <member name="M:HttpServer.HttpServer.Stop">
5036 <summary> 5036 <summary>
5037 shut down the server and listeners 5037 shut down the server and listeners
5038 </summary> 5038 </summary>
5039 </member> 5039 </member>
5040 <member name="M:HttpServer.HttpServer.WriteLog(HttpServer.LogPrio,System.String)"> 5040 <member name="M:HttpServer.HttpServer.WriteLog(HttpServer.LogPrio,System.String)">
5041 <summary> 5041 <summary>
5042 write an entry to the log file 5042 write an entry to the log file
5043 </summary> 5043 </summary>
5044 <param name="prio">importance of the message</param> 5044 <param name="prio">importance of the message</param>
5045 <param name="message">log message</param> 5045 <param name="message">log message</param>
5046 </member> 5046 </member>
5047 <member name="M:HttpServer.HttpServer.WriteLog(System.Object,HttpServer.LogPrio,System.String)"> 5047 <member name="M:HttpServer.HttpServer.WriteLog(System.Object,HttpServer.LogPrio,System.String)">
5048 <summary> 5048 <summary>
5049 write an entry to the log file 5049 write an entry to the log file
5050 </summary> 5050 </summary>
5051 <param name="source">object that wrote the message</param> 5051 <param name="source">object that wrote the message</param>
5052 <param name="prio">importance of the message</param> 5052 <param name="prio">importance of the message</param>
5053 <param name="message">log message</param> 5053 <param name="message">log message</param>
5054 </member> 5054 </member>
5055 <member name="P:HttpServer.HttpServer.AuthenticationModules"> 5055 <member name="P:HttpServer.HttpServer.AuthenticationModules">
5056 <summary> 5056 <summary>
5057 Modules used for authentication. The module that is is added first is used as 5057 Modules used for authentication. The module that is is added first is used as
5058 the default authentication module. 5058 the default authentication module.
5059 </summary> 5059 </summary>
5060 <remarks>Use the corresponding property 5060 <remarks>Use the corresponding property
5061 in the WebSiteModule if you are using multiple websites.</remarks> 5061 in the WebSiteModule if you are using multiple websites.</remarks>
5062 </member> 5062 </member>
5063 <member name="P:HttpServer.HttpServer.FormDecoderProviders"> 5063 <member name="P:HttpServer.HttpServer.FormDecoderProviders">
5064 <summary> 5064 <summary>
5065 Form decoder providers are used to decode request body (which normally contains form data). 5065 Form decoder providers are used to decode request body (which normally contains form data).
5066 </summary> 5066 </summary>
5067 </member> 5067 </member>
5068 <member name="P:HttpServer.HttpServer.ServerName"> 5068 <member name="P:HttpServer.HttpServer.ServerName">
5069 <summary> 5069 <summary>
5070 Server name sent in HTTP responses. 5070 Server name sent in HTTP responses.
5071 </summary> 5071 </summary>
5072 <remarks> 5072 <remarks>
5073 Do NOT include version in name, since it makes it 5073 Do NOT include version in name, since it makes it
5074 easier for hackers. 5074 easier for hackers.
5075 </remarks> 5075 </remarks>
5076 </member> 5076 </member>
5077 <member name="P:HttpServer.HttpServer.SessionCookieName"> 5077 <member name="P:HttpServer.HttpServer.SessionCookieName">
5078 <summary> 5078 <summary>
5079 Name of cookie where session id is stored. 5079 Name of cookie where session id is stored.
5080 </summary> 5080 </summary>
5081 </member> 5081 </member>
5082 <member name="P:HttpServer.HttpServer.LogWriter"> 5082 <member name="P:HttpServer.HttpServer.LogWriter">
5083 <summary> 5083 <summary>
5084 Specified where logging should go. 5084 Specified where logging should go.
5085 </summary> 5085 </summary>
5086 <seealso cref="T:HttpServer.NullLogWriter"/> 5086 <seealso cref="T:HttpServer.NullLogWriter"/>
5087 <seealso cref="T:HttpServer.ConsoleLogWriter"/> 5087 <seealso cref="T:HttpServer.ConsoleLogWriter"/>
5088 <seealso cref="P:HttpServer.HttpServer.LogWriter"/> 5088 <seealso cref="P:HttpServer.HttpServer.LogWriter"/>
5089 </member> 5089 </member>
5090 <member name="P:HttpServer.HttpServer.BackLog"> 5090 <member name="P:HttpServer.HttpServer.BackLog">
5091 <summary> 5091 <summary>
5092 Number of connections that can wait to be accepted by the server. 5092 Number of connections that can wait to be accepted by the server.
5093 </summary> 5093 </summary>
5094 <remarks>Default is 10.</remarks> 5094 <remarks>Default is 10.</remarks>
5095 </member> 5095 </member>
5096 <member name="E:HttpServer.HttpServer.RealmWanted"> 5096 <member name="E:HttpServer.HttpServer.RealmWanted">
5097 <summary> 5097 <summary>
5098 Realms are used during HTTP authentication. 5098 Realms are used during HTTP authentication.
5099 Default realm is same as server name. 5099 Default realm is same as server name.
5100 </summary> 5100 </summary>
5101 </member> 5101 </member>
5102 <member name="E:HttpServer.HttpServer.ExceptionThrown"> 5102 <member name="E:HttpServer.HttpServer.ExceptionThrown">
5103 <summary> 5103 <summary>
5104 Let's to receive unhandled exceptions from the threads. 5104 Let's to receive unhandled exceptions from the threads.
5105 </summary> 5105 </summary>
5106 <remarks> 5106 <remarks>
5107 Exceptions will be thrown during debug mode if this event is not used, 5107 Exceptions will be thrown during debug mode if this event is not used,
5108 exceptions will be printed to console and suppressed during release mode. 5108 exceptions will be printed to console and suppressed during release mode.
5109 </remarks> 5109 </remarks>
5110 </member> 5110 </member>
5111 <member name="T:HttpServer.Exceptions.UnauthorizedException"> 5111 <member name="T:HttpServer.Exceptions.UnauthorizedException">
5112 <summary> 5112 <summary>
5113 The request requires user authentication. The response MUST include a 5113 The request requires user authentication. The response MUST include a
5114 WWW-Authenticate header field (section 14.47) containing a challenge 5114 WWW-Authenticate header field (section 14.47) containing a challenge
5115 applicable to the requested resource. 5115 applicable to the requested resource.
5116 5116
5117 The client MAY repeat the request with a suitable Authorization header 5117 The client MAY repeat the request with a suitable Authorization header
5118 field (section 14.8). If the request already included Authorization 5118 field (section 14.8). If the request already included Authorization
5119 credentials, then the 401 response indicates that authorization has been 5119 credentials, then the 401 response indicates that authorization has been
5120 refused for those credentials. If the 401 response contains the same challenge 5120 refused for those credentials. If the 401 response contains the same challenge
5121 as the prior response, and the user agent has already attempted authentication 5121 as the prior response, and the user agent has already attempted authentication
5122 at least once, then the user SHOULD be presented the entity that was given in the response, 5122 at least once, then the user SHOULD be presented the entity that was given in the response,
5123 since that entity might include relevant diagnostic information. 5123 since that entity might include relevant diagnostic information.
5124 5124
5125 HTTP access authentication is explained in rfc2617: 5125 HTTP access authentication is explained in rfc2617:
5126 http://www.ietf.org/rfc/rfc2617.txt 5126 http://www.ietf.org/rfc/rfc2617.txt
5127 5127
5128 (description is taken from 5128 (description is taken from
5129 http://www.submissionchamber.com/help-guides/error-codes.php#sec10.4.2) 5129 http://www.submissionchamber.com/help-guides/error-codes.php#sec10.4.2)
5130 </summary> 5130 </summary>
5131 </member> 5131 </member>
5132 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor"> 5132 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor">
5133 <summary> 5133 <summary>
5134 Create a new unauhtorized exception. 5134 Create a new unauhtorized exception.
5135 </summary> 5135 </summary>
5136 <seealso cref="T:HttpServer.Exceptions.UnauthorizedException"/> 5136 <seealso cref="T:HttpServer.Exceptions.UnauthorizedException"/>
5137 </member> 5137 </member>
5138 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String,System.Exception)"> 5138 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String,System.Exception)">
5139 <summary> 5139 <summary>
5140 Create a new unauhtorized exception. 5140 Create a new unauhtorized exception.
5141 </summary> 5141 </summary>
5142 <param name="message">reason to why the request was unauthorized.</param> 5142 <param name="message">reason to why the request was unauthorized.</param>
5143 <param name="inner">inner exception</param> 5143 <param name="inner">inner exception</param>
5144 </member> 5144 </member>
5145 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String)"> 5145 <member name="M:HttpServer.Exceptions.UnauthorizedException.#ctor(System.String)">
5146 <summary> 5146 <summary>
5147 Create a new unauhtorized exception. 5147 Create a new unauhtorized exception.
5148 </summary> 5148 </summary>
5149 <param name="message">reason to why the request was unauthorized.</param> 5149 <param name="message">reason to why the request was unauthorized.</param>
5150 </member> 5150 </member>
5151 <member name="T:HttpServer.Rendering.Tiny.TinyGenerator"> 5151 <member name="T:HttpServer.Rendering.Tiny.TinyGenerator">
5152 <summary> 5152 <summary>
5153 Generates C# rendering object using ASP similiar tags in the HTML code. 5153 Generates C# rendering object using ASP similiar tags in the HTML code.
5154 </summary> 5154 </summary>
5155 </member> 5155 </member>
5156 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.GenerateCode(System.IO.TextWriter)"> 5156 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.GenerateCode(System.IO.TextWriter)">
5157 <summary> 5157 <summary>
5158 Generate C# code from the template. 5158 Generate C# code from the template.
5159 </summary> 5159 </summary>
5160 <param name="writer">A textwriter that the generated code will be written to.</param> 5160 <param name="writer">A textwriter that the generated code will be written to.</param>
5161 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception> 5161 <exception cref="T:System.InvalidOperationException">If the template have not been parsed first.</exception>
5162 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception> 5162 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If template is incorrect</exception>
5163 </member> 5163 </member>
5164 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.Parse(System.String)"> 5164 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.Parse(System.String)">
5165 <summary> 5165 <summary>
5166 Parse a file and convert into to our own template object code. 5166 Parse a file and convert into to our own template object code.
5167 </summary> 5167 </summary>
5168 <param name="fullPath">Path and filename to a template</param> 5168 <param name="fullPath">Path and filename to a template</param>
5169 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 5169 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
5170 <exception cref="T:System.IO.FileNotFoundException"></exception> 5170 <exception cref="T:System.IO.FileNotFoundException"></exception>
5171 <exception cref="T:System.IO.DirectoryNotFoundException"></exception> 5171 <exception cref="T:System.IO.DirectoryNotFoundException"></exception>
5172 <exception cref="T:System.UnauthorizedAccessException"></exception> 5172 <exception cref="T:System.UnauthorizedAccessException"></exception>
5173 <exception cref="T:System.IO.PathTooLongException"></exception> 5173 <exception cref="T:System.IO.PathTooLongException"></exception>
5174 <exception cref="T:System.NotSupportedException"></exception> 5174 <exception cref="T:System.NotSupportedException"></exception>
5175 </member> 5175 </member>
5176 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.Parse(System.IO.TextReader)"> 5176 <member name="M:HttpServer.Rendering.Tiny.TinyGenerator.Parse(System.IO.TextReader)">
5177 <summary> 5177 <summary>
5178 Parse a file and convert into to our own template object code. 5178 Parse a file and convert into to our own template object code.
5179 </summary> 5179 </summary>
5180 <param name="reader">A textreader containing our template</param> 5180 <param name="reader">A textreader containing our template</param>
5181 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception> 5181 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If something is incorrect in the template.</exception>
5182 </member> 5182 </member>
5183 <member name="T:HttpServer.Rendering.TemplateManager"> 5183 <member name="T:HttpServer.Rendering.TemplateManager">
5184 <summary> 5184 <summary>
5185 Purpose if this class is to take template objects and keep them in 5185 Purpose if this class is to take template objects and keep them in
5186 memory. It will also take a filename and the code generator to use 5186 memory. It will also take a filename and the code generator to use
5187 if when the template have been changed on disk. 5187 if when the template have been changed on disk.
5188 </summary> 5188 </summary>
5189 </member> 5189 </member>
5190 <member name="M:HttpServer.Rendering.TemplateManager.#ctor(HttpServer.Rendering.ITemplateLoader[])"> 5190 <member name="M:HttpServer.Rendering.TemplateManager.#ctor(HttpServer.Rendering.ITemplateLoader[])">
5191 <summary> 5191 <summary>
5192 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateManager"/> class. 5192 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateManager"/> class.
5193 </summary> 5193 </summary>
5194 <param name="loaders"> 5194 <param name="loaders">
5195 Template loaders used to load templates from any source. 5195 Template loaders used to load templates from any source.
5196 The loaders will be invoked in the order they are given, that is the first loader will always be asked to give a template 5196 The loaders will be invoked in the order they are given, that is the first loader will always be asked to give a template
5197 first. 5197 first.
5198 </param> 5198 </param>
5199 </member> 5199 </member>
5200 <member name="M:HttpServer.Rendering.TemplateManager.#ctor"> 5200 <member name="M:HttpServer.Rendering.TemplateManager.#ctor">
5201 <summary> 5201 <summary>
5202 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateManager"/> class. 5202 Initializes a new instance of the <see cref="T:HttpServer.Rendering.TemplateManager"/> class.
5203 </summary> 5203 </summary>
5204 <remarks>Uses the file template loader.</remarks> 5204 <remarks>Uses the file template loader.</remarks>
5205 </member> 5205 </member>
5206 <member name="M:HttpServer.Rendering.TemplateManager.Add(System.String,HttpServer.Rendering.ITemplateGenerator)"> 5206 <member name="M:HttpServer.Rendering.TemplateManager.Add(System.String,HttpServer.Rendering.ITemplateGenerator)">
5207 <summary> 5207 <summary>
5208 Add a template generator 5208 Add a template generator
5209 </summary> 5209 </summary>
5210 <param name="fileExtension">File extension without the dot.</param> 5210 <param name="fileExtension">File extension without the dot.</param>
5211 <param name="generator">Generator to handle the extension</param> 5211 <param name="generator">Generator to handle the extension</param>
5212 <exception cref="T:System.InvalidOperationException">If the generator already exists.</exception> 5212 <exception cref="T:System.InvalidOperationException">If the generator already exists.</exception>
5213 <exception cref="T:System.ArgumentException">If file extension is incorrect</exception> 5213 <exception cref="T:System.ArgumentException">If file extension is incorrect</exception>
5214 <exception cref="T:System.ArgumentNullException">If generator is not specified.</exception> 5214 <exception cref="T:System.ArgumentNullException">If generator is not specified.</exception>
5215 <example> 5215 <example>
5216 <code> 5216 <code>
5217 cache.Add("haml", new HamlGenerator()); 5217 cache.Add("haml", new HamlGenerator());
5218 </code> 5218 </code>
5219 </example> 5219 </example>
5220 </member> 5220 </member>
5221 <member name="M:HttpServer.Rendering.TemplateManager.AddType(System.Type)"> 5221 <member name="M:HttpServer.Rendering.TemplateManager.AddType(System.Type)">
5222 <summary> 5222 <summary>
5223 This type should be included, so it may be called from the scripts (name space and assembly). 5223 This type should be included, so it may be called from the scripts (name space and assembly).
5224 </summary> 5224 </summary>
5225 <param name="type"></param> 5225 <param name="type"></param>
5226 </member> 5226 </member>
5227 <member name="M:HttpServer.Rendering.TemplateManager.CheckTemplate(HttpServer.Rendering.ITemplateInfo)"> 5227 <member name="M:HttpServer.Rendering.TemplateManager.CheckTemplate(HttpServer.Rendering.ITemplateInfo)">
5228 <summary> 5228 <summary>
5229 Checks the template. 5229 Checks the template.
5230 </summary> 5230 </summary>
5231 <param name="info">Template information, filename must be set.</param> 5231 <param name="info">Template information, filename must be set.</param>
5232 <returns>true if template exists and have been compiled.</returns> 5232 <returns>true if template exists and have been compiled.</returns>
5233 </member> 5233 </member>
5234 <member name="M:HttpServer.Rendering.TemplateManager.Compile(System.String,System.String,HttpServer.Rendering.TemplateArguments,System.String)"> 5234 <member name="M:HttpServer.Rendering.TemplateManager.Compile(System.String,System.String,HttpServer.Rendering.TemplateArguments,System.String)">
5235 <summary> 5235 <summary>
5236 Compiles the specified code. 5236 Compiles the specified code.
5237 </summary> 5237 </summary>
5238 <param name="fileName">Name of template.</param> 5238 <param name="fileName">Name of template.</param>
5239 <param name="code">c# code generated from a template.</param> 5239 <param name="code">c# code generated from a template.</param>
5240 <param name="arguments">Arguments as in name, value, name, value, name, value</param> 5240 <param name="arguments">Arguments as in name, value, name, value, name, value</param>
5241 <param name="templateId"> 5241 <param name="templateId">
5242 An id to specify the exact instance of a template. Made from joining the 'TemplateClass' with the hashcode of the filename 5242 An id to specify the exact instance of a template. Made from joining the 'TemplateClass' with the hashcode of the filename
5243 and the hashcode of the supplied arguments 5243 and the hashcode of the supplied arguments
5244 </param> 5244 </param>
5245 <returns>Template</returns> 5245 <returns>Template</returns>
5246 <exception cref="T:HttpServer.Rendering.TemplateException">If compilation fails</exception> 5246 <exception cref="T:HttpServer.Rendering.TemplateException">If compilation fails</exception>
5247 </member> 5247 </member>
5248 <member name="M:HttpServer.Rendering.TemplateManager.GenerateCode(System.String@)"> 5248 <member name="M:HttpServer.Rendering.TemplateManager.GenerateCode(System.String@)">
5249 <summary> 5249 <summary>
5250 Will generate code from the template. 5250 Will generate code from the template.
5251 Next step is to compile the code. 5251 Next step is to compile the code.
5252 </summary> 5252 </summary>
5253 <param name="path">Path and filename to template.</param> 5253 <param name="path">Path and filename to template.</param>
5254 <exception cref="T:System.ArgumentException"></exception> 5254 <exception cref="T:System.ArgumentException"></exception>
5255 <exception cref="T:System.InvalidOperationException">If no template generator exists for the specified extension.</exception> 5255 <exception cref="T:System.InvalidOperationException">If no template generator exists for the specified extension.</exception>
5256 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If parsing/compiling fails</exception> 5256 <exception cref="T:HttpServer.Rendering.CodeGeneratorException">If parsing/compiling fails</exception>
5257 <see cref="M:HttpServer.Rendering.TemplateManager.Render(System.String,HttpServer.Rendering.TemplateArguments)"/> 5257 <see cref="M:HttpServer.Rendering.TemplateManager.Render(System.String,HttpServer.Rendering.TemplateArguments)"/>
5258 </member> 5258 </member>
5259 <member name="M:HttpServer.Rendering.TemplateManager.GetGeneratorForWildCard(System.String@)"> 5259 <member name="M:HttpServer.Rendering.TemplateManager.GetGeneratorForWildCard(System.String@)">
5260 <summary> 5260 <summary>
5261 Find a template using wildcards in filename. 5261 Find a template using wildcards in filename.
5262 </summary> 5262 </summary>
5263 <param name="filePath">Full path (including wildcards in filename) to where we should find a template.</param> 5263 <param name="filePath">Full path (including wildcards in filename) to where we should find a template.</param>
5264 <returns>First found generator if an extension was matched; otherwise null.</returns> 5264 <returns>First found generator if an extension was matched; otherwise null.</returns>
5265 <remarks>method is not thread safe</remarks> 5265 <remarks>method is not thread safe</remarks>
5266 </member> 5266 </member>
5267 <member name="M:HttpServer.Rendering.TemplateManager.RenderPartial(System.String,HttpServer.Rendering.TemplateArguments,HttpServer.Rendering.TemplateArguments)"> 5267 <member name="M:HttpServer.Rendering.TemplateManager.RenderPartial(System.String,HttpServer.Rendering.TemplateArguments,HttpServer.Rendering.TemplateArguments)">
5268 <summary> 5268 <summary>
5269 Render a partial 5269 Render a partial
5270 </summary> 5270 </summary>
5271 <param name="filename">Path and filename</param> 5271 <param name="filename">Path and filename</param>
5272 <param name="args">Variables used in the template. Should be specified as "name, value, name, value" where name is variable name and value is variable contents.</param> 5272 <param name="args">Variables used in the template. Should be specified as "name, value, name, value" where name is variable name and value is variable contents.</param>
5273 <param name="arguments">Arguments passed from parent template</param> 5273 <param name="arguments">Arguments passed from parent template</param>
5274 <returns></returns> 5274 <returns></returns>
5275 <exception cref="T:System.InvalidOperationException"></exception> 5275 <exception cref="T:System.InvalidOperationException"></exception>
5276 <exception cref="T:HttpServer.Rendering.TemplateException"></exception> 5276 <exception cref="T:HttpServer.Rendering.TemplateException"></exception>
5277 <exception cref="T:System.ArgumentException"></exception> 5277 <exception cref="T:System.ArgumentException"></exception>
5278 </member> 5278 </member>
5279 <member name="M:HttpServer.Rendering.TemplateManager.Render(System.String,HttpServer.Rendering.TemplateArguments)"> 5279 <member name="M:HttpServer.Rendering.TemplateManager.Render(System.String,HttpServer.Rendering.TemplateArguments)">
5280 <summary> 5280 <summary>
5281 Generate HTML from a template. 5281 Generate HTML from a template.
5282 </summary> 5282 </summary>
5283 <param name="filename">Path and filename</param> 5283 <param name="filename">Path and filename</param>
5284 <param name="args">Variables used in the template. Should be specified as "name, value, name, value" where name is variable name and value is variable contents.</param> 5284 <param name="args">Variables used in the template. Should be specified as "name, value, name, value" where name is variable name and value is variable contents.</param>
5285 <exception cref="T:System.InvalidOperationException"></exception> 5285 <exception cref="T:System.InvalidOperationException"></exception>
5286 <exception cref="T:Fadd.CompilerException"></exception> 5286 <exception cref="T:Fadd.CompilerException"></exception>
5287 <exception cref="T:System.ArgumentException"></exception> 5287 <exception cref="T:System.ArgumentException"></exception>
5288 <example> 5288 <example>
5289 <code> 5289 <code>
5290 string html = cache.Generate("views\\users\\view.haml", new TemplateArguments("user", dbUser, "isAdmin", dbUser.IsAdmin), null); 5290 string html = cache.Generate("views\\users\\view.haml", new TemplateArguments("user", dbUser, "isAdmin", dbUser.IsAdmin), null);
5291 </code> 5291 </code>
5292 </example> 5292 </example>
5293 </member> 5293 </member>
5294 <member name="T:HttpServer.Rendering.TemplateManager.TemplateInfoImp"> 5294 <member name="T:HttpServer.Rendering.TemplateManager.TemplateInfoImp">
5295 <summary> 5295 <summary>
5296 Keeps information about templates, so we know when to regenerate it. 5296 Keeps information about templates, so we know when to regenerate it.
5297 </summary> 5297 </summary>
5298 </member> 5298 </member>
5299 <member name="T:HttpServer.Rendering.ResourceInfo"> 5299 <member name="T:HttpServer.Rendering.ResourceInfo">
5300 <summary> 5300 <summary>
5301 Container to bind resource names to assemblies 5301 Container to bind resource names to assemblies
5302 </summary> 5302 </summary>
5303 </member> 5303 </member>
5304 <member name="M:HttpServer.Rendering.ResourceInfo.#ctor(System.String,System.Reflection.Assembly)"> 5304 <member name="M:HttpServer.Rendering.ResourceInfo.#ctor(System.String,System.Reflection.Assembly)">
5305 <summary> 5305 <summary>
5306 Instantiates an instance of <see cref="T:HttpServer.Rendering.ResourceInfo"/> 5306 Instantiates an instance of <see cref="T:HttpServer.Rendering.ResourceInfo"/>
5307 </summary> 5307 </summary>
5308 <param name="fullname">The full name/path of the resource</param> 5308 <param name="fullname">The full name/path of the resource</param>
5309 <param name="assembly">The assembly the resource exists in</param> 5309 <param name="assembly">The assembly the resource exists in</param>
5310 </member> 5310 </member>
5311 <member name="M:HttpServer.Rendering.ResourceInfo.GetStream"> 5311 <member name="M:HttpServer.Rendering.ResourceInfo.GetStream">
5312 <summary> 5312 <summary>
5313 Retrieves a stream to the resouce 5313 Retrieves a stream to the resouce
5314 </summary> 5314 </summary>
5315 <returns>Null if the resource couldn't be located somehow</returns> 5315 <returns>Null if the resource couldn't be located somehow</returns>
5316 </member> 5316 </member>
5317 <member name="P:HttpServer.Rendering.ResourceInfo.Assembly"> 5317 <member name="P:HttpServer.Rendering.ResourceInfo.Assembly">
5318 <summary> 5318 <summary>
5319 Retrieves the assembly the resource resides in 5319 Retrieves the assembly the resource resides in
5320 </summary> 5320 </summary>
5321 </member> 5321 </member>
5322 <member name="P:HttpServer.Rendering.ResourceInfo.Name"> 5322 <member name="P:HttpServer.Rendering.ResourceInfo.Name">
5323 <summary> 5323 <summary>
5324 Retrieves the full name/path of the assembly 5324 Retrieves the full name/path of the assembly
5325 </summary> 5325 </summary>
5326 </member> 5326 </member>
5327 <member name="P:HttpServer.Rendering.ResourceInfo.Extension"> 5327 <member name="P:HttpServer.Rendering.ResourceInfo.Extension">
5328 <summary> 5328 <summary>
5329 Retrieves the extension of the resource 5329 Retrieves the extension of the resource
5330 </summary> 5330 </summary>
5331 </member> 5331 </member>
5332 <member name="T:HttpServer.Rendering.FileTemplateLoader"> 5332 <member name="T:HttpServer.Rendering.FileTemplateLoader">
5333 <summary> 5333 <summary>
5334 This template loader loads all templates from a folder on the hard drive. 5334 This template loader loads all templates from a folder on the hard drive.
5335 </summary> 5335 </summary>
5336 </member> 5336 </member>
5337 <member name="M:HttpServer.Rendering.FileTemplateLoader.#ctor(System.String)"> 5337 <member name="M:HttpServer.Rendering.FileTemplateLoader.#ctor(System.String)">
5338 <summary> 5338 <summary>
5339 Initializes a new instance of the <see cref="T:HttpServer.Rendering.FileTemplateLoader"/> class. 5339 Initializes a new instance of the <see cref="T:HttpServer.Rendering.FileTemplateLoader"/> class.
5340 </summary> 5340 </summary>
5341 <param name="pathPrefix">A prefix that is prepended to all requested files.</param> 5341 <param name="pathPrefix">A prefix that is prepended to all requested files.</param>
5342 <seealso cref="P:HttpServer.Rendering.FileTemplateLoader.PathPrefix"/> 5342 <seealso cref="P:HttpServer.Rendering.FileTemplateLoader.PathPrefix"/>
5343 </member> 5343 </member>
5344 <member name="M:HttpServer.Rendering.FileTemplateLoader.#ctor"> 5344 <member name="M:HttpServer.Rendering.FileTemplateLoader.#ctor">
5345 <summary> 5345 <summary>
5346 Initializes a new instance of the <see cref="T:HttpServer.Rendering.FileTemplateLoader"/> class. 5346 Initializes a new instance of the <see cref="T:HttpServer.Rendering.FileTemplateLoader"/> class.
5347 </summary> 5347 </summary>
5348 </member> 5348 </member>
5349 <member name="M:HttpServer.Rendering.FileTemplateLoader.LoadTemplate(System.String)"> 5349 <member name="M:HttpServer.Rendering.FileTemplateLoader.LoadTemplate(System.String)">
5350 <summary> 5350 <summary>
5351 Load a template into a <see cref="T:System.IO.TextReader"/> and return it. 5351 Load a template into a <see cref="T:System.IO.TextReader"/> and return it.
5352 </summary> 5352 </summary>
5353 <param name="path">Relative path (and filename) to template.</param> 5353 <param name="path">Relative path (and filename) to template.</param>
5354 <returns> 5354 <returns>
5355 a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null. 5355 a <see cref="T:System.IO.TextReader"/> if file was found; otherwise null.
5356 </returns> 5356 </returns>
5357 </member> 5357 </member>
5358 <member name="M:HttpServer.Rendering.FileTemplateLoader.GetFiles(System.String,System.String)"> 5358 <member name="M:HttpServer.Rendering.FileTemplateLoader.GetFiles(System.String,System.String)">
5359 <summary> 5359 <summary>
5360 Fetch all files from the resource that matches the specified arguments. 5360 Fetch all files from the resource that matches the specified arguments.
5361 </summary> 5361 </summary>
5362 <param name="path">Where the file should reside.</param> 5362 <param name="path">Where the file should reside.</param>
5363 <param name="filename">Files to check</param> 5363 <param name="filename">Files to check</param>
5364 <returns> 5364 <returns>
5365 a list of files if found; or an empty array if no files are found. 5365 a list of files if found; or an empty array if no files are found.
5366 </returns> 5366 </returns>
5367 </member> 5367 </member>
5368 <member name="M:HttpServer.Rendering.FileTemplateLoader.HasTemplate(System.String)"> 5368 <member name="M:HttpServer.Rendering.FileTemplateLoader.HasTemplate(System.String)">
5369 <summary> 5369 <summary>
5370 Returns whether or not the loader has an instance of the file requested 5370 Returns whether or not the loader has an instance of the file requested
5371 </summary> 5371 </summary>
5372 <param name="filename">The name of the template/file</param> 5372 <param name="filename">The name of the template/file</param>
5373 <returns>True if the loader can provide the file</returns> 5373 <returns>True if the loader can provide the file</returns>
5374 </member> 5374 </member>
5375 <member name="M:HttpServer.Rendering.FileTemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)"> 5375 <member name="M:HttpServer.Rendering.FileTemplateLoader.CheckTemplate(HttpServer.Rendering.ITemplateInfo)">
5376 <summary> 5376 <summary>
5377 Check's whether a template should be reloaded or not. 5377 Check's whether a template should be reloaded or not.
5378 </summary> 5378 </summary>
5379 <param name="info">template information</param> 5379 <param name="info">template information</param>
5380 <returns> 5380 <returns>
5381 true if template is OK; false if it do not exist or are old. 5381 true if template is OK; false if it do not exist or are old.
5382 </returns> 5382 </returns>
5383 </member> 5383 </member>
5384 <member name="P:HttpServer.Rendering.FileTemplateLoader.PathPrefix"> 5384 <member name="P:HttpServer.Rendering.FileTemplateLoader.PathPrefix">
5385 <summary> 5385 <summary>
5386 A prefix that is prepended to all requested files. 5386 A prefix that is prepended to all requested files.
5387 </summary> 5387 </summary>
5388 <example> 5388 <example>
5389 <code> 5389 <code>
5390 <![CDATA[ 5390 <![CDATA[
5391 // will look after template in Environment.CurrentDirectory + "views\\<ControllerName>\\templateName.*" 5391 // will look after template in Environment.CurrentDirectory + "views\\<ControllerName>\\templateName.*"
5392 mgr.PathPrefix = "views\\"; 5392 mgr.PathPrefix = "views\\";
5393 ]]> 5393 ]]>
5394 </code> 5394 </code>
5395 </example> 5395 </example>
5396 <remarks>PathPrefix may not be null, only string.Empty 5396 <remarks>PathPrefix may not be null, only string.Empty
5397 </remarks> 5397 </remarks>
5398 </member> 5398 </member>
5399 <member name="T:HttpServer.Helpers.XmlHelper"> 5399 <member name="T:HttpServer.Helpers.XmlHelper">
5400 <summary> 5400 <summary>
5401 Helpers to make XML handling easier 5401 Helpers to make XML handling easier
5402 </summary> 5402 </summary>
5403 </member> 5403 </member>
5404 <member name="M:HttpServer.Helpers.XmlHelper.Serialize(System.Object)"> 5404 <member name="M:HttpServer.Helpers.XmlHelper.Serialize(System.Object)">
5405 <summary> 5405 <summary>
5406 Serializes object to XML. 5406 Serializes object to XML.
5407 </summary> 5407 </summary>
5408 <param name="value">object to serialize.</param> 5408 <param name="value">object to serialize.</param>
5409 <returns>xml</returns> 5409 <returns>xml</returns>
5410 <remarks> 5410 <remarks>
5411 Removes namespaces and adds intendation 5411 Removes namespaces and adds intendation
5412 </remarks> 5412 </remarks>
5413 </member> 5413 </member>
5414 <member name="T:HttpServer.IHttpResponse"> 5414 <member name="T:HttpServer.IHttpResponse">
5415 <summary> 5415 <summary>
5416 Response that is sent back to the web browser / client. 5416 Response that is sent back to the web browser / client.
5417 5417
5418 A response can be sent if different ways. The easiest one is 5418 A response can be sent if different ways. The easiest one is
5419 to just fill the Body stream with content, everything else 5419 to just fill the Body stream with content, everything else
5420 will then be taken care of by the framework. The default content-type 5420 will then be taken care of by the framework. The default content-type
5421 is text/html, you should change it if you send anything else. 5421 is text/html, you should change it if you send anything else.
5422 5422
5423 The second and slighty more complex way is to send the response 5423 The second and slighty more complex way is to send the response
5424 as parts. Start with sending the header using the SendHeaders method and 5424 as parts. Start with sending the header using the SendHeaders method and
5425 then you can send the body using SendBody method, but do not forget 5425 then you can send the body using SendBody method, but do not forget
5426 to set ContentType and ContentLength before doing so. 5426 to set ContentType and ContentLength before doing so.
5427 </summary> 5427 </summary>
5428 <example> 5428 <example>
5429 public void MyHandler(IHttpRequest request, IHttpResponse response) 5429 public void MyHandler(IHttpRequest request, IHttpResponse response)
5430 { 5430 {
5431 5431
5432 } 5432 }
5433 </example> 5433 </example>
5434 </member> 5434 </member>
5435 <member name="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)"> 5435 <member name="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)">
5436 <summary> 5436 <summary>
5437 Add another header to the document. 5437 Add another header to the document.
5438 </summary> 5438 </summary>
5439 <param name="name">Name of the header, case sensitive, use lower cases.</param> 5439 <param name="name">Name of the header, case sensitive, use lower cases.</param>
5440 <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param> 5440 <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param>
5441 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 5441 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
5442 <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception> 5442 <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception>
5443 <remarks>Adding any header will override the default ones and those specified by properties.</remarks> 5443 <remarks>Adding any header will override the default ones and those specified by properties.</remarks>
5444 </member> 5444 </member>
5445 <member name="M:HttpServer.IHttpResponse.Send"> 5445 <member name="M:HttpServer.IHttpResponse.Send">
5446 <summary> 5446 <summary>
5447 Send headers and body to the browser. 5447 Send headers and body to the browser.
5448 </summary> 5448 </summary>
5449 <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception> 5449 <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception>
5450 </member> 5450 </member>
5451 <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)"> 5451 <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)">
5452 <summary> 5452 <summary>
5453 Make sure that you have specified ContentLength and sent the headers first. 5453 Make sure that you have specified ContentLength and sent the headers first.
5454 </summary> 5454 </summary>
5455 <param name="buffer"></param> 5455 <param name="buffer"></param>
5456 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception> 5456 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
5457 <see cref="M:HttpServer.IHttpResponse.SendHeaders"/> 5457 <see cref="M:HttpServer.IHttpResponse.SendHeaders"/>
5458 <param name="offset">offest of first byte to send</param> 5458 <param name="offset">offest of first byte to send</param>
5459 <param name="count">number of bytes to send.</param> 5459 <param name="count">number of bytes to send.</param>
5460 <seealso cref="M:HttpServer.IHttpResponse.Send"/> 5460 <seealso cref="M:HttpServer.IHttpResponse.Send"/>
5461 <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/> 5461 <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/>
5462 <remarks>This method can be used if you want to send body contents without caching them first. This 5462 <remarks>This method can be used if you want to send body contents without caching them first. This
5463 is recommended for larger files to keep the memory usage low.</remarks> 5463 is recommended for larger files to keep the memory usage low.</remarks>
5464 </member> 5464 </member>
5465 <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[])"> 5465 <member name="M:HttpServer.IHttpResponse.SendBody(System.Byte[])">
5466 <summary> 5466 <summary>
5467 Make sure that you have specified ContentLength and sent the headers first. 5467 Make sure that you have specified ContentLength and sent the headers first.
5468 </summary> 5468 </summary>
5469 <param name="buffer"></param> 5469 <param name="buffer"></param>
5470 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception> 5470 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
5471 <see cref="M:HttpServer.IHttpResponse.SendHeaders"/> 5471 <see cref="M:HttpServer.IHttpResponse.SendHeaders"/>
5472 <seealso cref="M:HttpServer.IHttpResponse.Send"/> 5472 <seealso cref="M:HttpServer.IHttpResponse.Send"/>
5473 <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/> 5473 <seealso cref="M:HttpServer.IHttpResponse.SendHeaders"/>
5474 <remarks>This method can be used if you want to send body contents without caching them first. This 5474 <remarks>This method can be used if you want to send body contents without caching them first. This
5475 is recommended for larger files to keep the memory usage low.</remarks> 5475 is recommended for larger files to keep the memory usage low.</remarks>
5476 </member> 5476 </member>
5477 <member name="M:HttpServer.IHttpResponse.SendHeaders"> 5477 <member name="M:HttpServer.IHttpResponse.SendHeaders">
5478 <summary> 5478 <summary>
5479 Send headers to the client. 5479 Send headers to the client.
5480 </summary> 5480 </summary>
5481 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 5481 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
5482 <seealso cref="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)"/> 5482 <seealso cref="M:HttpServer.IHttpResponse.AddHeader(System.String,System.String)"/>
5483 <seealso cref="M:HttpServer.IHttpResponse.Send"/> 5483 <seealso cref="M:HttpServer.IHttpResponse.Send"/>
5484 <seealso cref="M:HttpServer.IHttpResponse.SendBody(System.Byte[])"/> 5484 <seealso cref="M:HttpServer.IHttpResponse.SendBody(System.Byte[])"/>
5485 </member> 5485 </member>
5486 <member name="M:HttpServer.IHttpResponse.Redirect(System.Uri)"> 5486 <member name="M:HttpServer.IHttpResponse.Redirect(System.Uri)">
5487 <summary> 5487 <summary>
5488 Redirect client to somewhere else using the 302 status code. 5488 Redirect client to somewhere else using the 302 status code.
5489 </summary> 5489 </summary>
5490 <param name="uri">Destination of the redirect</param> 5490 <param name="uri">Destination of the redirect</param>
5491 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 5491 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
5492 <remarks>You can not do anything more with the request when a redirect have been done. This should be your last 5492 <remarks>You can not do anything more with the request when a redirect have been done. This should be your last
5493 action.</remarks> 5493 action.</remarks>
5494 </member> 5494 </member>
5495 <member name="M:HttpServer.IHttpResponse.Redirect(System.String)"> 5495 <member name="M:HttpServer.IHttpResponse.Redirect(System.String)">
5496 <summary> 5496 <summary>
5497 redirect to somewhere 5497 redirect to somewhere
5498 </summary> 5498 </summary>
5499 <param name="url">where the redirect should go</param> 5499 <param name="url">where the redirect should go</param>
5500 <remarks> 5500 <remarks>
5501 No body are allowed when doing redirects. 5501 No body are allowed when doing redirects.
5502 </remarks> 5502 </remarks>
5503 </member> 5503 </member>
5504 <member name="P:HttpServer.IHttpResponse.Body"> 5504 <member name="P:HttpServer.IHttpResponse.Body">
5505 <summary> 5505 <summary>
5506 The body stream is used to cache the body contents 5506 The body stream is used to cache the body contents
5507 before sending everything to the client. It's the simplest 5507 before sending everything to the client. It's the simplest
5508 way to serve documents. 5508 way to serve documents.
5509 </summary> 5509 </summary>
5510 </member> 5510 </member>
5511 <member name="P:HttpServer.IHttpResponse.Chunked"> 5511 <member name="P:HttpServer.IHttpResponse.Chunked">
5512 <summary> 5512 <summary>
5513 The chunked encoding modifies the body of a message in order to 5513 The chunked encoding modifies the body of a message in order to
5514 transfer it as a series of chunks, each with its own size indicator, 5514 transfer it as a series of chunks, each with its own size indicator,
5515 followed by an OPTIONAL trailer containing entity-header fields. This 5515 followed by an OPTIONAL trailer containing entity-header fields. This
5516 allows dynamically produced content to be transferred along with the 5516 allows dynamically produced content to be transferred along with the
5517 information necessary for the recipient to verify that it has 5517 information necessary for the recipient to verify that it has
5518 received the full message. 5518 received the full message.
5519 </summary> 5519 </summary>
5520 </member> 5520 </member>
5521 <member name="P:HttpServer.IHttpResponse.Connection"> 5521 <member name="P:HttpServer.IHttpResponse.Connection">
5522 <summary> 5522 <summary>
5523 Kind of connection 5523 Kind of connection
5524 </summary> 5524 </summary>
5525 </member> 5525 </member>
5526 <member name="P:HttpServer.IHttpResponse.Encoding"> 5526 <member name="P:HttpServer.IHttpResponse.Encoding">
5527 <summary> 5527 <summary>
5528 Encoding to use when sending stuff to the client. 5528 Encoding to use when sending stuff to the client.
5529 </summary> 5529 </summary>
5530 <remarks>Default is UTF8</remarks> 5530 <remarks>Default is UTF8</remarks>
5531 </member> 5531 </member>
5532 <member name="P:HttpServer.IHttpResponse.KeepAlive"> 5532 <member name="P:HttpServer.IHttpResponse.KeepAlive">
5533 <summary> 5533 <summary>
5534 Number of seconds to keep connection alive 5534 Number of seconds to keep connection alive
5535 </summary> 5535 </summary>
5536 <remarks>Only used if Connection property is set to ConnectionType.KeepAlive</remarks> 5536 <remarks>Only used if Connection property is set to ConnectionType.KeepAlive</remarks>
5537 </member> 5537 </member>
5538 <member name="P:HttpServer.IHttpResponse.Status"> 5538 <member name="P:HttpServer.IHttpResponse.Status">
5539 <summary> 5539 <summary>
5540 Status code that is sent to the client. 5540 Status code that is sent to the client.
5541 </summary> 5541 </summary>
5542 <remarks>Default is HttpStatusCode.Ok</remarks> 5542 <remarks>Default is HttpStatusCode.Ok</remarks>
5543 </member> 5543 </member>
5544 <member name="P:HttpServer.IHttpResponse.Reason"> 5544 <member name="P:HttpServer.IHttpResponse.Reason">
5545 <summary> 5545 <summary>
5546 Information about why a specific status code was used. 5546 Information about why a specific status code was used.
5547 </summary> 5547 </summary>
5548 </member> 5548 </member>
5549 <member name="P:HttpServer.IHttpResponse.ContentLength"> 5549 <member name="P:HttpServer.IHttpResponse.ContentLength">
5550 <summary> 5550 <summary>
5551 Size of the body. MUST be specified before sending the header, 5551 Size of the body. MUST be specified before sending the header,
5552 unless property Chunked is set to true. 5552 unless property Chunked is set to true.
5553 </summary> 5553 </summary>
5554 </member> 5554 </member>
5555 <member name="P:HttpServer.IHttpResponse.ContentType"> 5555 <member name="P:HttpServer.IHttpResponse.ContentType">
5556 <summary> 5556 <summary>
5557 Kind of content in the body 5557 Kind of content in the body
5558 </summary> 5558 </summary>
5559 <remarks>Default is text/html</remarks> 5559 <remarks>Default is text/html</remarks>
5560 </member> 5560 </member>
5561 <member name="P:HttpServer.IHttpResponse.HeadersSent"> 5561 <member name="P:HttpServer.IHttpResponse.HeadersSent">
5562 <summary> 5562 <summary>
5563 Headers have been sent to the client- 5563 Headers have been sent to the client-
5564 </summary> 5564 </summary>
5565 <remarks>You can not send any additional headers if they have already been sent.</remarks> 5565 <remarks>You can not send any additional headers if they have already been sent.</remarks>
5566 </member> 5566 </member>
5567 <member name="P:HttpServer.IHttpResponse.Sent"> 5567 <member name="P:HttpServer.IHttpResponse.Sent">
5568 <summary> 5568 <summary>
5569 The whole response have been sent. 5569 The whole response have been sent.
5570 </summary> 5570 </summary>
5571 </member> 5571 </member>
5572 <member name="P:HttpServer.IHttpResponse.Cookies"> 5572 <member name="P:HttpServer.IHttpResponse.Cookies">
5573 <summary> 5573 <summary>
5574 Cookies that should be created/changed. 5574 Cookies that should be created/changed.
5575 </summary> 5575 </summary>
5576 </member> 5576 </member>
5577 <member name="T:HttpServer.ConnectionType"> 5577 <member name="T:HttpServer.ConnectionType">
5578 <summary> 5578 <summary>
5579 Type of HTTP connection 5579 Type of HTTP connection
5580 </summary> 5580 </summary>
5581 </member> 5581 </member>
5582 <member name="F:HttpServer.ConnectionType.Close"> 5582 <member name="F:HttpServer.ConnectionType.Close">
5583 <summary> 5583 <summary>
5584 Connection is closed after each request-response 5584 Connection is closed after each request-response
5585 </summary> 5585 </summary>
5586 </member> 5586 </member>
5587 <member name="F:HttpServer.ConnectionType.KeepAlive"> 5587 <member name="F:HttpServer.ConnectionType.KeepAlive">
5588 <summary> 5588 <summary>
5589 Connection is kept alive for X seconds (unless another request have been made) 5589 Connection is kept alive for X seconds (unless another request have been made)
5590 </summary> 5590 </summary>
5591 </member> 5591 </member>
5592 <member name="T:HttpServer.HttpInputItem"> 5592 <member name="T:HttpServer.HttpInputItem">
5593 <summary> 5593 <summary>
5594 represents a http input item. Each item can have multiple sub items, a sub item 5594 represents a http input item. Each item can have multiple sub items, a sub item
5595 is made in a html form by using square brackets 5595 is made in a html form by using square brackets
5596 </summary> 5596 </summary>
5597 <example> 5597 <example>
5598 // <input type="text" name="user[FirstName]" value="jonas" /> becomes: 5598 // <input type="text" name="user[FirstName]" value="jonas" /> becomes:
5599 Console.WriteLine("Value: {0}", form["user"]["FirstName"].Value); 5599 Console.WriteLine("Value: {0}", form["user"]["FirstName"].Value);
5600 </example> 5600 </example>
5601 <remarks> 5601 <remarks>
5602 All names in a form SHOULD be in lowercase. 5602 All names in a form SHOULD be in lowercase.
5603 </remarks> 5603 </remarks>
5604 </member> 5604 </member>
5605 <member name="F:HttpServer.HttpInputItem.Empty"> 5605 <member name="F:HttpServer.HttpInputItem.Empty">
5606 <summary> Representation of a non-initialized HttpInputItem </summary> 5606 <summary> Representation of a non-initialized HttpInputItem </summary>
5607 </member> 5607 </member>
5608 <member name="M:HttpServer.HttpInputItem.#ctor(System.String,System.String)"> 5608 <member name="M:HttpServer.HttpInputItem.#ctor(System.String,System.String)">
5609 <summary> 5609 <summary>
5610 Initializes an input item setting its name/identifier and value 5610 Initializes an input item setting its name/identifier and value
5611 </summary> 5611 </summary>
5612 <param name="name">Parameter name/id</param> 5612 <param name="name">Parameter name/id</param>
5613 <param name="value">Parameter value</param> 5613 <param name="value">Parameter value</param>
5614 </member> 5614 </member>
5615 <member name="M:HttpServer.HttpInputItem.#ctor(HttpServer.HttpInputItem)"> 5615 <member name="M:HttpServer.HttpInputItem.#ctor(HttpServer.HttpInputItem)">
5616 <summary>Creates a deep copy of the item specified</summary> 5616 <summary>Creates a deep copy of the item specified</summary>
5617 <param name="item">The item to copy</param> 5617 <param name="item">The item to copy</param>
5618 <remarks>The function makes a deep copy of quite a lot which can be slow</remarks> 5618 <remarks>The function makes a deep copy of quite a lot which can be slow</remarks>
5619 </member> 5619 </member>
5620 <member name="M:HttpServer.HttpInputItem.Add(System.String)"> 5620 <member name="M:HttpServer.HttpInputItem.Add(System.String)">
5621 <summary> 5621 <summary>
5622 Add another value to this item 5622 Add another value to this item
5623 </summary> 5623 </summary>
5624 <param name="value"></param> 5624 <param name="value"></param>
5625 </member> 5625 </member>
5626 <member name="M:HttpServer.HttpInputItem.Contains(System.String)"> 5626 <member name="M:HttpServer.HttpInputItem.Contains(System.String)">
5627 <summary> 5627 <summary>
5628 checks if a subitem exists (and has a value). 5628 checks if a subitem exists (and has a value).
5629 </summary> 5629 </summary>
5630 <param name="name">name in lower case</param> 5630 <param name="name">name in lower case</param>
5631 <returns>true if the subitem exists and has a value; otherwise false.</returns> 5631 <returns>true if the subitem exists and has a value; otherwise false.</returns>
5632 </member> 5632 </member>
5633 <member name="M:HttpServer.HttpInputItem.ToString"> 5633 <member name="M:HttpServer.HttpInputItem.ToString">
5634 <summary> Returns a formatted representation of the instance with the values of all contained parameters </summary> 5634 <summary> Returns a formatted representation of the instance with the values of all contained parameters </summary>
5635 </member> 5635 </member>
5636 <member name="M:HttpServer.HttpInputItem.ToString(System.String,System.Boolean)"> 5636 <member name="M:HttpServer.HttpInputItem.ToString(System.String,System.Boolean)">
5637 <summary> 5637 <summary>
5638 Outputs the string in a formatted manner 5638 Outputs the string in a formatted manner
5639 </summary> 5639 </summary>
5640 <param name="prefix">A prefix to append, used internally</param> 5640 <param name="prefix">A prefix to append, used internally</param>
5641 <param name="asQuerySting">produce a query string</param> 5641 <param name="asQuerySting">produce a query string</param>
5642 </member> 5642 </member>
5643 <member name="M:HttpServer.HttpInputItem.Add(System.String,System.String)"> 5643 <member name="M:HttpServer.HttpInputItem.Add(System.String,System.String)">
5644 <summary> 5644 <summary>
5645 Add a sub item 5645 Add a sub item
5646 </summary> 5646 </summary>
5647 <param name="name">Can contain array formatting, the item is then parsed and added in multiple levels</param> 5647 <param name="name">Can contain array formatting, the item is then parsed and added in multiple levels</param>
5648 <param name="value"></param> 5648 <param name="value"></param>
5649 </member> 5649 </member>
5650 <member name="M:HttpServer.HttpInputItem.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator"> 5650 <member name="M:HttpServer.HttpInputItem.System#Collections#Generic#IEnumerable{HttpServer#HttpInputItem}#GetEnumerator">
5651 <summary> 5651 <summary>
5652 Returns an enumerator that iterates through the collection. 5652 Returns an enumerator that iterates through the collection.
5653 </summary> 5653 </summary>
5654 5654
5655 <returns> 5655 <returns>
5656 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection. 5656 A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
5657 </returns> 5657 </returns>
5658 <filterpriority>1</filterpriority> 5658 <filterpriority>1</filterpriority>
5659 </member> 5659 </member>
5660 <member name="M:HttpServer.HttpInputItem.GetEnumerator"> 5660 <member name="M:HttpServer.HttpInputItem.GetEnumerator">
5661 <summary> 5661 <summary>
5662 Returns an enumerator that iterates through a collection. 5662 Returns an enumerator that iterates through a collection.
5663 </summary> 5663 </summary>
5664 5664
5665 <returns> 5665 <returns>
5666 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection. 5666 An <see cref="T:System.Collections.IEnumerator"></see> object that can be used to iterate through the collection.
5667 </returns> 5667 </returns>
5668 <filterpriority>2</filterpriority> 5668 <filterpriority>2</filterpriority>
5669 </member> 5669 </member>
5670 <member name="M:HttpServer.HttpInputItem.ToString(System.String)"> 5670 <member name="M:HttpServer.HttpInputItem.ToString(System.String)">
5671 <summary> 5671 <summary>
5672 Outputs the string in a formatted manner 5672 Outputs the string in a formatted manner
5673 </summary> 5673 </summary>
5674 <param name="prefix">A prefix to append, used internally</param> 5674 <param name="prefix">A prefix to append, used internally</param>
5675 <returns></returns> 5675 <returns></returns>
5676 </member> 5676 </member>
5677 <member name="P:HttpServer.HttpInputItem.Count"> 5677 <member name="P:HttpServer.HttpInputItem.Count">
5678 <summary> 5678 <summary>
5679 Number of values 5679 Number of values
5680 </summary> 5680 </summary>
5681 </member> 5681 </member>
5682 <member name="P:HttpServer.HttpInputItem.Item(System.String)"> 5682 <member name="P:HttpServer.HttpInputItem.Item(System.String)">
5683 <summary> 5683 <summary>
5684 Get a sub item 5684 Get a sub item
5685 </summary> 5685 </summary>
5686 <param name="name">name in lower case.</param> 5686 <param name="name">name in lower case.</param>
5687 <returns>HttpInputItem.Empty if no item was found.</returns> 5687 <returns>HttpInputItem.Empty if no item was found.</returns>
5688 </member> 5688 </member>
5689 <member name="P:HttpServer.HttpInputItem.Name"> 5689 <member name="P:HttpServer.HttpInputItem.Name">
5690 <summary> 5690 <summary>
5691 Name of item (in lower case). 5691 Name of item (in lower case).
5692 </summary> 5692 </summary>
5693 </member> 5693 </member>
5694 <member name="P:HttpServer.HttpInputItem.Value"> 5694 <member name="P:HttpServer.HttpInputItem.Value">
5695 <summary> 5695 <summary>
5696 Returns the first value, or null if no value exist. 5696 Returns the first value, or null if no value exist.
5697 </summary> 5697 </summary>
5698 </member> 5698 </member>
5699 <member name="P:HttpServer.HttpInputItem.LastValue"> 5699 <member name="P:HttpServer.HttpInputItem.LastValue">
5700 <summary> 5700 <summary>
5701 Returns the last value, or null if no value exist. 5701 Returns the last value, or null if no value exist.
5702 </summary> 5702 </summary>
5703 </member> 5703 </member>
5704 <member name="P:HttpServer.HttpInputItem.Values"> 5704 <member name="P:HttpServer.HttpInputItem.Values">
5705 <summary> 5705 <summary>
5706 Returns the list with values. 5706 Returns the list with values.
5707 todo: Return a readonly collection 5707 todo: Return a readonly collection
5708 </summary> 5708 </summary>
5709 </member> 5709 </member>
5710 <member name="P:HttpServer.HttpInputItem.HttpServer#IHttpInput#Item(System.String)"> 5710 <member name="P:HttpServer.HttpInputItem.HttpServer#IHttpInput#Item(System.String)">
5711 <summary> 5711 <summary>
5712 5712
5713 </summary> 5713 </summary>
5714 <param name="name">name in lower case</param> 5714 <param name="name">name in lower case</param>
5715 <returns></returns> 5715 <returns></returns>
5716 </member> 5716 </member>
5717 <member name="T:HttpServer.FormDecoders.UrlDecoder"> 5717 <member name="T:HttpServer.FormDecoders.UrlDecoder">
5718 <summary> 5718 <summary>
5719 Can handle application/x-www-form-urlencoded 5719 Can handle application/x-www-form-urlencoded
5720 </summary> 5720 </summary>
5721 </member> 5721 </member>
5722 <member name="M:HttpServer.FormDecoders.UrlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)"> 5722 <member name="M:HttpServer.FormDecoders.UrlDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
5723 <summary> 5723 <summary>
5724 </summary> 5724 </summary>
5725 <param name="stream">Stream containing the content</param> 5725 <param name="stream">Stream containing the content</param>
5726 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param> 5726 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
5727 <param name="encoding">Stream enconding</param> 5727 <param name="encoding">Stream enconding</param>
5728 <returns> 5728 <returns>
5729 A http form, or null if content could not be parsed. 5729 A http form, or null if content could not be parsed.
5730 </returns> 5730 </returns>
5731 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception> 5731 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
5732 </member> 5732 </member>
5733 <member name="M:HttpServer.FormDecoders.UrlDecoder.CanParse(System.String)"> 5733 <member name="M:HttpServer.FormDecoders.UrlDecoder.CanParse(System.String)">
5734 <summary> 5734 <summary>
5735 Checks if the decoder can handle the mime type 5735 Checks if the decoder can handle the mime type
5736 </summary> 5736 </summary>
5737 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param> 5737 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
5738 <returns>True if the decoder can parse the specified content type</returns> 5738 <returns>True if the decoder can parse the specified content type</returns>
5739 </member> 5739 </member>
5740 <member name="T:HttpServer.Controllers.ControllerTester"> 5740 <member name="T:HttpServer.Controllers.ControllerTester">
5741 <summary> 5741 <summary>
5742 Used to simply testing of controls. 5742 Used to simply testing of controls.
5743 </summary> 5743 </summary>
5744 </member> 5744 </member>
5745 <member name="F:HttpServer.Controllers.ControllerTester.HostName"> 5745 <member name="F:HttpServer.Controllers.ControllerTester.HostName">
5746 <summary> 5746 <summary>
5747 Fake host name, default is "http://localhost" 5747 Fake host name, default is "http://localhost"
5748 </summary> 5748 </summary>
5749 </member> 5749 </member>
5750 <member name="F:HttpServer.Controllers.ControllerTester.DefaultSession"> 5750 <member name="F:HttpServer.Controllers.ControllerTester.DefaultSession">
5751 <summary> 5751 <summary>
5752 Session used if null have been specified as argument to one of the class methods. 5752 Session used if null have been specified as argument to one of the class methods.
5753 </summary> 5753 </summary>
5754 </member> 5754 </member>
5755 <member name="M:HttpServer.Controllers.ControllerTester.Get(HttpServer.Controllers.RequestController,System.String,HttpServer.IHttpResponse@,HttpServer.Sessions.IHttpSession)"> 5755 <member name="M:HttpServer.Controllers.ControllerTester.Get(HttpServer.Controllers.RequestController,System.String,HttpServer.IHttpResponse@,HttpServer.Sessions.IHttpSession)">
5756 <summary> 5756 <summary>
5757 Send a GET request to a controller. 5757 Send a GET request to a controller.
5758 </summary> 5758 </summary>
5759 <param name="controller">Controller receiving the post request.</param> 5759 <param name="controller">Controller receiving the post request.</param>
5760 <param name="uri">Uri visited.</param> 5760 <param name="uri">Uri visited.</param>
5761 <param name="response">Response from the controller.</param> 5761 <param name="response">Response from the controller.</param>
5762 <param name="session">Session used during the test. null = <see cref="F:HttpServer.Controllers.ControllerTester.DefaultSession"/> is used.</param> 5762 <param name="session">Session used during the test. null = <see cref="F:HttpServer.Controllers.ControllerTester.DefaultSession"/> is used.</param>
5763 <returns>body posted by the response object</returns> 5763 <returns>body posted by the response object</returns>
5764 <example> 5764 <example>
5765 <code> 5765 <code>
5766 void MyTest() 5766 void MyTest()
5767 { 5767 {
5768 ControllerTester tester = new ControllerTester(); 5768 ControllerTester tester = new ControllerTester();
5769 5769
5770 MyController controller = new MyController(); 5770 MyController controller = new MyController();
5771 IHttpResponse response; 5771 IHttpResponse response;
5772 string text = Get(controller, "/my/hello/1?hello=world", out response, null); 5772 string text = Get(controller, "/my/hello/1?hello=world", out response, null);
5773 Assert.Equal("world|1", text); 5773 Assert.Equal("world|1", text);
5774 } 5774 }
5775 </code> 5775 </code>
5776 </example> 5776 </example>
5777 </member> 5777 </member>
5778 <member name="M:HttpServer.Controllers.ControllerTester.Post(HttpServer.Controllers.RequestController,System.String,HttpServer.HttpForm,HttpServer.IHttpResponse@,HttpServer.Sessions.IHttpSession)"> 5778 <member name="M:HttpServer.Controllers.ControllerTester.Post(HttpServer.Controllers.RequestController,System.String,HttpServer.HttpForm,HttpServer.IHttpResponse@,HttpServer.Sessions.IHttpSession)">
5779 <summary> 5779 <summary>
5780 Send a POST request to a controller. 5780 Send a POST request to a controller.
5781 </summary> 5781 </summary>
5782 <param name="controller">Controller receiving the post request.</param> 5782 <param name="controller">Controller receiving the post request.</param>
5783 <param name="uri">Uri visited.</param> 5783 <param name="uri">Uri visited.</param>
5784 <param name="form">Form being processed by controller.</param> 5784 <param name="form">Form being processed by controller.</param>
5785 <param name="response">Response from the controller.</param> 5785 <param name="response">Response from the controller.</param>
5786 <param name="session">Session used during the test. null = <see cref="F:HttpServer.Controllers.ControllerTester.DefaultSession"/> is used.</param> 5786 <param name="session">Session used during the test. null = <see cref="F:HttpServer.Controllers.ControllerTester.DefaultSession"/> is used.</param>
5787 <returns>body posted by the response object</returns> 5787 <returns>body posted by the response object</returns>
5788 <example> 5788 <example>
5789 <code> 5789 <code>
5790 void MyTest() 5790 void MyTest()
5791 { 5791 {
5792 // Create a controller. 5792 // Create a controller.
5793 MyController controller = new MyController(); 5793 MyController controller = new MyController();
5794 5794
5795 // build up a form that is used by the controller. 5795 // build up a form that is used by the controller.
5796 HttpForm form = new HttpForm(); 5796 HttpForm form = new HttpForm();
5797 form.Add("user[firstName]", "Jonas"); 5797 form.Add("user[firstName]", "Jonas");
5798 5798
5799 // Invoke the request 5799 // Invoke the request
5800 ControllerTester tester = new ControllerTester(); 5800 ControllerTester tester = new ControllerTester();
5801 IHttpResponse response; 5801 IHttpResponse response;
5802 string text = tester.Get(controller, "/user/create/", form, out response, null); 5802 string text = tester.Get(controller, "/user/create/", form, out response, null);
5803 5803
5804 // validate response back from controller. 5804 // validate response back from controller.
5805 Assert.Equal("User 'Jonas' has been created.", text); 5805 Assert.Equal("User 'Jonas' has been created.", text);
5806 } 5806 }
5807 </code> 5807 </code>
5808 </example> 5808 </example>
5809 </member> 5809 </member>
5810 <member name="T:HttpServer.ClientAcceptedEventArgs"> 5810 <member name="T:HttpServer.ClientAcceptedEventArgs">
5811 <summary> 5811 <summary>
5812 Invoked when a client have been accepted by the <see cref="T:HttpServer.HttpListener"/> 5812 Invoked when a client have been accepted by the <see cref="T:HttpServer.HttpListener"/>
5813 </summary> 5813 </summary>
5814 <remarks> 5814 <remarks>
5815 Can be used to revoke incoming connections 5815 Can be used to revoke incoming connections
5816 </remarks> 5816 </remarks>
5817 </member> 5817 </member>
5818 <member name="M:HttpServer.ClientAcceptedEventArgs.#ctor(System.Net.Sockets.Socket)"> 5818 <member name="M:HttpServer.ClientAcceptedEventArgs.#ctor(System.Net.Sockets.Socket)">
5819 <summary> 5819 <summary>
5820 Initializes a new instance of the <see cref="T:HttpServer.ClientAcceptedEventArgs"/> class. 5820 Initializes a new instance of the <see cref="T:HttpServer.ClientAcceptedEventArgs"/> class.
5821 </summary> 5821 </summary>
5822 <param name="socket">The socket.</param> 5822 <param name="socket">The socket.</param>
5823 </member> 5823 </member>
5824 <member name="M:HttpServer.ClientAcceptedEventArgs.Revoke"> 5824 <member name="M:HttpServer.ClientAcceptedEventArgs.Revoke">
5825 <summary> 5825 <summary>
5826 Client may not be handled. 5826 Client may not be handled.
5827 </summary> 5827 </summary>
5828 </member> 5828 </member>
5829 <member name="P:HttpServer.ClientAcceptedEventArgs.Socket"> 5829 <member name="P:HttpServer.ClientAcceptedEventArgs.Socket">
5830 <summary> 5830 <summary>
5831 Accepted socket. 5831 Accepted socket.
5832 </summary> 5832 </summary>
5833 </member> 5833 </member>
5834 <member name="P:HttpServer.ClientAcceptedEventArgs.Revoked"> 5834 <member name="P:HttpServer.ClientAcceptedEventArgs.Revoked">
5835 <summary> 5835 <summary>
5836 Client should be revoked. 5836 Client should be revoked.
5837 </summary> 5837 </summary>
5838 </member> 5838 </member>
5839 <member name="T:HttpServer.ResponseCookie"> 5839 <member name="T:HttpServer.ResponseCookie">
5840 <summary> 5840 <summary>
5841 cookie being sent back to the browser. 5841 cookie being sent back to the browser.
5842 </summary> 5842 </summary>
5843 <seealso cref="T:HttpServer.ResponseCookie"/> 5843 <seealso cref="T:HttpServer.ResponseCookie"/>
5844 </member> 5844 </member>
5845 <member name="T:HttpServer.RequestCookie"> 5845 <member name="T:HttpServer.RequestCookie">
5846 <summary> 5846 <summary>
5847 cookie sent by the client/browser 5847 cookie sent by the client/browser
5848 </summary> 5848 </summary>
5849 <seealso cref="T:HttpServer.ResponseCookie"/> 5849 <seealso cref="T:HttpServer.ResponseCookie"/>
5850 </member> 5850 </member>
5851 <member name="M:HttpServer.RequestCookie.#ctor(System.String,System.String)"> 5851 <member name="M:HttpServer.RequestCookie.#ctor(System.String,System.String)">
5852 <summary> 5852 <summary>
5853 Constructor. 5853 Constructor.
5854 </summary> 5854 </summary>
5855 <param name="id">cookie identifier</param> 5855 <param name="id">cookie identifier</param>
5856 <param name="content">cookie content</param> 5856 <param name="content">cookie content</param>
5857 <exception cref="T:System.ArgumentNullException">id or content is null</exception> 5857 <exception cref="T:System.ArgumentNullException">id or content is null</exception>
5858 <exception cref="T:System.ArgumentException">id is empty</exception> 5858 <exception cref="T:System.ArgumentException">id is empty</exception>
5859 </member> 5859 </member>
5860 <member name="M:HttpServer.RequestCookie.ToString"> 5860 <member name="M:HttpServer.RequestCookie.ToString">
5861 <summary> 5861 <summary>
5862 Gets the cookie HTML representation. 5862 Gets the cookie HTML representation.
5863 </summary> 5863 </summary>
5864 <returns>cookie string</returns> 5864 <returns>cookie string</returns>
5865 </member> 5865 </member>
5866 <member name="P:HttpServer.RequestCookie.Name"> 5866 <member name="P:HttpServer.RequestCookie.Name">
5867 <summary> 5867 <summary>
5868 Gets the cookie identifier. 5868 Gets the cookie identifier.
5869 </summary> 5869 </summary>
5870 </member> 5870 </member>
5871 <member name="P:HttpServer.RequestCookie.Value"> 5871 <member name="P:HttpServer.RequestCookie.Value">
5872 <summary> 5872 <summary>
5873 Cookie value. Set to null to remove cookie. 5873 Cookie value. Set to null to remove cookie.
5874 </summary> 5874 </summary>
5875 </member> 5875 </member>
5876 <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime)"> 5876 <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime)">
5877 <summary> 5877 <summary>
5878 Constructor. 5878 Constructor.
5879 </summary> 5879 </summary>
5880 <param name="id">cookie identifier</param> 5880 <param name="id">cookie identifier</param>
5881 <param name="content">cookie content</param> 5881 <param name="content">cookie content</param>
5882 <param name="expiresAt">cookie expiration date. Use DateTime.MinValue for session cookie.</param> 5882 <param name="expiresAt">cookie expiration date. Use DateTime.MinValue for session cookie.</param>
5883 <exception cref="T:System.ArgumentNullException">id or content is null</exception> 5883 <exception cref="T:System.ArgumentNullException">id or content is null</exception>
5884 <exception cref="T:System.ArgumentException">id is empty</exception> 5884 <exception cref="T:System.ArgumentException">id is empty</exception>
5885 </member> 5885 </member>
5886 <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime,System.String,System.String)"> 5886 <member name="M:HttpServer.ResponseCookie.#ctor(System.String,System.String,System.DateTime,System.String,System.String)">
5887 <summary> 5887 <summary>
5888 Create a new cookie 5888 Create a new cookie
5889 </summary> 5889 </summary>
5890 <param name="name">name identifying the cookie</param> 5890 <param name="name">name identifying the cookie</param>
5891 <param name="value">cookie value</param> 5891 <param name="value">cookie value</param>
5892 <param name="expires">when the cookie expires. Setting DateTime.MinValue will delete the cookie when the session is closed.</param> 5892 <param name="expires">when the cookie expires. Setting DateTime.MinValue will delete the cookie when the session is closed.</param>
5893 <param name="path">Path to where the cookie is valid</param> 5893 <param name="path">Path to where the cookie is valid</param>
5894 <param name="domain">Domain that the cookie is valid for.</param> 5894 <param name="domain">Domain that the cookie is valid for.</param>
5895 </member> 5895 </member>
5896 <member name="M:HttpServer.ResponseCookie.#ctor(HttpServer.RequestCookie,System.DateTime)"> 5896 <member name="M:HttpServer.ResponseCookie.#ctor(HttpServer.RequestCookie,System.DateTime)">
5897 <summary> 5897 <summary>
5898 Create a new cookie 5898 Create a new cookie
5899 </summary> 5899 </summary>
5900 <param name="cookie">Name and value will be used</param> 5900 <param name="cookie">Name and value will be used</param>
5901 <param name="expires">when the cookie expires.</param> 5901 <param name="expires">when the cookie expires.</param>
5902 </member> 5902 </member>
5903 <member name="M:HttpServer.ResponseCookie.ToString"> 5903 <member name="M:HttpServer.ResponseCookie.ToString">
5904 <summary> 5904 <summary>
5905 Gets the cookie HTML representation. 5905 Gets the cookie HTML representation.
5906 </summary> 5906 </summary>
5907 <returns>cookie string</returns> 5907 <returns>cookie string</returns>
5908 </member> 5908 </member>
5909 <member name="P:HttpServer.ResponseCookie.Expires"> 5909 <member name="P:HttpServer.ResponseCookie.Expires">
5910 <summary> 5910 <summary>
5911 When the cookie expires. 5911 When the cookie expires.
5912 DateTime.MinValue means that the cookie expires when the session do so. 5912 DateTime.MinValue means that the cookie expires when the session do so.
5913 </summary> 5913 </summary>
5914 </member> 5914 </member>
5915 <member name="P:HttpServer.ResponseCookie.Path"> 5915 <member name="P:HttpServer.ResponseCookie.Path">
5916 <summary> 5916 <summary>
5917 Cookie is only valid under this path. 5917 Cookie is only valid under this path.
5918 </summary> 5918 </summary>
5919 </member> 5919 </member>
5920 <member name="T:HttpServer.Rendering.ITinyTemplate"> 5920 <member name="T:HttpServer.Rendering.ITinyTemplate">
5921 <summary> 5921 <summary>
5922 Interface for dynamically generated templates. 5922 Interface for dynamically generated templates.
5923 </summary> 5923 </summary>
5924 <seealso cref="T:HttpServer.Rendering.TemplateManager"/> 5924 <seealso cref="T:HttpServer.Rendering.TemplateManager"/>
5925 </member> 5925 </member>
5926 <member name="M:HttpServer.Rendering.ITinyTemplate.Invoke(HttpServer.Rendering.TemplateArguments,HttpServer.Rendering.TemplateManager)"> 5926 <member name="M:HttpServer.Rendering.ITinyTemplate.Invoke(HttpServer.Rendering.TemplateArguments,HttpServer.Rendering.TemplateManager)">
5927 <summary> 5927 <summary>
5928 Run the template to generate HTML code. 5928 Run the template to generate HTML code.
5929 </summary> 5929 </summary>
5930 <param name="args">arguments passed to the template</param> 5930 <param name="args">arguments passed to the template</param>
5931 <param name="hiddenTemplateManager">template manager (a manager is used to generate templates)</param> 5931 <param name="hiddenTemplateManager">template manager (a manager is used to generate templates)</param>
5932 <returns>HTML code.</returns> 5932 <returns>HTML code.</returns>
5933 </member> 5933 </member>
5934 <member name="T:HttpServer.Rendering.CodeGeneratorException"> 5934 <member name="T:HttpServer.Rendering.CodeGeneratorException">
5935 <summary> 5935 <summary>
5936 Contains information on where in the template the error occurred, and what the error was. 5936 Contains information on where in the template the error occurred, and what the error was.
5937 </summary> 5937 </summary>
5938 </member> 5938 </member>
5939 <member name="M:HttpServer.Rendering.CodeGeneratorException.#ctor(System.Int32,System.String)"> 5939 <member name="M:HttpServer.Rendering.CodeGeneratorException.#ctor(System.Int32,System.String)">
5940 <summary> 5940 <summary>
5941 Initializes a new instance of the <see cref="T:HttpServer.Rendering.CodeGeneratorException"/> class. 5941 Initializes a new instance of the <see cref="T:HttpServer.Rendering.CodeGeneratorException"/> class.
5942 </summary> 5942 </summary>
5943 <param name="lineNumber">Line that the error appeared on.</param> 5943 <param name="lineNumber">Line that the error appeared on.</param>
5944 <param name="error">error description.</param> 5944 <param name="error">error description.</param>
5945 </member> 5945 </member>
5946 <member name="M:HttpServer.Rendering.CodeGeneratorException.#ctor(System.Int32,System.String,System.String)"> 5946 <member name="M:HttpServer.Rendering.CodeGeneratorException.#ctor(System.Int32,System.String,System.String)">
5947 <summary> 5947 <summary>
5948 Initializes a new instance of the <see cref="T:HttpServer.Rendering.CodeGeneratorException"/> class. 5948 Initializes a new instance of the <see cref="T:HttpServer.Rendering.CodeGeneratorException"/> class.
5949 </summary> 5949 </summary>
5950 <param name="lineNumber">Line that the error appeared on.</param> 5950 <param name="lineNumber">Line that the error appeared on.</param>
5951 <param name="error">error description.</param> 5951 <param name="error">error description.</param>
5952 <param name="line">line contents.</param> 5952 <param name="line">line contents.</param>
5953 </member> 5953 </member>
5954 <member name="P:HttpServer.Rendering.CodeGeneratorException.Line"> 5954 <member name="P:HttpServer.Rendering.CodeGeneratorException.Line">
5955 <summary> 5955 <summary>
5956 Returns the actual line where the error originated 5956 Returns the actual line where the error originated
5957 </summary> 5957 </summary>
5958 </member> 5958 </member>
5959 <member name="P:HttpServer.Rendering.CodeGeneratorException.LineNumber"> 5959 <member name="P:HttpServer.Rendering.CodeGeneratorException.LineNumber">
5960 <summary> 5960 <summary>
5961 Line number in template 5961 Line number in template
5962 </summary> 5962 </summary>
5963 </member> 5963 </member>
5964 <member name="T:HttpServer.Rendering.Haml.Nodes.SilentCodeNode"> 5964 <member name="T:HttpServer.Rendering.Haml.Nodes.SilentCodeNode">
5965 <summary> 5965 <summary>
5966 The ’-’ character makes the text following it into “silent” code: C# code that is evaluated, but not output. 5966 The ’-’ character makes the text following it into “silent” code: C# code that is evaluated, but not output.
5967 It is not recommended that you use this widely; almost all processing code and logic should be restricted to the Controller, Helpers, or partials. 5967 It is not recommended that you use this widely; almost all processing code and logic should be restricted to the Controller, Helpers, or partials.
5968 5968
5969 For example 5969 For example
5970 <code> 5970 <code>
5971 - string foo = "hello" 5971 - string foo = "hello"
5972 - foo += " there" 5972 - foo += " there"
5973 - foo += " you!" 5973 - foo += " you!"
5974 %p= foo 5974 %p= foo
5975 </code> 5975 </code>
5976 5976
5977 Is compiled to 5977 Is compiled to
5978 <example> 5978 <example>
5979 <p> 5979 <p>
5980 hello there you! 5980 hello there you!
5981 </p> 5981 </p>
5982 </example> 5982 </example>
5983 </summary> 5983 </summary>
5984 </member> 5984 </member>
5985 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.CanHandle(System.String,System.Boolean)"> 5985 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.CanHandle(System.String,System.Boolean)">
5986 <summary> 5986 <summary>
5987 determines if this node can handle the line (by checking the first word); 5987 determines if this node can handle the line (by checking the first word);
5988 </summary> 5988 </summary>
5989 <param name="word">Controller char (word)</param> 5989 <param name="word">Controller char (word)</param>
5990 <returns>true if text belongs to this node type</returns> 5990 <returns>true if text belongs to this node type</returns>
5991 <param name="firstNode">first node on line</param> 5991 <param name="firstNode">first node on line</param>
5992 </member> 5992 </member>
5993 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 5993 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
5994 <summary> 5994 <summary>
5995 Parse node contents add return a fresh node. 5995 Parse node contents add return a fresh node.
5996 </summary> 5996 </summary>
5997 <param name="prototypes">List containing all node types</param> 5997 <param name="prototypes">List containing all node types</param>
5998 <param name="parent">Node that this is a subnode to. Can be null</param> 5998 <param name="parent">Node that this is a subnode to. Can be null</param>
5999 <param name="line">Line to parse</param> 5999 <param name="line">Line to parse</param>
6000 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 6000 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
6001 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 6001 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
6002 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 6002 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
6003 </member> 6003 </member>
6004 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 6004 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
6005 <summary> 6005 <summary>
6006 Convert the node to c# code 6006 Convert the node to c# code
6007 </summary> 6007 </summary>
6008 <param name="inString">True if we are inside the internal stringbuilder</param> 6008 <param name="inString">True if we are inside the internal stringbuilder</param>
6009 <param name="smallEnough">true if all subnodes fit on one line</param> 6009 <param name="smallEnough">true if all subnodes fit on one line</param>
6010 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 6010 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
6011 <returns>c# code</returns> 6011 <returns>c# code</returns>
6012 </member> 6012 </member>
6013 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.ToHtml"> 6013 <member name="M:HttpServer.Rendering.Haml.Nodes.SilentCodeNode.ToHtml">
6014 <summary> 6014 <summary>
6015 Convert node to HTML (with ASP-tags) 6015 Convert node to HTML (with ASP-tags)
6016 </summary> 6016 </summary>
6017 <returns>HTML string</returns> 6017 <returns>HTML string</returns>
6018 </member> 6018 </member>
6019 <member name="T:HttpServer.Rendering.TemplateCompiler"> 6019 <member name="T:HttpServer.Rendering.TemplateCompiler">
6020 <summary> 6020 <summary>
6021 The compiler is responsible of creating a render object which can be 6021 The compiler is responsible of creating a render object which can be
6022 cached and used over and over again. 6022 cached and used over and over again.
6023 </summary> 6023 </summary>
6024 <seealso cref="T:HttpServer.Rendering.TemplateManager"/> 6024 <seealso cref="T:HttpServer.Rendering.TemplateManager"/>
6025 <seealso cref="T:HttpServer.Rendering.ITemplateGenerator"/> 6025 <seealso cref="T:HttpServer.Rendering.ITemplateGenerator"/>
6026 </member> 6026 </member>
6027 <member name="F:HttpServer.Rendering.TemplateCompiler.TemplateBase"> 6027 <member name="F:HttpServer.Rendering.TemplateCompiler.TemplateBase">
6028 <summary> 6028 <summary>
6029 Base c# code for a template object. 6029 Base c# code for a template object.
6030 </summary> 6030 </summary>
6031 </member> 6031 </member>
6032 <member name="M:HttpServer.Rendering.TemplateCompiler.#ctor"> 6032 <member name="M:HttpServer.Rendering.TemplateCompiler.#ctor">
6033 <summary> 6033 <summary>
6034 Create a new template compiler 6034 Create a new template compiler
6035 </summary> 6035 </summary>
6036 </member> 6036 </member>
6037 <member name="M:HttpServer.Rendering.TemplateCompiler.Add(System.Type)"> 6037 <member name="M:HttpServer.Rendering.TemplateCompiler.Add(System.Type)">
6038 <summary> 6038 <summary>
6039 Adds the specified type. 6039 Adds the specified type.
6040 </summary> 6040 </summary>
6041 <param name="type">The type.</param> 6041 <param name="type">The type.</param>
6042 </member> 6042 </member>
6043 <member name="M:HttpServer.Rendering.TemplateCompiler.Compile(HttpServer.Rendering.TemplateArguments,System.String,System.String)"> 6043 <member name="M:HttpServer.Rendering.TemplateCompiler.Compile(HttpServer.Rendering.TemplateArguments,System.String,System.String)">
6044 <summary> 6044 <summary>
6045 Compiles the specified args. 6045 Compiles the specified args.
6046 </summary> 6046 </summary>
6047 <param name="args">Arguments, should contain "name, value, name, value" etc.</param> 6047 <param name="args">Arguments, should contain "name, value, name, value" etc.</param>
6048 <param name="template">c# code that will be included in the generated template class</param> 6048 <param name="template">c# code that will be included in the generated template class</param>
6049 <param name="templateId">Id of the template class</param> 6049 <param name="templateId">Id of the template class</param>
6050 <returns>Tiny template if successful; otherwise null.</returns> 6050 <returns>Tiny template if successful; otherwise null.</returns>
6051 <exception cref="T:Fadd.CompilerException">If compilation fails</exception> 6051 <exception cref="T:Fadd.CompilerException">If compilation fails</exception>
6052 <exception cref="T:System.ArgumentException">If args are incorrect</exception> 6052 <exception cref="T:System.ArgumentException">If args are incorrect</exception>
6053 </member> 6053 </member>
6054 <member name="T:HttpServer.HttpResponse"> 6054 <member name="T:HttpServer.HttpResponse">
6055 <summary> 6055 <summary>
6056 Response that is sent back to the web browser / client. 6056 Response that is sent back to the web browser / client.
6057 6057
6058 A response can be sent if different ways. The easiest one is 6058 A response can be sent if different ways. The easiest one is
6059 to just fill the Body stream with content, everything else 6059 to just fill the Body stream with content, everything else
6060 will then be taken care of by the framework. The default content-type 6060 will then be taken care of by the framework. The default content-type
6061 is text/html, you should change it if you send anything else. 6061 is text/html, you should change it if you send anything else.
6062 6062
6063 The second and slighty more complex way is to send the response 6063 The second and slighty more complex way is to send the response
6064 as parts. Start with sending the header using the SendHeaders method and 6064 as parts. Start with sending the header using the SendHeaders method and
6065 then you can send the body using SendBody method, but do not forget 6065 then you can send the body using SendBody method, but do not forget
6066 to set ContentType and ContentLength before doing so. 6066 to set ContentType and ContentLength before doing so.
6067 </summary> 6067 </summary>
6068 <example> 6068 <example>
6069 public void MyHandler(IHttpRequest request, IHttpResponse response) 6069 public void MyHandler(IHttpRequest request, IHttpResponse response)
6070 { 6070 {
6071 6071
6072 } 6072 }
6073 </example> 6073 </example>
6074 todo: add two examples, using SendHeaders/SendBody and just the Body stream. 6074 todo: add two examples, using SendHeaders/SendBody and just the Body stream.
6075 </member> 6075 </member>
6076 <member name="M:HttpServer.HttpResponse.#ctor(HttpServer.IHttpClientContext,HttpServer.IHttpRequest)"> 6076 <member name="M:HttpServer.HttpResponse.#ctor(HttpServer.IHttpClientContext,HttpServer.IHttpRequest)">
6077 <summary> 6077 <summary>
6078 Initializes a new instance of the <see cref="T:HttpServer.IHttpResponse"/> class. 6078 Initializes a new instance of the <see cref="T:HttpServer.IHttpResponse"/> class.
6079 </summary> 6079 </summary>
6080 <param name="context">The context.</param> 6080 <param name="context">The context.</param>
6081 <param name="request">The request.</param> 6081 <param name="request">The request.</param>
6082 </member> 6082 </member>
6083 <member name="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)"> 6083 <member name="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)">
6084 <summary> 6084 <summary>
6085 Add another header to the document. 6085 Add another header to the document.
6086 </summary> 6086 </summary>
6087 <param name="name">Name of the header, case sensitive, use lower cases.</param> 6087 <param name="name">Name of the header, case sensitive, use lower cases.</param>
6088 <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param> 6088 <param name="value">Header values can span over multiple lines as long as each line starts with a white space. New line chars should be \r\n</param>
6089 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 6089 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
6090 <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception> 6090 <exception cref="T:System.ArgumentException">If value conditions have not been met.</exception>
6091 <remarks>Adding any header will override the default ones and those specified by properties.</remarks> 6091 <remarks>Adding any header will override the default ones and those specified by properties.</remarks>
6092 </member> 6092 </member>
6093 <member name="M:HttpServer.HttpResponse.Send"> 6093 <member name="M:HttpServer.HttpResponse.Send">
6094 <summary> 6094 <summary>
6095 Send headers and body to the browser. 6095 Send headers and body to the browser.
6096 </summary> 6096 </summary>
6097 <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception> 6097 <exception cref="T:System.InvalidOperationException">If content have already been sent.</exception>
6098 </member> 6098 </member>
6099 <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)"> 6099 <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[],System.Int32,System.Int32)">
6100 <summary> 6100 <summary>
6101 Make sure that you have specified ContentLength and sent the headers first. 6101 Make sure that you have specified ContentLength and sent the headers first.
6102 </summary> 6102 </summary>
6103 <param name="buffer"></param> 6103 <param name="buffer"></param>
6104 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception> 6104 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
6105 <see cref="M:HttpServer.HttpResponse.SendHeaders"/> 6105 <see cref="M:HttpServer.HttpResponse.SendHeaders"/>
6106 <param name="offset">offest of first byte to send</param> 6106 <param name="offset">offest of first byte to send</param>
6107 <param name="count">number of bytes to send.</param> 6107 <param name="count">number of bytes to send.</param>
6108 <seealso cref="M:HttpServer.HttpResponse.Send"/> 6108 <seealso cref="M:HttpServer.HttpResponse.Send"/>
6109 <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/> 6109 <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/>
6110 <remarks>This method can be used if you want to send body contents without caching them first. This 6110 <remarks>This method can be used if you want to send body contents without caching them first. This
6111 is recommended for larger files to keep the memory usage low.</remarks> 6111 is recommended for larger files to keep the memory usage low.</remarks>
6112 </member> 6112 </member>
6113 <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[])"> 6113 <member name="M:HttpServer.HttpResponse.SendBody(System.Byte[])">
6114 <summary> 6114 <summary>
6115 Make sure that you have specified ContentLength and sent the headers first. 6115 Make sure that you have specified ContentLength and sent the headers first.
6116 </summary> 6116 </summary>
6117 <param name="buffer"></param> 6117 <param name="buffer"></param>
6118 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception> 6118 <exception cref="T:System.InvalidOperationException">If headers have not been sent.</exception>
6119 <see cref="M:HttpServer.HttpResponse.SendHeaders"/> 6119 <see cref="M:HttpServer.HttpResponse.SendHeaders"/>
6120 <seealso cref="M:HttpServer.HttpResponse.Send"/> 6120 <seealso cref="M:HttpServer.HttpResponse.Send"/>
6121 <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/> 6121 <seealso cref="M:HttpServer.HttpResponse.SendHeaders"/>
6122 <remarks>This method can be used if you want to send body contents without caching them first. This 6122 <remarks>This method can be used if you want to send body contents without caching them first. This
6123 is recommended for larger files to keep the memory usage low.</remarks> 6123 is recommended for larger files to keep the memory usage low.</remarks>
6124 </member> 6124 </member>
6125 <member name="M:HttpServer.HttpResponse.SendHeaders"> 6125 <member name="M:HttpServer.HttpResponse.SendHeaders">
6126 <summary> 6126 <summary>
6127 Send headers to the client. 6127 Send headers to the client.
6128 </summary> 6128 </summary>
6129 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 6129 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
6130 <seealso cref="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)"/> 6130 <seealso cref="M:HttpServer.HttpResponse.AddHeader(System.String,System.String)"/>
6131 <seealso cref="M:HttpServer.HttpResponse.Send"/> 6131 <seealso cref="M:HttpServer.HttpResponse.Send"/>
6132 <seealso cref="M:HttpServer.HttpResponse.SendBody(System.Byte[])"/> 6132 <seealso cref="M:HttpServer.HttpResponse.SendBody(System.Byte[])"/>
6133 </member> 6133 </member>
6134 <member name="M:HttpServer.HttpResponse.Redirect(System.Uri)"> 6134 <member name="M:HttpServer.HttpResponse.Redirect(System.Uri)">
6135 <summary> 6135 <summary>
6136 Redirect client to somewhere else using the 302 status code. 6136 Redirect client to somewhere else using the 302 status code.
6137 </summary> 6137 </summary>
6138 <param name="uri">Destination of the redirect</param> 6138 <param name="uri">Destination of the redirect</param>
6139 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception> 6139 <exception cref="T:System.InvalidOperationException">If headers already been sent.</exception>
6140 <remarks>You can not do anything more with the request when a redirect have been done. This should be your last 6140 <remarks>You can not do anything more with the request when a redirect have been done. This should be your last
6141 action.</remarks> 6141 action.</remarks>
6142 </member> 6142 </member>
6143 <member name="M:HttpServer.HttpResponse.Redirect(System.String)"> 6143 <member name="M:HttpServer.HttpResponse.Redirect(System.String)">
6144 <summary> 6144 <summary>
6145 redirect to somewhere 6145 redirect to somewhere
6146 </summary> 6146 </summary>
6147 <param name="url">where the redirect should go</param> 6147 <param name="url">where the redirect should go</param>
6148 <remarks> 6148 <remarks>
6149 No body are allowed when doing redirects. 6149 No body are allowed when doing redirects.
6150 </remarks> 6150 </remarks>
6151 </member> 6151 </member>
6152 <member name="P:HttpServer.HttpResponse.Body"> 6152 <member name="P:HttpServer.HttpResponse.Body">
6153 <summary> 6153 <summary>
6154 The body stream is used to cache the body contents 6154 The body stream is used to cache the body contents
6155 before sending everything to the client. It's the simplest 6155 before sending everything to the client. It's the simplest
6156 way to serve documents. 6156 way to serve documents.
6157 </summary> 6157 </summary>
6158 </member> 6158 </member>
6159 <member name="P:HttpServer.HttpResponse.Chunked"> 6159 <member name="P:HttpServer.HttpResponse.Chunked">
6160 <summary> 6160 <summary>
6161 The chunked encoding modifies the body of a message in order to 6161 The chunked encoding modifies the body of a message in order to
6162 transfer it as a series of chunks, each with its own size indicator, 6162 transfer it as a series of chunks, each with its own size indicator,
6163 followed by an OPTIONAL trailer containing entity-header fields. This 6163 followed by an OPTIONAL trailer containing entity-header fields. This
6164 allows dynamically produced content to be transferred along with the 6164 allows dynamically produced content to be transferred along with the
6165 information necessary for the recipient to verify that it has 6165 information necessary for the recipient to verify that it has
6166 received the full message. 6166 received the full message.
6167 </summary> 6167 </summary>
6168 </member> 6168 </member>
6169 <member name="P:HttpServer.HttpResponse.Connection"> 6169 <member name="P:HttpServer.HttpResponse.Connection">
6170 <summary> 6170 <summary>
6171 Kind of connection 6171 Kind of connection
6172 </summary> 6172 </summary>
6173 </member> 6173 </member>
6174 <member name="P:HttpServer.HttpResponse.Encoding"> 6174 <member name="P:HttpServer.HttpResponse.Encoding">
6175 <summary> 6175 <summary>
6176 Encoding to use when sending stuff to the client. 6176 Encoding to use when sending stuff to the client.
6177 </summary> 6177 </summary>
6178 <remarks>Default is UTF8</remarks> 6178 <remarks>Default is UTF8</remarks>
6179 </member> 6179 </member>
6180 <member name="P:HttpServer.HttpResponse.KeepAlive"> 6180 <member name="P:HttpServer.HttpResponse.KeepAlive">
6181 <summary> 6181 <summary>
6182 Number of seconds to keep connection alive 6182 Number of seconds to keep connection alive
6183 </summary> 6183 </summary>
6184 <remarks>Only used if Connection property is set to ConnectionType.KeepAlive</remarks> 6184 <remarks>Only used if Connection property is set to ConnectionType.KeepAlive</remarks>
6185 </member> 6185 </member>
6186 <member name="P:HttpServer.HttpResponse.Status"> 6186 <member name="P:HttpServer.HttpResponse.Status">
6187 <summary> 6187 <summary>
6188 Status code that is sent to the client. 6188 Status code that is sent to the client.
6189 </summary> 6189 </summary>
6190 <remarks>Default is HttpStatusCode.Ok</remarks> 6190 <remarks>Default is HttpStatusCode.Ok</remarks>
6191 </member> 6191 </member>
6192 <member name="P:HttpServer.HttpResponse.Reason"> 6192 <member name="P:HttpServer.HttpResponse.Reason">
6193 <summary> 6193 <summary>
6194 Information about why a specific status code was used. 6194 Information about why a specific status code was used.
6195 </summary> 6195 </summary>
6196 </member> 6196 </member>
6197 <member name="P:HttpServer.HttpResponse.ContentLength"> 6197 <member name="P:HttpServer.HttpResponse.ContentLength">
6198 <summary> 6198 <summary>
6199 Size of the body. MUST be specified before sending the header, 6199 Size of the body. MUST be specified before sending the header,
6200 unless property Chunked is set to true. 6200 unless property Chunked is set to true.
6201 </summary> 6201 </summary>
6202 </member> 6202 </member>
6203 <member name="P:HttpServer.HttpResponse.ContentType"> 6203 <member name="P:HttpServer.HttpResponse.ContentType">
6204 <summary> 6204 <summary>
6205 Kind of content in the body 6205 Kind of content in the body
6206 </summary> 6206 </summary>
6207 <remarks>Default is text/html</remarks> 6207 <remarks>Default is text/html</remarks>
6208 </member> 6208 </member>
6209 <member name="P:HttpServer.HttpResponse.HeadersSent"> 6209 <member name="P:HttpServer.HttpResponse.HeadersSent">
6210 <summary> 6210 <summary>
6211 Headers have been sent to the client- 6211 Headers have been sent to the client-
6212 </summary> 6212 </summary>
6213 <remarks>You can not send any additional headers if they have already been sent.</remarks> 6213 <remarks>You can not send any additional headers if they have already been sent.</remarks>
6214 </member> 6214 </member>
6215 <member name="P:HttpServer.HttpResponse.Sent"> 6215 <member name="P:HttpServer.HttpResponse.Sent">
6216 <summary> 6216 <summary>
6217 The whole response have been sent. 6217 The whole response have been sent.
6218 </summary> 6218 </summary>
6219 </member> 6219 </member>
6220 <member name="P:HttpServer.HttpResponse.Cookies"> 6220 <member name="P:HttpServer.HttpResponse.Cookies">
6221 <summary> 6221 <summary>
6222 Cookies that should be created/changed. 6222 Cookies that should be created/changed.
6223 </summary> 6223 </summary>
6224 </member> 6224 </member>
6225 <member name="T:HttpServer.HttpModules.ReverseProxyModule"> 6225 <member name="T:HttpServer.HttpModules.ReverseProxyModule">
6226 <summary> 6226 <summary>
6227 A reverse proxy are used to act as a bridge between local (protected/hidden) websites 6227 A reverse proxy are used to act as a bridge between local (protected/hidden) websites
6228 and public clients. 6228 and public clients.
6229 6229
6230 A typical usage is to allow web servers on non standard ports to still be available 6230 A typical usage is to allow web servers on non standard ports to still be available
6231 to the public clients, or allow web servers on private ips to be available. 6231 to the public clients, or allow web servers on private ips to be available.
6232 </summary> 6232 </summary>
6233 </member> 6233 </member>
6234 <member name="M:HttpServer.HttpModules.ReverseProxyModule.#ctor(System.String,System.String)"> 6234 <member name="M:HttpServer.HttpModules.ReverseProxyModule.#ctor(System.String,System.String)">
6235 <summary> 6235 <summary>
6236 6236
6237 </summary> 6237 </summary>
6238 <param name="source">Base url requested from browser</param> 6238 <param name="source">Base url requested from browser</param>
6239 <param name="destination">Base url on private web server</param> 6239 <param name="destination">Base url on private web server</param>
6240 <example> 6240 <example>
6241 // this will return contents from http://192.168.1.128/view/jonas when client requests http://www.gauffin.com/user/view/jonas 6241 // this will return contents from http://192.168.1.128/view/jonas when client requests http://www.gauffin.com/user/view/jonas
6242 _server.Add(new ReverseProxyModule("http://www.gauffin.com/user/", "http://192.168.1.128/"); 6242 _server.Add(new ReverseProxyModule("http://www.gauffin.com/user/", "http://192.168.1.128/");
6243 </example> 6243 </example>
6244 </member> 6244 </member>
6245 <member name="M:HttpServer.HttpModules.ReverseProxyModule.CanHandle(System.Uri)"> 6245 <member name="M:HttpServer.HttpModules.ReverseProxyModule.CanHandle(System.Uri)">
6246 <summary> 6246 <summary>
6247 Method that determines if an url should be handled or not by the module 6247 Method that determines if an url should be handled or not by the module
6248 </summary> 6248 </summary>
6249 <param name="uri">Url requested by the client.</param> 6249 <param name="uri">Url requested by the client.</param>
6250 <returns>true if module should handle the url.</returns> 6250 <returns>true if module should handle the url.</returns>
6251 </member> 6251 </member>
6252 <member name="M:HttpServer.HttpModules.ReverseProxyModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 6252 <member name="M:HttpServer.HttpModules.ReverseProxyModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
6253 <summary> 6253 <summary>
6254 Method that process the url 6254 Method that process the url
6255 </summary> 6255 </summary>
6256 <param name="request">Information sent by the browser about the request</param> 6256 <param name="request">Information sent by the browser about the request</param>
6257 <param name="response">Information that is being sent back to the client.</param> 6257 <param name="response">Information that is being sent back to the client.</param>
6258 <param name="session">Session used to </param> 6258 <param name="session">Session used to </param>
6259 </member> 6259 </member>
6260 <member name="T:HttpServer.HttpForm"> 6260 <member name="T:HttpServer.HttpForm">
6261 <summary>Container for posted form data</summary> 6261 <summary>Container for posted form data</summary>
6262 </member> 6262 </member>
6263 <member name="F:HttpServer.HttpForm.EmptyForm"> 6263 <member name="F:HttpServer.HttpForm.EmptyForm">
6264 <summary>Instance to help mark a non-initialized form</summary> 6264 <summary>Instance to help mark a non-initialized form</summary>
6265 </member> 6265 </member>
6266 <member name="M:HttpServer.HttpForm.#ctor"> 6266 <member name="M:HttpServer.HttpForm.#ctor">
6267 <summary>Initializes a form container with the specified name</summary> 6267 <summary>Initializes a form container with the specified name</summary>
6268 </member> 6268 </member>
6269 <member name="M:HttpServer.HttpForm.#ctor(HttpServer.HttpInput)"> 6269 <member name="M:HttpServer.HttpForm.#ctor(HttpServer.HttpInput)">
6270 <summary> 6270 <summary>
6271 Makes a deep copy of the input 6271 Makes a deep copy of the input
6272 </summary> 6272 </summary>
6273 <param name="input">The input to copy</param> 6273 <param name="input">The input to copy</param>
6274 </member> 6274 </member>
6275 <member name="M:HttpServer.HttpForm.AddFile(HttpServer.HttpFile)"> 6275 <member name="M:HttpServer.HttpForm.AddFile(HttpServer.HttpFile)">
6276 <summary> 6276 <summary>
6277 Adds a file to the collection of posted files 6277 Adds a file to the collection of posted files
6278 </summary> 6278 </summary>
6279 <param name="file">The file to add</param> 6279 <param name="file">The file to add</param>
6280 <exception cref="T:System.ArgumentException">If the file is already added</exception> 6280 <exception cref="T:System.ArgumentException">If the file is already added</exception>
6281 <exception cref="T:System.ArgumentNullException">If file is null</exception> 6281 <exception cref="T:System.ArgumentNullException">If file is null</exception>
6282 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception> 6282 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
6283 </member> 6283 </member>
6284 <member name="M:HttpServer.HttpForm.ContainsFile(System.String)"> 6284 <member name="M:HttpServer.HttpForm.ContainsFile(System.String)">
6285 <summary> 6285 <summary>
6286 Checks if the form contains a specified file 6286 Checks if the form contains a specified file
6287 </summary> 6287 </summary>
6288 <param name="name">Field name of the file parameter</param> 6288 <param name="name">Field name of the file parameter</param>
6289 <returns>True if the file exists</returns> 6289 <returns>True if the file exists</returns>
6290 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception> 6290 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
6291 </member> 6291 </member>
6292 <member name="M:HttpServer.HttpForm.GetFile(System.String)"> 6292 <member name="M:HttpServer.HttpForm.GetFile(System.String)">
6293 <summary> 6293 <summary>
6294 Retrieves a file held by by the form 6294 Retrieves a file held by by the form
6295 </summary> 6295 </summary>
6296 <param name="name">The identifier of the file</param> 6296 <param name="name">The identifier of the file</param>
6297 <returns>The requested file or null if the file was not found</returns> 6297 <returns>The requested file or null if the file was not found</returns>
6298 <exception cref="T:System.ArgumentNullException">If name is null or empty</exception> 6298 <exception cref="T:System.ArgumentNullException">If name is null or empty</exception>
6299 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception> 6299 <exception cref="T:System.InvalidOperationException">If the instance is HttpForm.EmptyForm which cannot be modified</exception>
6300 </member> 6300 </member>
6301 <member name="M:HttpServer.HttpForm.Clear"> 6301 <member name="M:HttpServer.HttpForm.Clear">
6302 <summary>Disposes all held HttpFile's and resets values</summary> 6302 <summary>Disposes all held HttpFile's and resets values</summary>
6303 </member> 6303 </member>
6304 <member name="T:HttpServer.Exceptions.InternalServerException"> 6304 <member name="T:HttpServer.Exceptions.InternalServerException">
6305 <summary> 6305 <summary>
6306 The server encountered an unexpected condition which prevented it from fulfilling the request. 6306 The server encountered an unexpected condition which prevented it from fulfilling the request.
6307 </summary> 6307 </summary>
6308 </member> 6308 </member>
6309 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor"> 6309 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor">
6310 <summary> 6310 <summary>
6311 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class. 6311 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
6312 </summary> 6312 </summary>
6313 </member> 6313 </member>
6314 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String)"> 6314 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String)">
6315 <summary> 6315 <summary>
6316 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class. 6316 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
6317 </summary> 6317 </summary>
6318 <param name="message">error message.</param> 6318 <param name="message">error message.</param>
6319 </member> 6319 </member>
6320 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String,System.Exception)"> 6320 <member name="M:HttpServer.Exceptions.InternalServerException.#ctor(System.String,System.Exception)">
6321 <summary> 6321 <summary>
6322 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class. 6322 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.InternalServerException"/> class.
6323 </summary> 6323 </summary>
6324 <param name="message">error message.</param> 6324 <param name="message">error message.</param>
6325 <param name="inner">inner exception.</param> 6325 <param name="inner">inner exception.</param>
6326 </member> 6326 </member>
6327 <member name="T:HttpServer.Controllers.RawHandlerAttribute"> 6327 <member name="T:HttpServer.Controllers.RawHandlerAttribute">
6328 <summary> 6328 <summary>
6329 This attribute tells the controller that the method 6329 This attribute tells the controller that the method
6330 uses SendHeader and/or SendBody to handle the request. 6330 uses SendHeader and/or SendBody to handle the request.
6331 </summary> 6331 </summary>
6332 </member> 6332 </member>
6333 <member name="T:HttpServer.Rendering.Haml.LineInfo"> 6333 <member name="T:HttpServer.Rendering.Haml.LineInfo">
6334 <summary> 6334 <summary>
6335 Contains line text and state information about a line in a HAML template. 6335 Contains line text and state information about a line in a HAML template.
6336 </summary> 6336 </summary>
6337 </member> 6337 </member>
6338 <member name="M:HttpServer.Rendering.Haml.LineInfo.#ctor(System.Int32,System.String)"> 6338 <member name="M:HttpServer.Rendering.Haml.LineInfo.#ctor(System.Int32,System.String)">
6339 <summary> 6339 <summary>
6340 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.LineInfo"/> class. 6340 Initializes a new instance of the <see cref="T:HttpServer.Rendering.Haml.LineInfo"/> class.
6341 </summary> 6341 </summary>
6342 <param name="lineNumber">The line number.</param> 6342 <param name="lineNumber">The line number.</param>
6343 <param name="unparsedData">The unparsed data (line contents).</param> 6343 <param name="unparsedData">The unparsed data (line contents).</param>
6344 </member> 6344 </member>
6345 <member name="M:HttpServer.Rendering.Haml.LineInfo.CheckUnfinishedRule(HttpServer.Rendering.Haml.LineInfo)"> 6345 <member name="M:HttpServer.Rendering.Haml.LineInfo.CheckUnfinishedRule(HttpServer.Rendering.Haml.LineInfo)">
6346 <summary> 6346 <summary>
6347 Will check that all rule conditions have been met. 6347 Will check that all rule conditions have been met.
6348 Will also remove the rules if they are done. 6348 Will also remove the rules if they are done.
6349 </summary> 6349 </summary>
6350 <param name="line"></param> 6350 <param name="line"></param>
6351 <returns></returns> 6351 <returns></returns>
6352 </member> 6352 </member>
6353 <member name="M:HttpServer.Rendering.Haml.LineInfo.Append(HttpServer.Rendering.Haml.LineInfo)"> 6353 <member name="M:HttpServer.Rendering.Haml.LineInfo.Append(HttpServer.Rendering.Haml.LineInfo)">
6354 <summary> 6354 <summary>
6355 Append another line 6355 Append another line
6356 </summary> 6356 </summary>
6357 <param name="line"></param> 6357 <param name="line"></param>
6358 </member> 6358 </member>
6359 <member name="M:HttpServer.Rendering.Haml.LineInfo.SetParsedData(System.String)"> 6359 <member name="M:HttpServer.Rendering.Haml.LineInfo.SetParsedData(System.String)">
6360 <summary> 6360 <summary>
6361 Parsed line contents (without whitespaces in the beginning) 6361 Parsed line contents (without whitespaces in the beginning)
6362 </summary> 6362 </summary>
6363 <param name="data">text contents</param> 6363 <param name="data">text contents</param>
6364 </member> 6364 </member>
6365 <member name="M:HttpServer.Rendering.Haml.LineInfo.Set(System.Int32,System.Int32)"> 6365 <member name="M:HttpServer.Rendering.Haml.LineInfo.Set(System.Int32,System.Int32)">
6366 <summary> 6366 <summary>
6367 Set intendation info to previously added line text. 6367 Set intendation info to previously added line text.
6368 </summary> 6368 </summary>
6369 <param name="whiteSpaces"></param> 6369 <param name="whiteSpaces"></param>
6370 <param name="intendation"></param> 6370 <param name="intendation"></param>
6371 </member> 6371 </member>
6372 <member name="M:HttpServer.Rendering.Haml.LineInfo.Set(System.String,System.Int32,System.Int32)"> 6372 <member name="M:HttpServer.Rendering.Haml.LineInfo.Set(System.String,System.Int32,System.Int32)">
6373 <summary> 6373 <summary>
6374 Assign line text 6374 Assign line text
6375 </summary> 6375 </summary>
6376 <param name="line"></param> 6376 <param name="line"></param>
6377 <param name="whiteSpaces"></param> 6377 <param name="whiteSpaces"></param>
6378 <param name="intendation"></param> 6378 <param name="intendation"></param>
6379 </member> 6379 </member>
6380 <member name="M:HttpServer.Rendering.Haml.LineInfo.TrimRight(System.Int32)"> 6380 <member name="M:HttpServer.Rendering.Haml.LineInfo.TrimRight(System.Int32)">
6381 <summary> 6381 <summary>
6382 6382
6383 </summary> 6383 </summary>
6384 <param name="count"></param> 6384 <param name="count"></param>
6385 <exception cref="T:System.InvalidOperationException">If extra lines have been added.</exception> 6385 <exception cref="T:System.InvalidOperationException">If extra lines have been added.</exception>
6386 </member> 6386 </member>
6387 <member name="P:HttpServer.Rendering.Haml.LineInfo.AppendNextLine"> 6387 <member name="P:HttpServer.Rendering.Haml.LineInfo.AppendNextLine">
6388 <summary> 6388 <summary>
6389 If the next line should be appended to us (multi line) 6389 If the next line should be appended to us (multi line)
6390 </summary> 6390 </summary>
6391 </member> 6391 </member>
6392 <member name="P:HttpServer.Rendering.Haml.LineInfo.Children"> 6392 <member name="P:HttpServer.Rendering.Haml.LineInfo.Children">
6393 <summary> 6393 <summary>
6394 Do NOT add yourself using the Add methods of the linkedList. 6394 Do NOT add yourself using the Add methods of the linkedList.
6395 Parent property will add node. 6395 Parent property will add node.
6396 </summary> 6396 </summary>
6397 </member> 6397 </member>
6398 <member name="P:HttpServer.Rendering.Haml.LineInfo.UnparsedData"> 6398 <member name="P:HttpServer.Rendering.Haml.LineInfo.UnparsedData">
6399 <summary> 6399 <summary>
6400 Untouched line text 6400 Untouched line text
6401 </summary> 6401 </summary>
6402 </member> 6402 </member>
6403 <member name="P:HttpServer.Rendering.Haml.LineInfo.HasChildren"> 6403 <member name="P:HttpServer.Rendering.Haml.LineInfo.HasChildren">
6404 <summary> 6404 <summary>
6405 Has one or more children (intented more that this one) 6405 Has one or more children (intented more that this one)
6406 </summary> 6406 </summary>
6407 </member> 6407 </member>
6408 <member name="P:HttpServer.Rendering.Haml.LineInfo.Intendation"> 6408 <member name="P:HttpServer.Rendering.Haml.LineInfo.Intendation">
6409 <summary> 6409 <summary>
6410 Number of intends (two spaces = 1, one tab = 1) 6410 Number of intends (two spaces = 1, one tab = 1)
6411 </summary> 6411 </summary>
6412 </member> 6412 </member>
6413 <member name="P:HttpServer.Rendering.Haml.LineInfo.LineNumber"> 6413 <member name="P:HttpServer.Rendering.Haml.LineInfo.LineNumber">
6414 <summary> 6414 <summary>
6415 Line number 6415 Line number
6416 </summary> 6416 </summary>
6417 </member> 6417 </member>
6418 <member name="P:HttpServer.Rendering.Haml.LineInfo.Parent"> 6418 <member name="P:HttpServer.Rendering.Haml.LineInfo.Parent">
6419 <summary> 6419 <summary>
6420 Parent node (one level up in intendation) 6420 Parent node (one level up in intendation)
6421 </summary> 6421 </summary>
6422 </member> 6422 </member>
6423 <member name="P:HttpServer.Rendering.Haml.LineInfo.Data"> 6423 <member name="P:HttpServer.Rendering.Haml.LineInfo.Data">
6424 <summary> 6424 <summary>
6425 All line data generated on one line 6425 All line data generated on one line
6426 </summary> 6426 </summary>
6427 </member> 6427 </member>
6428 <member name="P:HttpServer.Rendering.Haml.LineInfo.UnfinishedRule"> 6428 <member name="P:HttpServer.Rendering.Haml.LineInfo.UnfinishedRule">
6429 <summary> 6429 <summary>
6430 IRule have not got all needed information yet, 6430 IRule have not got all needed information yet,
6431 keep appending lines to this LineInfo until rule says that it's done. 6431 keep appending lines to this LineInfo until rule says that it's done.
6432 </summary> 6432 </summary>
6433 </member> 6433 </member>
6434 <member name="P:HttpServer.Rendering.Haml.LineInfo.WhiteSpaces"> 6434 <member name="P:HttpServer.Rendering.Haml.LineInfo.WhiteSpaces">
6435 <summary> 6435 <summary>
6436 Number of whitespaces before actual entry beings. 6436 Number of whitespaces before actual entry beings.
6437 </summary> 6437 </summary>
6438 </member> 6438 </member>
6439 <member name="P:HttpServer.Rendering.Haml.LineInfo.SelfClosed"> 6439 <member name="P:HttpServer.Rendering.Haml.LineInfo.SelfClosed">
6440 <summary> 6440 <summary>
6441 True if node is selfclosed (i.e. &lt;br /&gt;) 6441 True if node is selfclosed (i.e. &lt;br /&gt;)
6442 </summary> 6442 </summary>
6443 </member> 6443 </member>
6444 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 6444 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
6445 <summary> 6445 <summary>
6446 Parse node contents add return a fresh node. 6446 Parse node contents add return a fresh node.
6447 </summary> 6447 </summary>
6448 <param name="prototypes">List containing all node types</param> 6448 <param name="prototypes">List containing all node types</param>
6449 <param name="parent">Node that this is a subnode to. Can be null</param> 6449 <param name="parent">Node that this is a subnode to. Can be null</param>
6450 <param name="line">Line to parse</param> 6450 <param name="line">Line to parse</param>
6451 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 6451 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
6452 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 6452 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
6453 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 6453 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
6454 </member> 6454 </member>
6455 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.CanHandle(System.String,System.Boolean)"> 6455 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.CanHandle(System.String,System.Boolean)">
6456 <summary> 6456 <summary>
6457 determines if this node can handle the line (by checking the first word); 6457 determines if this node can handle the line (by checking the first word);
6458 </summary> 6458 </summary>
6459 <param name="word">Controller char (word)</param> 6459 <param name="word">Controller char (word)</param>
6460 <returns>true if text belongs to this node type</returns> 6460 <returns>true if text belongs to this node type</returns>
6461 <param name="firstNode">First node on line, used since some nodes cannot exist on their own on a line.</param> 6461 <param name="firstNode">First node on line, used since some nodes cannot exist on their own on a line.</param>
6462 </member> 6462 </member>
6463 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.ToHtml"> 6463 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.ToHtml">
6464 <summary> 6464 <summary>
6465 Convert node to HTML (with ASP-tags) 6465 Convert node to HTML (with ASP-tags)
6466 </summary> 6466 </summary>
6467 <returns>HTML string</returns> 6467 <returns>HTML string</returns>
6468 <exception cref="T:System.NotImplementedException"></exception> 6468 <exception cref="T:System.NotImplementedException"></exception>
6469 </member> 6469 </member>
6470 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 6470 <member name="M:HttpServer.Rendering.Haml.Nodes.DocTypeTag.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
6471 <summary> 6471 <summary>
6472 Convert the node to c# code 6472 Convert the node to c# code
6473 </summary> 6473 </summary>
6474 <param name="inString">True if we are inside the internal stringbuilder</param> 6474 <param name="inString">True if we are inside the internal stringbuilder</param>
6475 <param name="smallEnough">true if all subnodes fit on one line</param> 6475 <param name="smallEnough">true if all subnodes fit on one line</param>
6476 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 6476 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
6477 <returns>c# code</returns> 6477 <returns>c# code</returns>
6478 </member> 6478 </member>
6479 <member name="P:HttpServer.Rendering.Haml.Nodes.DocTypeTag.IsTextNode"> 6479 <member name="P:HttpServer.Rendering.Haml.Nodes.DocTypeTag.IsTextNode">
6480 <summary> 6480 <summary>
6481 Text nodes should be added as child. 6481 Text nodes should be added as child.
6482 </summary> 6482 </summary>
6483 </member> 6483 </member>
6484 <member name="T:HttpServer.HttpModules.HttpModuleExceptionEventArgs"> 6484 <member name="T:HttpServer.HttpModules.HttpModuleExceptionEventArgs">
6485 <summary> 6485 <summary>
6486 Used to inform http server that 6486 Used to inform http server that
6487 </summary> 6487 </summary>
6488 </member> 6488 </member>
6489 <member name="M:HttpServer.HttpModules.HttpModuleExceptionEventArgs.#ctor(System.Exception)"> 6489 <member name="M:HttpServer.HttpModules.HttpModuleExceptionEventArgs.#ctor(System.Exception)">
6490 <summary> 6490 <summary>
6491 Eventarguments used when an exception is thrown by a module 6491 Eventarguments used when an exception is thrown by a module
6492 </summary> 6492 </summary>
6493 <param name="e">the exception</param> 6493 <param name="e">the exception</param>
6494 </member> 6494 </member>
6495 <member name="P:HttpServer.HttpModules.HttpModuleExceptionEventArgs.Exception"> 6495 <member name="P:HttpServer.HttpModules.HttpModuleExceptionEventArgs.Exception">
6496 <summary> 6496 <summary>
6497 Exception thrown in a module 6497 Exception thrown in a module
6498 </summary> 6498 </summary>
6499 </member> 6499 </member>
6500 <member name="T:HttpServer.Controllers.ViewController"> 6500 <member name="T:HttpServer.Controllers.ViewController">
6501 <summary> 6501 <summary>
6502 View controllers integrates the templates, by adding 6502 View controllers integrates the templates, by adding
6503 Render methods. 6503 Render methods.
6504 </summary> 6504 </summary>
6505 </member> 6505 </member>
6506 <member name="M:HttpServer.Controllers.ViewController.#ctor(HttpServer.Rendering.TemplateManager)"> 6506 <member name="M:HttpServer.Controllers.ViewController.#ctor(HttpServer.Rendering.TemplateManager)">
6507 <summary> 6507 <summary>
6508 Create a new <see cref="T:HttpServer.Controllers.ViewController"/>. 6508 Create a new <see cref="T:HttpServer.Controllers.ViewController"/>.
6509 </summary> 6509 </summary>
6510 </member> 6510 </member>
6511 <member name="M:HttpServer.Controllers.ViewController.#ctor(HttpServer.Controllers.ViewController)"> 6511 <member name="M:HttpServer.Controllers.ViewController.#ctor(HttpServer.Controllers.ViewController)">
6512 <summary> 6512 <summary>
6513 Create a new <see cref="T:HttpServer.Controllers.ViewController"/>. 6513 Create a new <see cref="T:HttpServer.Controllers.ViewController"/>.
6514 </summary> 6514 </summary>
6515 <param name="controller">prototype to copy information from.</param> 6515 <param name="controller">prototype to copy information from.</param>
6516 </member> 6516 </member>
6517 <member name="M:HttpServer.Controllers.ViewController.Render(System.Object[])"> 6517 <member name="M:HttpServer.Controllers.ViewController.Render(System.Object[])">
6518 <summary> 6518 <summary>
6519 Render template for the currently invoked method. 6519 Render template for the currently invoked method.
6520 </summary> 6520 </summary>
6521 <param name="args">arguments/parameters used in template</param> 6521 <param name="args">arguments/parameters used in template</param>
6522 <returns>template generated content</returns> 6522 <returns>template generated content</returns>
6523 <remarks>calls RenderActionWithErrors</remarks> 6523 <remarks>calls RenderActionWithErrors</remarks>
6524 </member> 6524 </member>
6525 <member name="M:HttpServer.Controllers.ViewController.RenderAction(System.String,System.Object[])"> 6525 <member name="M:HttpServer.Controllers.ViewController.RenderAction(System.String,System.Object[])">
6526 <summary> 6526 <summary>
6527 Render contents into a template. 6527 Render contents into a template.
6528 </summary> 6528 </summary>
6529 <param name="method">method/template to generate</param> 6529 <param name="method">method/template to generate</param>
6530 <param name="args">arguments/parameters used in template</param> 6530 <param name="args">arguments/parameters used in template</param>
6531 <returns>template generated content</returns> 6531 <returns>template generated content</returns>
6532 <remarks>calls RenderActionWithErrors.</remarks> 6532 <remarks>calls RenderActionWithErrors.</remarks>
6533 </member> 6533 </member>
6534 <member name="M:HttpServer.Controllers.ViewController.MergeArguments(System.Object[])"> 6534 <member name="M:HttpServer.Controllers.ViewController.MergeArguments(System.Object[])">
6535 <summary> 6535 <summary>
6536 Merge arguments array and Arguments property. 6536 Merge arguments array and Arguments property.
6537 </summary> 6537 </summary>
6538 <param name="args">Arguments array to merge</param> 6538 <param name="args">Arguments array to merge</param>
6539 <returns>arguments/parameters that can be used in the template.</returns> 6539 <returns>arguments/parameters that can be used in the template.</returns>
6540 <remarks>Will add Request/Response/Session arguments</remarks> 6540 <remarks>Will add Request/Response/Session arguments</remarks>
6541 </member> 6541 </member>
6542 <member name="M:HttpServer.Controllers.ViewController.RenderErrors(System.String,System.Object[])"> 6542 <member name="M:HttpServer.Controllers.ViewController.RenderErrors(System.String,System.Object[])">
6543 <summary> 6543 <summary>
6544 Renders errors from the <see cref="P:HttpServer.Controllers.ViewController.Errors"/> property into the 6544 Renders errors from the <see cref="P:HttpServer.Controllers.ViewController.Errors"/> property into the
6545 current method template, or as a JavaScript alert if the request is Ajax. 6545 current method template, or as a JavaScript alert if the request is Ajax.
6546 </summary> 6546 </summary>
6547 <param name="method">name of the currently invoked method.</param> 6547 <param name="method">name of the currently invoked method.</param>
6548 <param name="arguments">arguments used in the method template.</param> 6548 <param name="arguments">arguments used in the method template.</param>
6549 <returns>generated string</returns> 6549 <returns>generated string</returns>
6550 <remarks>Creates a JavaScript Alert box if request is Ajax.</remarks> 6550 <remarks>Creates a JavaScript Alert box if request is Ajax.</remarks>
6551 </member> 6551 </member>
6552 <member name="M:HttpServer.Controllers.ViewController.RenderErrors(System.Collections.Specialized.NameValueCollection,System.String,System.Object[])"> 6552 <member name="M:HttpServer.Controllers.ViewController.RenderErrors(System.Collections.Specialized.NameValueCollection,System.String,System.Object[])">
6553 <summary> 6553 <summary>
6554 Renders errors from the <see cref="P:HttpServer.Controllers.ViewController.Errors"/> property into the 6554 Renders errors from the <see cref="P:HttpServer.Controllers.ViewController.Errors"/> property into the
6555 current method template, or as a JavaScript alert if the request is Ajax. 6555 current method template, or as a JavaScript alert if the request is Ajax.
6556 </summary> 6556 </summary>
6557 <param name="errors">A collection of errors.</param> 6557 <param name="errors">A collection of errors.</param>
6558 <param name="method">name of the currently invoked method.</param> 6558 <param name="method">name of the currently invoked method.</param>
6559 <param name="arguments">arguments used in the method template.</param> 6559 <param name="arguments">arguments used in the method template.</param>
6560 <returns>generated string</returns> 6560 <returns>generated string</returns>
6561 <remarks>Creates a JavaScript Alert box if request is Ajax.</remarks> 6561 <remarks>Creates a JavaScript Alert box if request is Ajax.</remarks>
6562 </member> 6562 </member>
6563 <member name="M:HttpServer.Controllers.ViewController.RenderJavascript(System.String)"> 6563 <member name="M:HttpServer.Controllers.ViewController.RenderJavascript(System.String)">
6564 <summary> 6564 <summary>
6565 Switches content-type to "text/JavaScript" and returns content. 6565 Switches content-type to "text/JavaScript" and returns content.
6566 </summary> 6566 </summary>
6567 <param name="js">JavaScript to send to the client.</param> 6567 <param name="js">JavaScript to send to the client.</param>
6568 <returns>JavaScript</returns> 6568 <returns>JavaScript</returns>
6569 </member> 6569 </member>
6570 <member name="M:HttpServer.Controllers.ViewController.RenderJsErrors(System.Collections.Specialized.NameValueCollection)"> 6570 <member name="M:HttpServer.Controllers.ViewController.RenderJsErrors(System.Collections.Specialized.NameValueCollection)">
6571 <summary> 6571 <summary>
6572 Creates a JavaScript "alert" filled with all errors. 6572 Creates a JavaScript "alert" filled with all errors.
6573 </summary> 6573 </summary>
6574 <param name="errors"></param> 6574 <param name="errors"></param>
6575 <returns>a</returns> 6575 <returns>a</returns>
6576 </member> 6576 </member>
6577 <member name="M:HttpServer.Controllers.ViewController.RenderLayout(System.String,System.String)"> 6577 <member name="M:HttpServer.Controllers.ViewController.RenderLayout(System.String,System.String)">
6578 <summary> 6578 <summary>
6579 renders one of the layouts 6579 renders one of the layouts
6580 </summary> 6580 </summary>
6581 <param name="layoutName">layout to render (should be found in the "views\\layouts" folder).</param> 6581 <param name="layoutName">layout to render (should be found in the "views\\layouts" folder).</param>
6582 <param name="contents">contents will be put in the template variable called "text".</param> 6582 <param name="contents">contents will be put in the template variable called "text".</param>
6583 <returns>generated text/HTML.</returns> 6583 <returns>generated text/HTML.</returns>
6584 </member> 6584 </member>
6585 <member name="M:HttpServer.Controllers.ViewController.RenderTemplate(System.String,System.String,System.Object[])"> 6585 <member name="M:HttpServer.Controllers.ViewController.RenderTemplate(System.String,System.String,System.Object[])">
6586 <summary> 6586 <summary>
6587 Render a template. 6587 Render a template.
6588 </summary> 6588 </summary>
6589 <remarks>Merges the Arguments property with the <c>args</c> parameter and pass those to the template.</remarks> 6589 <remarks>Merges the Arguments property with the <c>args</c> parameter and pass those to the template.</remarks>
6590 <param name="controller">controller name are used as a folder name when looking for the template.</param> 6590 <param name="controller">controller name are used as a folder name when looking for the template.</param>
6591 <param name="method">method are used as filename when looking for the template.</param> 6591 <param name="method">method are used as filename when looking for the template.</param>
6592 <param name="args">arguments that should be passed to the template.</param> 6592 <param name="args">arguments that should be passed to the template.</param>
6593 <returns></returns> 6593 <returns></returns>
6594 </member> 6594 </member>
6595 <member name="M:HttpServer.Controllers.ViewController.SetupRequest(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 6595 <member name="M:HttpServer.Controllers.ViewController.SetupRequest(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
6596 <summary> 6596 <summary>
6597 Invoked each time a new request is about to be invoked. 6597 Invoked each time a new request is about to be invoked.
6598 </summary> 6598 </summary>
6599 <remarks>Can be used to clear old data.</remarks> 6599 <remarks>Can be used to clear old data.</remarks>
6600 <param name="request"></param> 6600 <param name="request"></param>
6601 <param name="response"></param> 6601 <param name="response"></param>
6602 <param name="session"></param> 6602 <param name="session"></param>
6603 </member> 6603 </member>
6604 <member name="P:HttpServer.Controllers.ViewController.Arguments"> 6604 <member name="P:HttpServer.Controllers.ViewController.Arguments">
6605 <summary> 6605 <summary>
6606 Arguments that are being used in the templates. 6606 Arguments that are being used in the templates.
6607 </summary> 6607 </summary>
6608 </member> 6608 </member>
6609 <member name="P:HttpServer.Controllers.ViewController.Errors"> 6609 <member name="P:HttpServer.Controllers.ViewController.Errors">
6610 <summary> 6610 <summary>
6611 A set of errors that occurred during request processing. 6611 A set of errors that occurred during request processing.
6612 Key should be argument name (if argument error, otherwise <see cref="F:System.String.Empty"/>), value should be 6612 Key should be argument name (if argument error, otherwise <see cref="F:System.String.Empty"/>), value should be
6613 the error message. 6613 the error message.
6614 </summary> 6614 </summary>
6615 <remarks>Errors can be rendered into templates using the <see cref="M:HttpServer.Helpers.WebHelper.Errors(System.Collections.Specialized.NameValueCollection)"/> method.</remarks> 6615 <remarks>Errors can be rendered into templates using the <see cref="M:HttpServer.Helpers.WebHelper.Errors(System.Collections.Specialized.NameValueCollection)"/> method.</remarks>
6616 <seealso cref="T:HttpServer.Helpers.WebHelper"/> 6616 <seealso cref="T:HttpServer.Helpers.WebHelper"/>
6617 </member> 6617 </member>
6618 <member name="P:HttpServer.Controllers.ViewController.IncludeLayoutInAjaxRequests"> 6618 <member name="P:HttpServer.Controllers.ViewController.IncludeLayoutInAjaxRequests">
6619 <summary> 6619 <summary>
6620 True if we always should render contents inside page layouts when request is Ajax. 6620 True if we always should render contents inside page layouts when request is Ajax.
6621 </summary> 6621 </summary>
6622 <remarks>default is false.</remarks> 6622 <remarks>default is false.</remarks>
6623 </member> 6623 </member>
6624 <member name="P:HttpServer.Controllers.ViewController.Layout"> 6624 <member name="P:HttpServer.Controllers.ViewController.Layout">
6625 <summary> 6625 <summary>
6626 Which page layout to use (without file extension) 6626 Which page layout to use (without file extension)
6627 </summary> 6627 </summary>
6628 <remarks> 6628 <remarks>
6629 <para> 6629 <para>
6630 Page layouts should be places in the Views\Layouts folder. 6630 Page layouts should be places in the Views\Layouts folder.
6631 </para> 6631 </para>
6632 <para> 6632 <para>
6633 default is "Application" 6633 default is "Application"
6634 </para> 6634 </para>
6635 </remarks> 6635 </remarks>
6636 </member> 6636 </member>
6637 <member name="P:HttpServer.Controllers.ViewController.Title"> 6637 <member name="P:HttpServer.Controllers.ViewController.Title">
6638 <summary> 6638 <summary>
6639 Page title (are added as a parameter to the layout template, use it in &lt;title&gt; HTML tag. 6639 Page title (are added as a parameter to the layout template, use it in &lt;title&gt; HTML tag.
6640 </summary> 6640 </summary>
6641 </member> 6641 </member>
6642 <member name="T:HttpServer.Sessions.HttpSessionClearedArgs"> 6642 <member name="T:HttpServer.Sessions.HttpSessionClearedArgs">
6643 <summary> 6643 <summary>
6644 Arguments sent when a <see cref="T:HttpServer.Sessions.IHttpSession"/> is cleared 6644 Arguments sent when a <see cref="T:HttpServer.Sessions.IHttpSession"/> is cleared
6645 </summary> 6645 </summary>
6646 </member> 6646 </member>
6647 <member name="M:HttpServer.Sessions.HttpSessionClearedArgs.#ctor(System.Boolean)"> 6647 <member name="M:HttpServer.Sessions.HttpSessionClearedArgs.#ctor(System.Boolean)">
6648 <summary> 6648 <summary>
6649 Instantiates the arguments for the event 6649 Instantiates the arguments for the event
6650 </summary> 6650 </summary>
6651 <param name="expired">True if the session is cleared due to expiration</param> 6651 <param name="expired">True if the session is cleared due to expiration</param>
6652 </member> 6652 </member>
6653 <member name="P:HttpServer.Sessions.HttpSessionClearedArgs.Expired"> 6653 <member name="P:HttpServer.Sessions.HttpSessionClearedArgs.Expired">
6654 <summary> 6654 <summary>
6655 Returns true if the session is cleared due to expiration 6655 Returns true if the session is cleared due to expiration
6656 </summary> 6656 </summary>
6657 </member> 6657 </member>
6658 <member name="T:HttpServer.Sessions.HttpSessionClearedHandler"> 6658 <member name="T:HttpServer.Sessions.HttpSessionClearedHandler">
6659 <summary> 6659 <summary>
6660 Delegate for when a IHttpSession is cleared 6660 Delegate for when a IHttpSession is cleared
6661 </summary> 6661 </summary>
6662 <param name="session"><see cref="T:HttpServer.Sessions.IHttpSession"/> this is being cleared.</param> 6662 <param name="session"><see cref="T:HttpServer.Sessions.IHttpSession"/> this is being cleared.</param>
6663 <param name="args">Arguments for the clearing</param> 6663 <param name="args">Arguments for the clearing</param>
6664 </member> 6664 </member>
6665 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 6665 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
6666 <summary> 6666 <summary>
6667 Parse node contents add return a fresh node. 6667 Parse node contents add return a fresh node.
6668 </summary> 6668 </summary>
6669 <param name="prototypes">List containing all node types</param> 6669 <param name="prototypes">List containing all node types</param>
6670 <param name="parent">Node that this is a subnode to. Can be null</param> 6670 <param name="parent">Node that this is a subnode to. Can be null</param>
6671 <param name="line">Line to parse</param> 6671 <param name="line">Line to parse</param>
6672 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 6672 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
6673 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 6673 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
6674 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 6674 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
6675 </member> 6675 </member>
6676 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.CanHandle(System.String,System.Boolean)"> 6676 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.CanHandle(System.String,System.Boolean)">
6677 <summary> 6677 <summary>
6678 determines if this node can handle the line (by checking the first word); 6678 determines if this node can handle the line (by checking the first word);
6679 </summary> 6679 </summary>
6680 <param name="word">Controller char (word)</param> 6680 <param name="word">Controller char (word)</param>
6681 <returns>true if text belongs to this node type</returns> 6681 <returns>true if text belongs to this node type</returns>
6682 <param name="firstNode">first node on line</param> 6682 <param name="firstNode">first node on line</param>
6683 </member> 6683 </member>
6684 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.ToHtml"> 6684 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.ToHtml">
6685 <summary> 6685 <summary>
6686 Convert node to HTML (with ASP-tags) 6686 Convert node to HTML (with ASP-tags)
6687 </summary> 6687 </summary>
6688 <returns>HTML string</returns> 6688 <returns>HTML string</returns>
6689 </member> 6689 </member>
6690 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 6690 <member name="M:HttpServer.Rendering.Haml.Nodes.IdNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
6691 <summary> 6691 <summary>
6692 Convert the node to c# code 6692 Convert the node to c# code
6693 </summary> 6693 </summary>
6694 <param name="inString">True if we are inside the internal stringbuilder</param> 6694 <param name="inString">True if we are inside the internal stringbuilder</param>
6695 <param name="smallEnough">true if all subnodes fit on one line</param> 6695 <param name="smallEnough">true if all subnodes fit on one line</param>
6696 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 6696 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
6697 <returns>c# code</returns> 6697 <returns>c# code</returns>
6698 </member> 6698 </member>
6699 <member name="T:HttpServer.Rendering.Haml.NodeList"> 6699 <member name="T:HttpServer.Rendering.Haml.NodeList">
6700 <summary> 6700 <summary>
6701 A list of prototype nodes. 6701 A list of prototype nodes.
6702 </summary> 6702 </summary>
6703 </member> 6703 </member>
6704 <member name="M:HttpServer.Rendering.Haml.NodeList.CreateNode(System.String,HttpServer.Rendering.Haml.Nodes.Node)"> 6704 <member name="M:HttpServer.Rendering.Haml.NodeList.CreateNode(System.String,HttpServer.Rendering.Haml.Nodes.Node)">
6705 <summary> 6705 <summary>
6706 Creates the node. 6706 Creates the node.
6707 </summary> 6707 </summary>
6708 <param name="word">node identifier.</param> 6708 <param name="word">node identifier.</param>
6709 <param name="parent">parent node.</param> 6709 <param name="parent">parent node.</param>
6710 <returns>created node if identifier was found; otherwise null.</returns> 6710 <returns>created node if identifier was found; otherwise null.</returns>
6711 </member> 6711 </member>
6712 <member name="M:HttpServer.Rendering.Haml.NodeList.GetPrototype(System.String,System.Boolean)"> 6712 <member name="M:HttpServer.Rendering.Haml.NodeList.GetPrototype(System.String,System.Boolean)">
6713 <summary> 6713 <summary>
6714 6714
6715 </summary> 6715 </summary>
6716 <param name="word"></param> 6716 <param name="word"></param>
6717 <param name="firstNode">first node on line</param> 6717 <param name="firstNode">first node on line</param>
6718 <returns></returns> 6718 <returns></returns>
6719 </member> 6719 </member>
6720 <member name="M:HttpServer.Rendering.Haml.NodeList.Add(HttpServer.Rendering.Haml.Nodes.Node)"> 6720 <member name="M:HttpServer.Rendering.Haml.NodeList.Add(HttpServer.Rendering.Haml.Nodes.Node)">
6721 <summary> 6721 <summary>
6722 Add a prototype 6722 Add a prototype
6723 </summary> 6723 </summary>
6724 <param name="node">prototype node</param> 6724 <param name="node">prototype node</param>
6725 </member> 6725 </member>
6726 <member name="T:HttpServer.HttpModules.FileModule"> 6726 <member name="T:HttpServer.HttpModules.FileModule">
6727 <summary> 6727 <summary>
6728 The purpose of this module is to serve files. 6728 The purpose of this module is to serve files.
6729 </summary> 6729 </summary>
6730 </member> 6730 </member>
6731 <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String,System.Boolean)"> 6731 <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String,System.Boolean)">
6732 <summary> 6732 <summary>
6733 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class. 6733 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class.
6734 </summary> 6734 </summary>
6735 <param name="baseUri">Uri to serve, for instance "/files/"</param> 6735 <param name="baseUri">Uri to serve, for instance "/files/"</param>
6736 <param name="basePath">Path on hard drive where we should start looking for files</param> 6736 <param name="basePath">Path on hard drive where we should start looking for files</param>
6737 <param name="useLastModifiedHeader">If true a Last-Modifed header will be sent upon requests urging webbrowser to cache files</param> 6737 <param name="useLastModifiedHeader">If true a Last-Modifed header will be sent upon requests urging webbrowser to cache files</param>
6738 </member> 6738 </member>
6739 <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String)"> 6739 <member name="M:HttpServer.HttpModules.FileModule.#ctor(System.String,System.String)">
6740 <summary> 6740 <summary>
6741 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class. 6741 Initializes a new instance of the <see cref="T:HttpServer.HttpModules.FileModule"/> class.
6742 </summary> 6742 </summary>
6743 <param name="baseUri">Uri to serve, for instance "/files/"</param> 6743 <param name="baseUri">Uri to serve, for instance "/files/"</param>
6744 <param name="basePath">Path on hard drive where we should start looking for files</param> 6744 <param name="basePath">Path on hard drive where we should start looking for files</param>
6745 </member> 6745 </member>
6746 <member name="M:HttpServer.HttpModules.FileModule.AddDefaultMimeTypes"> 6746 <member name="M:HttpServer.HttpModules.FileModule.AddDefaultMimeTypes">
6747 <summary> 6747 <summary>
6748 Mimtypes that this class can handle per default 6748 Mimtypes that this class can handle per default
6749 </summary> 6749 </summary>
6750 </member> 6750 </member>
6751 <member name="M:HttpServer.HttpModules.FileModule.CanHandle(System.Uri)"> 6751 <member name="M:HttpServer.HttpModules.FileModule.CanHandle(System.Uri)">
6752 <summary> 6752 <summary>
6753 Determines if the request should be handled by this module. 6753 Determines if the request should be handled by this module.
6754 Invoked by the HttpServer 6754 Invoked by the HttpServer
6755 </summary> 6755 </summary>
6756 <param name="uri"></param> 6756 <param name="uri"></param>
6757 <returns>true if this module should handle it.</returns> 6757 <returns>true if this module should handle it.</returns>
6758 </member> 6758 </member>
6759 <member name="M:HttpServer.HttpModules.FileModule.Contains(System.String,System.Collections.Generic.IEnumerable{System.String})"> 6759 <member name="M:HttpServer.HttpModules.FileModule.Contains(System.String,System.Collections.Generic.IEnumerable{System.String})">
6760 <summary> 6760 <summary>
6761 check if source contains any of the chars. 6761 check if source contains any of the chars.
6762 </summary> 6762 </summary>
6763 <param name="source"></param> 6763 <param name="source"></param>
6764 <param name="chars"></param> 6764 <param name="chars"></param>
6765 <returns></returns> 6765 <returns></returns>
6766 </member> 6766 </member>
6767 <member name="M:HttpServer.HttpModules.FileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)"> 6767 <member name="M:HttpServer.HttpModules.FileModule.Process(HttpServer.IHttpRequest,HttpServer.IHttpResponse,HttpServer.Sessions.IHttpSession)">
6768 <summary> 6768 <summary>
6769 Method that process the url 6769 Method that process the url
6770 </summary> 6770 </summary>
6771 <param name="request">Information sent by the browser about the request</param> 6771 <param name="request">Information sent by the browser about the request</param>
6772 <param name="response">Information that is being sent back to the client.</param> 6772 <param name="response">Information that is being sent back to the client.</param>
6773 <param name="session">Session used to </param> 6773 <param name="session">Session used to </param>
6774 </member> 6774 </member>
6775 <member name="M:HttpServer.HttpModules.FileModule.GetFileExtension(System.String)"> 6775 <member name="M:HttpServer.HttpModules.FileModule.GetFileExtension(System.String)">
6776 <summary> 6776 <summary>
6777 return a file extension from an absolute uri path (or plain filename) 6777 return a file extension from an absolute uri path (or plain filename)
6778 </summary> 6778 </summary>
6779 <param name="uri"></param> 6779 <param name="uri"></param>
6780 <returns></returns> 6780 <returns></returns>
6781 </member> 6781 </member>
6782 <member name="P:HttpServer.HttpModules.FileModule.MimeTypes"> 6782 <member name="P:HttpServer.HttpModules.FileModule.MimeTypes">
6783 <summary> 6783 <summary>
6784 List with all mime-type that are allowed. 6784 List with all mime-type that are allowed.
6785 </summary> 6785 </summary>
6786 <remarks>All other mime types will result in a Forbidden http status code.</remarks> 6786 <remarks>All other mime types will result in a Forbidden http status code.</remarks>
6787 </member> 6787 </member>
6788 <member name="P:HttpServer.HttpModules.FileModule.ForbiddenChars"> 6788 <member name="P:HttpServer.HttpModules.FileModule.ForbiddenChars">
6789 <summary> 6789 <summary>
6790 characters that may not exist in a path. 6790 characters that may not exist in a path.
6791 </summary> 6791 </summary>
6792 <example> 6792 <example>
6793 fileMod.ForbiddenChars = new string[]{ "\\", "..", ":" }; 6793 fileMod.ForbiddenChars = new string[]{ "\\", "..", ":" };
6794 </example> 6794 </example>
6795 </member> 6795 </member>
6796 <member name="T:HttpServer.HttpHelper"> 6796 <member name="T:HttpServer.HttpHelper">
6797 <summary> 6797 <summary>
6798 Generic helper functions for Http 6798 Generic helper functions for Http
6799 </summary> 6799 </summary>
6800 </member> 6800 </member>
6801 <member name="F:HttpServer.HttpHelper.HTTP10"> 6801 <member name="F:HttpServer.HttpHelper.HTTP10">
6802 <summary> 6802 <summary>
6803 Version string for HTTP v1.0 6803 Version string for HTTP v1.0
6804 </summary> 6804 </summary>
6805 </member> 6805 </member>
6806 <member name="F:HttpServer.HttpHelper.HTTP11"> 6806 <member name="F:HttpServer.HttpHelper.HTTP11">
6807 <summary> 6807 <summary>
6808 Version string for HTTP v1.1 6808 Version string for HTTP v1.1
6809 </summary> 6809 </summary>
6810 </member> 6810 </member>
6811 <member name="F:HttpServer.HttpHelper.EmptyUri"> 6811 <member name="F:HttpServer.HttpHelper.EmptyUri">
6812 <summary> 6812 <summary>
6813 An empty url 6813 An empty url
6814 </summary> 6814 </summary>
6815 </member> 6815 </member>
6816 <member name="M:HttpServer.HttpHelper.ParseQueryString(System.String)"> 6816 <member name="M:HttpServer.HttpHelper.ParseQueryString(System.String)">
6817 <summary> 6817 <summary>
6818 Parses a querystring. 6818 Parses a querystring.
6819 </summary> 6819 </summary>
6820 <param name="queryString">Querystring (url decoded)</param> 6820 <param name="queryString">Querystring (url decoded)</param>
6821 <returns>A HttpInput object if successful; otherwise HttpInput.Empty</returns> 6821 <returns>A HttpInput object if successful; otherwise HttpInput.Empty</returns>
6822 </member> 6822 </member>
6823 <member name="T:HttpServer.Exceptions.ForbiddenException"> 6823 <member name="T:HttpServer.Exceptions.ForbiddenException">
6824 <summary> 6824 <summary>
6825 The server understood the request, but is refusing to fulfill it. 6825 The server understood the request, but is refusing to fulfill it.
6826 Authorization will not help and the request SHOULD NOT be repeated. 6826 Authorization will not help and the request SHOULD NOT be repeated.
6827 If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, 6827 If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled,
6828 it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information 6828 it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information
6829 available to the client, the status code 404 (Not Found) can be used instead. 6829 available to the client, the status code 404 (Not Found) can be used instead.
6830 6830
6831 Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php 6831 Text taken from: http://www.submissionchamber.com/help-guides/error-codes.php
6832 </summary> 6832 </summary>
6833 </member> 6833 </member>
6834 <member name="M:HttpServer.Exceptions.ForbiddenException.#ctor(System.String)"> 6834 <member name="M:HttpServer.Exceptions.ForbiddenException.#ctor(System.String)">
6835 <summary> 6835 <summary>
6836 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.ForbiddenException"/> class. 6836 Initializes a new instance of the <see cref="T:HttpServer.Exceptions.ForbiddenException"/> class.
6837 </summary> 6837 </summary>
6838 <param name="errorMsg">error message</param> 6838 <param name="errorMsg">error message</param>
6839 </member> 6839 </member>
6840 <member name="T:HttpServer.Authentication.AuthenticationHandler"> 6840 <member name="T:HttpServer.Authentication.AuthenticationHandler">
6841 <summary> 6841 <summary>
6842 Delegate used to let authentication modules authenticate the username and password. 6842 Delegate used to let authentication modules authenticate the username and password.
6843 </summary> 6843 </summary>
6844 <param name="realm">Realm that the user want to authenticate in</param> 6844 <param name="realm">Realm that the user want to authenticate in</param>
6845 <param name="userName">Username specified by client</param> 6845 <param name="userName">Username specified by client</param>
6846 <param name="password">Password supplied by the delagete</param> 6846 <param name="password">Password supplied by the delagete</param>
6847 <param name="login">object that will be stored in a session variable called <see cref="F:HttpServer.Authentication.AuthModule.AuthenticationTag"/> if authentication was successful.</param> 6847 <param name="login">object that will be stored in a session variable called <see cref="F:HttpServer.Authentication.AuthModule.AuthenticationTag"/> if authentication was successful.</param>
6848 <exception cref="T:HttpServer.Exceptions.ForbiddenException">throw forbidden exception if too many attempts have been made.</exception> 6848 <exception cref="T:HttpServer.Exceptions.ForbiddenException">throw forbidden exception if too many attempts have been made.</exception>
6849 </member> 6849 </member>
6850 <member name="T:HttpServer.Authentication.AuthRequiredDelegate"> 6850 <member name="T:HttpServer.Authentication.AuthRequiredDelegate">
6851 <summary> 6851 <summary>
6852 Let's you decide on a system level if authentication is requried. 6852 Let's you decide on a system level if authentication is requried.
6853 You can also decide if authentication is required in each HttpModule. 6853 You can also decide if authentication is required in each HttpModule.
6854 </summary> 6854 </summary>
6855 <param name="request">Http request from client</param> 6855 <param name="request">Http request from client</param>
6856 <returns>true if user should be authenticated.</returns> 6856 <returns>true if user should be authenticated.</returns>
6857 <remarks>throw ForbiddenException if no more attempts are allowed.</remarks> 6857 <remarks>throw ForbiddenException if no more attempts are allowed.</remarks>
6858 <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception> 6858 <exception cref="T:HttpServer.Exceptions.ForbiddenException">If no more attempts are allowed</exception>
6859 </member> 6859 </member>
6860 <member name="T:HttpServer.Rendering.Haml.Nodes.ClassNode"> 6860 <member name="T:HttpServer.Rendering.Haml.Nodes.ClassNode">
6861 <summary> 6861 <summary>
6862 Represents a html class node. 6862 Represents a html class node.
6863 </summary> 6863 </summary>
6864 </member> 6864 </member>
6865 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)"> 6865 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.Parse(HttpServer.Rendering.Haml.NodeList,HttpServer.Rendering.Haml.Nodes.Node,HttpServer.Rendering.Haml.LineInfo,System.Int32@)">
6866 <summary> 6866 <summary>
6867 Parse node contents add return a fresh node. 6867 Parse node contents add return a fresh node.
6868 </summary> 6868 </summary>
6869 <param name="prototypes">List containing all node types</param> 6869 <param name="prototypes">List containing all node types</param>
6870 <param name="parent">Node that this is a subnode to. Can be null</param> 6870 <param name="parent">Node that this is a subnode to. Can be null</param>
6871 <param name="line">Line to parse</param> 6871 <param name="line">Line to parse</param>
6872 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param> 6872 <param name="offset">Where to start the parsing. Should be set to where the next node should start parsing.</param>
6873 <returns>A node corresponding to the bla bla; null if parsing failed.</returns> 6873 <returns>A node corresponding to the bla bla; null if parsing failed.</returns>
6874 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception> 6874 <exception cref="T:HttpServer.Rendering.CodeGeneratorException"></exception>
6875 </member> 6875 </member>
6876 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.CanHandle(System.String,System.Boolean)"> 6876 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.CanHandle(System.String,System.Boolean)">
6877 <summary> 6877 <summary>
6878 determines if this node can handle the line (by checking the first word); 6878 determines if this node can handle the line (by checking the first word);
6879 </summary> 6879 </summary>
6880 <param name="word">Controller char (word)</param> 6880 <param name="word">Controller char (word)</param>
6881 <returns>true if text belongs to this node type</returns> 6881 <returns>true if text belongs to this node type</returns>
6882 <param name="firstNode">first node on line</param> 6882 <param name="firstNode">first node on line</param>
6883 </member> 6883 </member>
6884 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.ToHtml"> 6884 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.ToHtml">
6885 <summary> 6885 <summary>
6886 Convert node to HTML (with ASP-tags) 6886 Convert node to HTML (with ASP-tags)
6887 </summary> 6887 </summary>
6888 <returns>HTML string</returns> 6888 <returns>HTML string</returns>
6889 </member> 6889 </member>
6890 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)"> 6890 <member name="M:HttpServer.Rendering.Haml.Nodes.ClassNode.ToCode(System.Boolean@,System.Boolean,System.Boolean)">
6891 <summary> 6891 <summary>
6892 Convert the node to c# code 6892 Convert the node to c# code
6893 </summary> 6893 </summary>
6894 <param name="inString">True if we are inside the internal stringbuilder</param> 6894 <param name="inString">True if we are inside the internal stringbuilder</param>
6895 <param name="smallEnough">true if all subnodes fit on one line</param> 6895 <param name="smallEnough">true if all subnodes fit on one line</param>
6896 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param> 6896 <param name="smallEnoughIsDefaultValue">smallEnough is a default value, recalc it</param>
6897 <returns>c# code</returns> 6897 <returns>c# code</returns>
6898 </member> 6898 </member>
6899 <member name="T:HttpServer.FormDecoders.MultipartDecoder"> 6899 <member name="T:HttpServer.FormDecoders.MultipartDecoder">
6900 <summary> 6900 <summary>
6901 6901
6902 </summary> 6902 </summary>
6903 <remarks> 6903 <remarks>
6904 http://www.faqs.org/rfcs/rfc1867.html 6904 http://www.faqs.org/rfcs/rfc1867.html
6905 </remarks> 6905 </remarks>
6906 </member> 6906 </member>
6907 <member name="F:HttpServer.FormDecoders.MultipartDecoder.MimeType"> 6907 <member name="F:HttpServer.FormDecoders.MultipartDecoder.MimeType">
6908 <summary> 6908 <summary>
6909 multipart/form-data 6909 multipart/form-data
6910 </summary> 6910 </summary>
6911 </member> 6911 </member>
6912 <member name="F:HttpServer.FormDecoders.MultipartDecoder.FormData"> 6912 <member name="F:HttpServer.FormDecoders.MultipartDecoder.FormData">
6913 <summary> 6913 <summary>
6914 form-data 6914 form-data
6915 </summary> 6915 </summary>
6916 </member> 6916 </member>
6917 <member name="M:HttpServer.FormDecoders.MultipartDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)"> 6917 <member name="M:HttpServer.FormDecoders.MultipartDecoder.Decode(System.IO.Stream,System.String,System.Text.Encoding)">
6918 <summary> 6918 <summary>
6919 6919
6920 </summary> 6920 </summary>
6921 <param name="stream">Stream containing the content</param> 6921 <param name="stream">Stream containing the content</param>
6922 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param> 6922 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case</param>
6923 <param name="encoding">Stream enconding</param> 6923 <param name="encoding">Stream enconding</param>
6924 <returns>A http form, or null if content could not be parsed.</returns> 6924 <returns>A http form, or null if content could not be parsed.</returns>
6925 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception> 6925 <exception cref="T:System.IO.InvalidDataException">If contents in the stream is not valid input data.</exception>
6926 <exception cref="T:System.ArgumentNullException">If any parameter is null</exception> 6926 <exception cref="T:System.ArgumentNullException">If any parameter is null</exception>
6927 </member> 6927 </member>
6928 <member name="M:HttpServer.FormDecoders.MultipartDecoder.CanParse(System.String)"> 6928 <member name="M:HttpServer.FormDecoders.MultipartDecoder.CanParse(System.String)">
6929 <summary> 6929 <summary>
6930 Checks if the decoder can handle the mime type 6930 Checks if the decoder can handle the mime type
6931 </summary> 6931 </summary>
6932 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param> 6932 <param name="contentType">Content type (with any additional info like boundry). Content type is always supplied in lower case.</param>
6933 <returns>True if the decoder can parse the specified content type</returns> 6933 <returns>True if the decoder can parse the specified content type</returns>
6934 </member> 6934 </member>
6935 <member name="M:HttpServer.FormDecoders.HttpMultipart.ReadLine"> 6935 <member name="M:HttpServer.FormDecoders.HttpMultipart.ReadLine">
6936 <summary> 6936 <summary>
6937 6937
6938 </summary> 6938 </summary>
6939 <returns></returns> 6939 <returns></returns>
6940 <exception cref="T:System.ArgumentOutOfRangeException"></exception> 6940 <exception cref="T:System.ArgumentOutOfRangeException"></exception>
6941 <exception cref="T:System.ObjectDisposedException"></exception> 6941 <exception cref="T:System.ObjectDisposedException"></exception>
6942 </member> 6942 </member>
6943 <member name="T:HttpServer.FormDecoders.HttpMultipart.Element"> 6943 <member name="T:HttpServer.FormDecoders.HttpMultipart.Element">
6944 <summary>Represents a field in a multipart form</summary> 6944 <summary>Represents a field in a multipart form</summary>
6945 </member> 6945 </member>
6946 <member name="T:HttpServer.ContentType"> 6946 <member name="T:HttpServer.ContentType">
6947 <summary> 6947 <summary>
6948 Lists content type mime types. 6948 Lists content type mime types.
6949 </summary> 6949 </summary>
6950 </member> 6950 </member>
6951 <member name="F:HttpServer.ContentType.Text"> 6951 <member name="F:HttpServer.ContentType.Text">
6952 <summary> 6952 <summary>
6953 text/plain 6953 text/plain
6954 </summary> 6954 </summary>
6955 </member> 6955 </member>
6956 <member name="F:HttpServer.ContentType.Html"> 6956 <member name="F:HttpServer.ContentType.Html">
6957 <summary> 6957 <summary>
6958 text/haml 6958 text/haml
6959 </summary> 6959 </summary>
6960 </member> 6960 </member>
6961 <member name="F:HttpServer.ContentType.Javascript"> 6961 <member name="F:HttpServer.ContentType.Javascript">
6962 <summary> 6962 <summary>
6963 content type for javascript documents = application/javascript 6963 content type for javascript documents = application/javascript
6964 </summary> 6964 </summary>
6965 <remarks> 6965 <remarks>
6966 <para> 6966 <para>
6967 RFC 4329 states that text/javascript have been superseeded by 6967 RFC 4329 states that text/javascript have been superseeded by
6968 application/javascript. You might still want to check browser versions 6968 application/javascript. You might still want to check browser versions
6969 since older ones do not support application/javascript. 6969 since older ones do not support application/javascript.
6970 </para> 6970 </para>
6971 <para>Browser support: http://krijnhoetmer.nl/stuff/javascript/mime-types/</para> 6971 <para>Browser support: http://krijnhoetmer.nl/stuff/javascript/mime-types/</para>
6972 </remarks> 6972 </remarks>
6973 </member> 6973 </member>
6974 <member name="F:HttpServer.ContentType.Xml"> 6974 <member name="F:HttpServer.ContentType.Xml">
6975 <summary> 6975 <summary>
6976 text/xml 6976 text/xml
6977 </summary> 6977 </summary>
6978 </member> 6978 </member>
6979 <member name="T:HttpServer.ContentTypes"> 6979 <member name="T:HttpServer.ContentTypes">
6980 <summary> 6980 <summary>
6981 A list of content types 6981 A list of content types
6982 </summary> 6982 </summary>
6983 </member> 6983 </member>
6984 <member name="M:HttpServer.ContentTypes.#ctor(System.String)"> 6984 <member name="M:HttpServer.ContentTypes.#ctor(System.String)">
6985 <summary> 6985 <summary>
6986 6986
6987 </summary> 6987 </summary>
6988 <param name="types">Semicolon separated content types.</param> 6988 <param name="types">Semicolon separated content types.</param>
6989 </member> 6989 </member>
6990 <member name="M:HttpServer.ContentTypes.GetEnumerator"> 6990 <member name="M:HttpServer.ContentTypes.GetEnumerator">
6991 <summary> 6991 <summary>
6992 Returns an enumerator that iterates through a collection. 6992 Returns an enumerator that iterates through a collection.
6993 </summary> 6993 </summary>
6994 <returns> 6994 <returns>
6995 An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection. 6995 An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
6996 </returns> 6996 </returns>
6997 </member> 6997 </member>
6998 <member name="M:HttpServer.ContentTypes.Contains(System.String)"> 6998 <member name="M:HttpServer.ContentTypes.Contains(System.String)">
6999 <summary> 6999 <summary>
7000 Searches for the specified type 7000 Searches for the specified type
7001 </summary> 7001 </summary>
7002 <param name="type">Can also be a part of a type (searching for "xml" would return true for "application/xml").</param> 7002 <param name="type">Can also be a part of a type (searching for "xml" would return true for "application/xml").</param>
7003 <returns>true if type was found.</returns> 7003 <returns>true if type was found.</returns>
7004 </member> 7004 </member>
7005 <member name="P:HttpServer.ContentTypes.First"> 7005 <member name="P:HttpServer.ContentTypes.First">
7006 <summary> 7006 <summary>
7007 Get this first content type. 7007 Get this first content type.
7008 </summary> 7008 </summary>
7009 </member> 7009 </member>
7010 <member name="P:HttpServer.ContentTypes.Item(System.String)"> 7010 <member name="P:HttpServer.ContentTypes.Item(System.String)">
7011 <summary> 7011 <summary>
7012 Fetch a content type 7012 Fetch a content type
7013 </summary> 7013 </summary>
7014 <param name="type">Part of type ("xml" would return "application/xml")</param> 7014 <param name="type">Part of type ("xml" would return "application/xml")</param>
7015 <returns></returns> 7015 <returns></returns>
7016 <remarks>All content types are in lower case.</remarks> 7016 <remarks>All content types are in lower case.</remarks>
7017 </member> 7017 </member>
7018 </members> 7018 </members>
7019</doc> 7019</doc>
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 47a3d3e..9937cb9 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -198,7 +198,7 @@
198 198
199 ;WorldMapModule = "WorldMap" 199 ;WorldMapModule = "WorldMap"
200 ;MapImageModule = "MapImageModule" 200 ;MapImageModule = "MapImageModule"
201 201
202 ; ## 202 ; ##
203 ; ## Customized Cache Implementation 203 ; ## Customized Cache Implementation
204 ; ## 204 ; ##
@@ -231,8 +231,8 @@
231 231
232[Communications] 232[Communications]
233 233
234;InterregionComms = "LocalComms" 234 ;InterregionComms = "LocalComms"
235InterregionComms = "RESTComms" 235 InterregionComms = "RESTComms"
236 236
237[StandAlone] 237[StandAlone]
238 accounts_authenticate = true 238 accounts_authenticate = true
@@ -579,16 +579,16 @@ InterregionComms = "RESTComms"
579 579
580 580
581[RestHandler] 581[RestHandler]
582 ; Change this to true to enable the REST Asset and Inventory Plugin 582 ; Change this to true to enable the REST Asset and Inventory Plugin
583 enabled = false 583 enabled = false
584 authenticate=true 584 authenticate = true
585 secured=true 585 secured = true
586 extended-escape=true 586 extended-escape = true
587 realm=OpenSim REST 587 realm = OpenSim REST
588 dump-asset=false 588 dump-asset = false
589 path-fill=true 589 path-fill = true
590 dump-line-size=32 590 dump-line-size = 32
591 flush-on-error=true 591 flush-on-error = true
592 592
593 593
594; Uncomment the following for IRC bridge 594; Uncomment the following for IRC bridge
@@ -1122,16 +1122,16 @@ InterregionComms = "RESTComms"
1122 ; default is false 1122 ; default is false
1123 enabled = false 1123 enabled = false
1124 1124
1125 ; Channel on which to signal region readiness through a message 1125 ; Channel on which to signal region readiness through a message
1126 ; formatted as follows: "{server_startup|oar_file_load},{0|1},n,[oar error]" 1126 ; formatted as follows: "{server_startup|oar_file_load},{0|1},n,[oar error]"
1127 ; - the first field indicating whether this is an initial server startup 1127 ; - the first field indicating whether this is an initial server startup
1128 ; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error) 1128 ; - the second field is a number indicating whether the OAR file loaded ok (1 == ok, 0 == error)
1129 ; - the third field is a number indicating how many scripts failed to compile 1129 ; - the third field is a number indicating how many scripts failed to compile
1130 ; - "oar error" if supplied, provides the error message from the OAR load 1130 ; - "oar error" if supplied, provides the error message from the OAR load
1131 channel_notify = -800 1131 channel_notify = -800
1132 1132
1133 1133
1134[MRM] 1134[MRM]
1135 ; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK. 1135 ; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK.
1136 ; default is false 1136 ; default is false
1137 Enabled = false 1137 Enabled = false