TShock/HttpBins/HttpServer.xml
2012-02-21 15:56:34 +00:00

6188 lines
273 KiB
XML

<?xml version="1.0"?>
<doc>
<assembly>
<name>HttpServer</name>
</assembly>
<members>
<member name="T:HttpServer.SocketFilterEventArgs">
<summary>
Used by <see cref="E:HttpServer.HttpListener.SocketAccepted"/> to filter out unwanted connections.
</summary>
</member>
<member name="M:HttpServer.SocketFilterEventArgs.#ctor(System.Net.Sockets.Socket)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.SocketFilterEventArgs"/> class.
</summary>
<param name="socket">The socket.</param>
</member>
<member name="P:HttpServer.SocketFilterEventArgs.IsSocketOk">
<summary>
Gets or sets if socket can be accepted.
</summary>
</member>
<member name="P:HttpServer.SocketFilterEventArgs.Socket">
<summary>
Gets socket.
</summary>
</member>
<member name="T:HttpServer.RequestEventArgs">
<summary>
A request have been received.
</summary>
<remarks>
</remarks>
</member>
<member name="M:HttpServer.RequestEventArgs.#ctor(HttpServer.IHttpContext,HttpServer.IRequest,HttpServer.IResponse)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.RequestEventArgs"/> class.
</summary>
<param name="context">context that received the request.</param>
<param name="request">Received request.</param>
<param name="response">Response to send.</param>
</member>
<member name="P:HttpServer.RequestEventArgs.Context">
<summary>
Gets context that received the request.
</summary>
<remarks>
Do not forget to set <see cref="P:HttpServer.RequestEventArgs.IsHandled"/> to <c>true</c> if you are sending
back a response manually through <see cref="P:HttpServer.IHttpContext.Stream"/>.
</remarks>
</member>
<member name="P:HttpServer.RequestEventArgs.IsHandled">
<summary>
Gets or sets if the request have been handled.
</summary>
<remarks>
The library will not attempt to send the response object
back to the client if this property is set to <c>true</c>.
</remarks>
</member>
<member name="P:HttpServer.RequestEventArgs.Request">
<summary>
Gets request object.
</summary>
</member>
<member name="P:HttpServer.RequestEventArgs.Response">
<summary>
Gets response object.
</summary>
</member>
<member name="T:HttpServer.Messages.ResponseCookieCollection">
<summary>
Cookies that should be set.
</summary>
</member>
<member name="M:HttpServer.Messages.ResponseCookieCollection.Add(HttpServer.Messages.ResponseCookie)">
<summary>
Adds a cookie in the collection.
</summary>
<param name="cookie">cookie to add</param>
<exception cref="T:System.ArgumentNullException">cookie is <c>null</c></exception>
<exception cref="T:System.ArgumentException">Name and Content must be specified.</exception>
</member>
<member name="M:HttpServer.Messages.ResponseCookieCollection.Add(HttpServer.Messages.RequestCookie,System.DateTime)">
<summary>
Copy a request cookie
</summary>
<param name="cookie"></param>
<param name="expires">When the cookie should expire</param>
</member>
<member name="M:HttpServer.Messages.ResponseCookieCollection.Clear">
<summary>
Remove all cookies
</summary>
</member>
<member name="M:HttpServer.Messages.ResponseCookieCollection.GetEnumerator">
<summary>
Gets a collection enumerator on the cookie list.
</summary>
<returns>collection enumerator</returns>
</member>
<member name="M:HttpServer.Messages.ResponseCookieCollection.System#Collections#Generic#IEnumerable{HttpServer#Messages#ResponseCookie}#GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="P:HttpServer.Messages.ResponseCookieCollection.Count">
<summary>
Gets the count of cookies in the collection.
</summary>
</member>
<member name="P:HttpServer.Messages.ResponseCookieCollection.Item(System.String)">
<summary>
Gets the cookie of a given identifier.
</summary>
<value>Cookie if found; otherwise <c>null</c>.</value>
</member>
<member name="T:HttpServer.ExceptionEventArgs">
<summary>
An exception that can't be handled by the library have been thrown.
</summary>
</member>
<member name="M:HttpServer.ExceptionEventArgs.#ctor(System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ExceptionEventArgs"/> class.
</summary>
<param name="exception">The exception.</param>
</member>
<member name="P:HttpServer.ExceptionEventArgs.Exception">
<summary>
Gets caught exception.
</summary>
</member>
<member name="T:HttpServer.BodyDecoders.DecodedData">
<summary>
Data decoded from a POST body.
</summary>
</member>
<member name="M:HttpServer.BodyDecoders.DecodedData.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.BodyDecoders.DecodedData"/> class.
</summary>
</member>
<member name="P:HttpServer.BodyDecoders.DecodedData.Files">
<summary>
Gets or sets decoded files.
</summary>
</member>
<member name="P:HttpServer.BodyDecoders.DecodedData.Parameters">
<summary>
Gets or sets decoded parameters.
</summary>
</member>
<member name="T:HttpServer.Sessions.SessionFileStore">
<summary>
Stores sessions in files.
</summary>
<remarks>
All session parameters must be serializable.
</remarks>
</member>
<member name="T:HttpServer.Sessions.ISessionStore">
<summary>
Stores sessions in your favorite store
</summary>
<remarks>
</remarks>
</member>
<member name="M:HttpServer.Sessions.ISessionStore.Save(HttpServer.Sessions.Session)">
<summary>
Saves the specified session.
</summary>
<param name="session">The session.</param>
</member>
<member name="M:HttpServer.Sessions.ISessionStore.Touch(System.String)">
<summary>
Touches the specified session
</summary>
<param name="id">Session id.</param>
<remarks>
Used to prevent sessions from expiring.
</remarks>
</member>
<member name="M:HttpServer.Sessions.ISessionStore.Load(System.String)">
<summary>
Loads a session
</summary>
<param name="id">Session id.</param>
<returns>Session if found; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Sessions.ISessionStore.Delete(System.String)">
<summary>
Delete a session
</summary>
<param name="id">Id of session</param>
</member>
<member name="M:HttpServer.Sessions.SessionFileStore.Save(HttpServer.Sessions.Session)">
<summary>
Saves the specified session.
</summary>
<param name="session">The session.</param>
</member>
<member name="M:HttpServer.Sessions.SessionFileStore.Touch(System.String)">
<summary>
Touches the specified session
</summary>
<param name="id">Session id.</param>
<remarks>
Used to prevent sessions from expiring.
</remarks>
</member>
<member name="M:HttpServer.Sessions.SessionFileStore.Load(System.String)">
<summary>
Loads a session
</summary>
<param name="id">Session id.</param>
<returns>Session if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.Method">
<summary>
HTTP methods.
</summary>
</member>
<member name="F:HttpServer.Method.Unknown">
<summary>
Unknown method
</summary>
</member>
<member name="F:HttpServer.Method.Post">
<summary>
Posting data
</summary>
</member>
<member name="F:HttpServer.Method.Get">
<summary>
Get data
</summary>
</member>
<member name="F:HttpServer.Method.Put">
<summary>
Update data
</summary>
</member>
<member name="F:HttpServer.Method.Delete">
<summary>
Remove data
</summary>
</member>
<member name="F:HttpServer.Method.Head">
<summary>
Get only HTTP headers.
</summary>
</member>
<member name="F:HttpServer.Method.Options">
<summary>
Options HTTP 1.1 header.
</summary>
</member>
<member name="T:HttpServer.HttpListener">
<summary>
Http listener.
</summary>
</member>
<member name="T:HttpServer.IHttpListener">
<summary>
Http listener
</summary>
</member>
<member name="M:HttpServer.IHttpListener.Start(System.Int32)">
<summary>
Start listener.
</summary>
<param name="backLog">Number of pending accepts.</param>
<remarks>
Make sure that you are subscribing on <see cref="E:HttpServer.IHttpListener.RequestReceived"/> first.
</remarks>
<exception cref="T:System.InvalidOperationException">Listener have already been started.</exception>
<exception cref="T:System.Net.Sockets.SocketException">Failed to start socket.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">Invalid port number.</exception>
</member>
<member name="M:HttpServer.IHttpListener.Stop">
<summary>
Stop listener.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.Address">
<summary>
Gets listener address.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.IsSecure">
<summary>
Gets if listener is secure.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.IsStarted">
<summary>
Gets if listener have been started.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.Logger">
<summary>
Gets or sets logger.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.Port">
<summary>
Gets listening port.
</summary>
</member>
<member name="P:HttpServer.IHttpListener.ContentLengthLimit">
<summary>
Gets the maximum content size.
</summary>
<value>The content length limit.</value>
<remarks>
Used when responding to 100-continue.
</remarks>
</member>
<member name="E:HttpServer.IHttpListener.RequestReceived">
<summary>
A new request have been received.
</summary>
</member>
<member name="E:HttpServer.IHttpListener.SocketAccepted">
<summary>
Can be used to reject certain clients.
</summary>
</member>
<member name="E:HttpServer.IHttpListener.ErrorPageRequested">
<summary>
A HTTP exception have been thrown.
</summary>
<remarks>
Fill the body with a user friendly error page, or redirect to somewhere else.
</remarks>
</member>
<member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpListener"/> class.
</summary>
<param name="address">The address.</param>
<param name="port">The port.</param>
</member>
<member name="M:HttpServer.HttpListener.#ctor(System.Net.IPAddress,System.Int32,HttpServer.HttpFactory)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpListener"/> class.
</summary>
<param name="address">The address.</param>
<param name="port">The port.</param>
<param name="httpFactory">The HTTP factory.</param>
</member>
<member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32)">
<summary>
Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
</summary>
<param name="address">Address that the listener should accept connections on.</param>
<param name="port">Port that listener should accept connections on.</param>
<returns>Created HTTP listener.</returns>
</member>
<member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32,HttpServer.HttpFactory)">
<summary>
Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
</summary>
<param name="address">Address that the listener should accept connections on.</param>
<param name="port">Port that listener should accept connections on.</param>
<param name="factory">Factory used to create different types in the framework.</param>
<returns>Created HTTP listener.</returns>
</member>
<member name="M:HttpServer.HttpListener.Create(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
<summary>
Creates a new <see cref="T:HttpServer.HttpListener"/> instance with default factories.
</summary>
<param name="address">Address that the listener should accept connections on.</param>
<param name="port">Port that listener should accept connections on.</param>
<param name="certificate">Certificate to use</param>
<returns>Created HTTP listener.</returns>
</member>
<member name="M:HttpServer.HttpListener.CreateContext(System.Net.Sockets.Socket)">
<summary>
Create a new context
</summary>
<param name="socket">Accepted socket</param>
<returns>A new context.</returns>
</member>
<member name="M:HttpServer.HttpListener.OnRequest(System.Object,HttpServer.RequestEventArgs)">
<exception cref="T:System.Exception">Throwing exception if in debug mode and not exception handler have been specified.</exception>
</member>
<member name="M:HttpServer.HttpListener.Start(System.Int32)">
<summary>
Start listener.
</summary>
<param name="backLog">Number of pending accepts.</param>
<remarks>
Make sure that you are subscribing on <see cref="E:HttpServer.HttpListener.RequestReceived"/> first.
</remarks>
<exception cref="T:System.InvalidOperationException">Listener have already been started.</exception>
<exception cref="T:System.Net.Sockets.SocketException">Failed to start socket.</exception>
<exception cref="T:System.ArgumentOutOfRangeException">Invalid port number.</exception>
</member>
<member name="M:HttpServer.HttpListener.Stop">
<summary>
Stop listener.
</summary>
</member>
<member name="P:HttpServer.HttpListener.Factory">
<summary>
Gets HTTP factory used to create types used by this HTTP library.
</summary>
</member>
<member name="P:HttpServer.HttpListener.ContentLengthLimit">
<summary>
Gets or sets the maximum number of bytes that the request body can contain.
</summary>
<value>The content length limit.</value>
<remarks>
<para>
Used when responding to 100-continue.
</para>
<para>
0 = turned off.
</para>
</remarks>
</member>
<member name="P:HttpServer.HttpListener.Address">
<summary>
Gets listener address.
</summary>
</member>
<member name="P:HttpServer.HttpListener.IsSecure">
<summary>
Gets if listener is secure.
</summary>
</member>
<member name="P:HttpServer.HttpListener.IsStarted">
<summary>
Gets if listener have been started.
</summary>
</member>
<member name="P:HttpServer.HttpListener.Logger">
<summary>
Gets or sets logger.
</summary>
</member>
<member name="P:HttpServer.HttpListener.Port">
<summary>
Gets listening port.
</summary>
</member>
<member name="E:HttpServer.HttpListener.RequestReceived">
<summary>
A new request have been received.
</summary>
</member>
<member name="E:HttpServer.HttpListener.SocketAccepted">
<summary>
Can be used to reject certain clients.
</summary>
</member>
<member name="E:HttpServer.HttpListener.ErrorPageRequested">
<summary>
A HTTP exception have been thrown.
</summary>
<remarks>
Fill the body with a user friendly error page, or redirect to somewhere else.
</remarks>
</member>
<member name="E:HttpServer.HttpListener.ContinueResponseRequested">
<summary>
Client asks if he may continue.
</summary>
<remarks>
If the body is too large or anything like that you should respond <see cref="F:System.Net.HttpStatusCode.ExpectationFailed"/>.
</remarks>
</member>
<member name="T:HttpServer.Headers.CookieHeader">
<summary>
Contents of a cookie header.
</summary>
</member>
<member name="T:HttpServer.Headers.IHeader">
<summary>
Header in a message
</summary>
<remarks>
Important! Each header should override ToString()
and return it's data correctly formatted as a HTTP header value.
</remarks>
</member>
<member name="P:HttpServer.Headers.IHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="P:HttpServer.Headers.IHeader.HeaderValue">
<summary>
Gets value as it would be sent back to client.
</summary>
</member>
<member name="M:HttpServer.Headers.CookieHeader.#ctor(HttpServer.Messages.RequestCookieCollection)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.CookieHeader"/> class.
</summary>
<param name="collection">The collection.</param>
<exception cref="T:System.ArgumentNullException"><c>collection</c> is <c>null</c>.</exception>
</member>
<member name="P:HttpServer.Headers.CookieHeader.Cookies">
<summary>
Gets cookie collection
</summary>
</member>
<member name="P:HttpServer.Headers.CookieHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="P:HttpServer.Headers.CookieHeader.HeaderValue">
<summary>
Gets value as it would be sent back to client.
</summary>
<value></value>
</member>
<member name="T:HttpServer.BadRequestException">
<summary>
Request couldn't be parsed successfully.
</summary>
</member>
<member name="T:HttpServer.HttpException">
<summary>
Exception thrown from HTTP server.
</summary>
</member>
<member name="M:HttpServer.HttpException.#ctor(System.Net.HttpStatusCode,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpException"/> class.
</summary>
<param name="code">HTTP status code.</param>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.HttpException.#ctor(System.Net.HttpStatusCode,System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpException"/> class.
</summary>
<param name="code">HTTP status code.</param>
<param name="errMsg">Exception description.</param>
<param name="inner">Inner exception.</param>
</member>
<member name="P:HttpServer.HttpException.Code">
<summary>
Gets HTTP status code.
</summary>
</member>
<member name="M:HttpServer.BadRequestException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.BadRequestException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.BadRequestException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.BadRequestException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Exception description.</param>
</member>
<member name="T:HttpServer.Messages.Parser.ParserException">
<summary>
Something failed during parsing.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.ParserException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.ParserException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.Messages.Parser.ParserException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.ParserException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Inner exception.</param>
</member>
<member name="T:HttpServer.Headers.Parsers.IHeaderParser">
<summary>
Used to parse header values
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.IHeaderParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.BodyDecoders.BodyDecoderCollection">
<summary>
Collection of body decoders.
</summary>
<remarks>
Body decoders are used to parse request body and convert it
into a <see cref="T:HttpServer.HttpFileCollection"/> and a <see cref="T:HttpServer.ParameterCollection"/>.
</remarks>
</member>
<member name="M:HttpServer.BodyDecoders.BodyDecoderCollection.Add(HttpServer.BodyDecoders.IBodyDecoder)">
<summary>
Add another body decoder.
</summary>
<param name="decoder"></param>
</member>
<member name="M:HttpServer.BodyDecoders.BodyDecoderCollection.Decode(System.IO.Stream,HttpServer.Headers.ContentTypeHeader,System.Text.Encoding)">
<summary>
Decode body stream
</summary>
<param name="stream">Stream containing the content</param>
<param name="contentType">Content type header</param>
<param name="encoding">Stream encoding</param>
<returns>Decoded data.</returns>
<exception cref="T:System.FormatException">Body format is invalid for the specified content type.</exception>
<exception cref="T:HttpServer.InternalServerException">Something unexpected failed.</exception>
</member>
<member name="M:HttpServer.BodyDecoders.BodyDecoderCollection.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.BodyDecoders.BodyDecoderCollection.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="P:HttpServer.BodyDecoders.BodyDecoderCollection.Count">
<summary>
Gets number of decoders.
</summary>
</member>
<member name="T:HttpServer.Transports.ReusableSocketNetworkStream">
<summary>
Custom network stream to mark sockets as reusable when disposing the stream.
</summary>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket)">
<summary>
Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" />.
</summary>
<param name="socket">
The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data.
</param>
<exception cref="T:System.ArgumentNullException">
The <paramref name="socket" /> parameter is <c>null</c>.
</exception>
<exception cref="T:System.IO.IOException">
The <paramref name="socket" /> parameter is not connected.
-or-
The <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
-or-
The <paramref name="socket" /> parameter is in a nonblocking state.
</exception>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified <see cref="T:System.Net.Sockets.Socket" /> ownership.
</summary>
<param name="socket">
The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data.
</param>
<param name="ownsSocket">
Set to <c>true</c> to indicate that the <see cref="T:System.Net.Sockets.NetworkStream" /> will take ownership of the <see cref="T:System.Net.Sockets.Socket" />; otherwise, <c>false</c>.
</param>
<exception cref="T:System.ArgumentNullException">
The <paramref name="socket" /> parameter is <c>null</c>.
</exception>
<exception cref="T:System.IO.IOException">
The <paramref name="socket" /> parameter is not connected.
-or-
the value of the <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
-or-
the <paramref name="socket" /> parameter is in a nonblocking state.
</exception>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.IO.FileAccess)">
<summary>
Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified access rights.
</summary>
<param name="socket">
The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data.
</param>
<param name="access">
A bitwise combination of the <see cref="T:System.IO.FileAccess" /> values that specify the type of access given to the <see cref="T:System.Net.Sockets.NetworkStream" /> over the provided <see cref="T:System.Net.Sockets.Socket" />.
</param>
<exception cref="T:System.ArgumentNullException">
The <paramref name="socket" /> parameter is <c>null</c>.
</exception>
<exception cref="T:System.IO.IOException">
The <paramref name="socket" /> parameter is not connected.
-or-
the <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
-or-
the <paramref name="socket" /> parameter is in a nonblocking state.
</exception>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.#ctor(System.Net.Sockets.Socket,System.IO.FileAccess,System.Boolean)">
<summary>
Creates a new instance of the <see cref="T:System.Net.Sockets.NetworkStream" /> class for the specified <see cref="T:System.Net.Sockets.Socket" /> with the specified access rights and the specified <see cref="T:System.Net.Sockets.Socket" /> ownership.
</summary>
<param name="socket">
The <see cref="T:System.Net.Sockets.Socket" /> that the <see cref="T:System.Net.Sockets.NetworkStream" /> will use to send and receive data.
</param>
<param name="access">
A bitwise combination of the <see cref="T:System.IO.FileAccess" /> values that specifies the type of access given to the <see cref="T:System.Net.Sockets.NetworkStream" /> over the provided <see cref="T:System.Net.Sockets.Socket" />.
</param>
<param name="ownsSocket">
Set to <c>true</c> to indicate that the <see cref="T:System.Net.Sockets.NetworkStream" /> will take ownership of the <see cref="T:System.Net.Sockets.Socket" />; otherwise, <c>false</c>.
</param>
<exception cref="T:System.ArgumentNullException">
The <paramref name="socket" /> parameter is <c>null</c>.
</exception>
<exception cref="T:System.IO.IOException">
The <paramref name="socket" /> parameter is not connected.
-or-
The <see cref="P:System.Net.Sockets.Socket.SocketType" /> property of the <paramref name="socket" /> parameter is not <see cref="F:System.Net.Sockets.SocketType.Stream" />.
-or-
The <paramref name="socket" /> parameter is in a nonblocking state.
</exception>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.Close">
<summary>
Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream.
</summary>
</member>
<member name="M:HttpServer.Transports.ReusableSocketNetworkStream.Dispose(System.Boolean)">
<summary>
Releases the unmanaged resources used by the <see cref="T:System.Net.Sockets.NetworkStream"/> and optionally releases the managed resources.
</summary>
<param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
</member>
<member name="T:HttpServer.Tools.UrlParser">
<summary>
Parses query string
</summary>
</member>
<member name="M:HttpServer.Tools.UrlParser.Parse(HttpServer.Tools.ITextReader)">
<summary>
Parse a query string
</summary>
<param name="reader">string to parse</param>
<returns>A collection</returns>
<exception cref="T:System.ArgumentNullException"><c>reader</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Tools.UrlParser.Parse(System.String)">
<summary>
Parse a query string
</summary>
<param name="queryString">string to parse</param>
<returns>A collection</returns>
<exception cref="T:System.ArgumentNullException"><c>queryString</c> is <c>null</c>.</exception>
</member>
<member name="T:HttpServer.SimpleServer">
<summary>
Convention over configuration server.
</summary>
<remarks>
Used to make it easy to create and use a web server.
<para>
All resources must exist in the "YourProject.Content" namespace (or a subdirectory called "Content" relative to yourapp.exe).
</para>
</remarks>
</member>
<member name="T:HttpServer.Server">
<summary>
Http server.
</summary>
</member>
<member name="M:HttpServer.Server.#ctor(HttpServer.HttpFactory)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Server"/> class.
</summary>
<param name="factory">Factory used to create objects used in this library.</param>
</member>
<member name="M:HttpServer.Server.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Server"/> class.
</summary>
</member>
<member name="M:HttpServer.Server.Add(HttpServer.BodyDecoders.IBodyDecoder)">
<summary>
Add a decoder.
</summary>
<param name="decoder">decoder to add</param>
<remarks>
Adding zero decoders will make the server add the
default ones which is <see cref="T:HttpServer.BodyDecoders.MultiPartDecoder"/> and <see cref="T:HttpServer.BodyDecoders.UrlDecoder"/>.
</remarks>
</member>
<member name="M:HttpServer.Server.Add(HttpServer.Routing.IRouter)">
<summary>
Add a new router.
</summary>
<param name="router">Router to add</param>
<exception cref="T:System.InvalidOperationException">Server have been started.</exception>
</member>
<member name="M:HttpServer.Server.Add(HttpServer.Modules.IModule)">
<summary>
Add a file module
</summary>
<param name="module">Module to add</param>
<exception cref="T:System.ArgumentNullException"><c>module</c> is <c>null</c>.</exception>
<exception cref="T:System.InvalidOperationException">Cannot add modules when server have been started.</exception>
</member>
<member name="M:HttpServer.Server.Add(HttpServer.IHttpListener)">
<summary>
Add a HTTP listener.
</summary>
<param name="listener"></param>
<exception cref="T:System.InvalidOperationException">Listener have been started.</exception>
</member>
<member name="M:HttpServer.Server.DisplayErrorPage(HttpServer.IHttpContext,System.Exception)">
<summary>
An error have occurred and we need to send a result pack to the client
</summary>
<param name="context">The context.</param>
<param name="exception">The exception.</param>
<remarks>
Invoke base class (<see cref="T:HttpServer.Server"/>) to send the contents
of <see cref="P:HttpServer.IHttpContext.Response"/>.
</remarks>
</member>
<member name="M:HttpServer.Server.OnAuthentication(HttpServer.RequestContext)">
<summary>
Called before anything else.
</summary>
<param name="context">The context.</param>
<remarks>
Looks after a <see cref="T:HttpServer.Headers.AuthorizationHeader"/> in the request and will
use the <see cref="P:HttpServer.Server.AuthenticationProvider"/> if found.
</remarks>
</member>
<member name="M:HttpServer.Server.OnBeforeModules(HttpServer.RequestContext)">
<summary>
All server modules are about to be invoked.
</summary>
<param name="context">The context.</param>
<remarks>
Called when routers have been invoked but no modules yet.
</remarks>
</member>
<member name="M:HttpServer.Server.OnBeforeRequest(HttpServer.RequestContext)">
<summary>
A request have arrived but not yet been processed yet.
</summary>
<param name="context">The context.</param>
<remarks>
Default implementation adds a <c>Date</c> header and <c>Server</c> header.
</remarks>
</member>
<member name="M:HttpServer.Server.ProcessModules(HttpServer.RequestContext)">
<summary>
Go through all modules and check if any of them can handle the current request.
</summary>
<param name="context"></param>
<returns></returns>
</member>
<member name="M:HttpServer.Server.ProcessResult(HttpServer.ProcessingResult,HttpServer.RequestEventArgs)">
<summary>
Process result (check if it should be sent back or not)
</summary>
<param name="result"></param>
<param name="e"></param>
<returns><c>true</c> if request was processed properly.; otherwise <c>false</c>.</returns>
</member>
<member name="M:HttpServer.Server.ProcessRouters(HttpServer.RequestContext)">
<summary>
Processes all routers.
</summary>
<param name="context">Request context.</param>
<returns>Processing result.</returns>
</member>
<member name="M:HttpServer.Server.RequestAuthentication(System.String)">
<summary>
Requests authentication from the user.
</summary>
<param name="realm">Host/domain name that the server hosts.</param>
<remarks>
Used when calculating hashes in Digest authentication.
</remarks>
<seealso cref="T:HttpServer.Authentication.DigestAuthentication"/>
<seealso cref="M:HttpServer.Authentication.DigestAuthentication.GetHA1(System.String,System.String,System.String)"/>
</member>
<member name="M:HttpServer.Server.SendResponse(HttpServer.IHttpContext,HttpServer.IRequest,HttpServer.IResponse)">
<summary>
Send a response.
</summary>
<param name="context"></param>
<param name="request"></param>
<param name="response"></param>
</member>
<member name="M:HttpServer.Server.Start(System.Int32)">
<summary>
Start http server.
</summary>
<param name="backLog">Number of pending connections.</param>
</member>
<member name="M:HttpServer.Server.Stop(System.Boolean)">
<summary>
Stops the server
</summary>
<param name="removeModules">true if all modules should be removed.</param>
</member>
<member name="P:HttpServer.Server.AuthenticationProvider">
<summary>
Gets the authentication provider.
</summary>
<remarks>
A authentication provider is used to keep track of all authentication types
that can be used.
</remarks>
</member>
<member name="P:HttpServer.Server.ContentLengthLimit">
<summary>
Gets or sets number of bytes that a body can be.
</summary>
<remarks>
<para>
Used to determine the answer to a 100-continue request.
</para>
<para>
0 = turned off.
</para>
</remarks>
</member>
<member name="P:HttpServer.Server.Current">
<summary>
Gets current server.
</summary>
<remarks>
Only valid when a request have been received and is being processed.
</remarks>
</member>
<member name="P:HttpServer.Server.MaxContentSize">
<summary>
Gets or sets the maximum size of request body (in bytes)
</summary>
</member>
<member name="P:HttpServer.Server.ServerName">
<summary>
Gets or sets server name.
</summary>
<remarks>
Used in the "Server" header when serving requests.
</remarks>
</member>
<member name="E:HttpServer.Server.SendingResponse">
<summary>
Invoked just before a response is sent back to the client.
</summary>
</member>
<member name="E:HttpServer.Server.RequestReceived">
<summary>
Invoked *after* the web server has tried to handled the request.
</summary>
<remarks>
The event can be used to handle the request after all routes and modules
have tried to process the request.
</remarks>
</member>
<member name="E:HttpServer.Server.PrepareRequest">
<summary>
Invoked *before* the web server has tried to handled the request.
</summary>
<remarks>
Event can be used to load a session from a cookie or to force
authentication or anything other you might need t do before a request
is handled.
</remarks>
</member>
<member name="E:HttpServer.Server.ErrorPageRequested">
<summary>
An error page have been requested.
</summary>
</member>
<member name="M:HttpServer.SimpleServer.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.SimpleServer"/> class.
</summary>
</member>
<member name="T:HttpServer.Headers.HeaderFactory">
<summary>
Used to build headers.
</summary>
</member>
<member name="M:HttpServer.Headers.HeaderFactory.Add(System.String,HttpServer.Headers.Parsers.IHeaderParser)">
<summary>
Add a parser
</summary>
<param name="name">Header that the parser is for.</param>
<param name="parser">Parser implementation</param>
<remarks>
Will replace any existing parser for the specified header.
</remarks>
</member>
<member name="M:HttpServer.Headers.HeaderFactory.AddDefaultParsers">
<summary>
Add all default (built-in) parsers.
</summary>
<remarks>
Will not replace previously added parsers.
</remarks>
</member>
<member name="M:HttpServer.Headers.HeaderFactory.CreateParser(System.Type)">
<summary>
Create a header parser
</summary>
<param name="type"><see cref="T:HttpServer.Headers.Parsers.IHeaderParser"/> implementation.</param>
<remarks>
<para>
Uses <see cref="T:HttpServer.Headers.Parsers.ParserForAttribute"/> attribute to find which headers
the parser is for.
</para>
<para>Will not replace previously added parsers.</para>
</remarks>
</member>
<member name="M:HttpServer.Headers.HeaderFactory.Parse(System.String,System.String)">
<summary>
Parse a header.
</summary>
<param name="name">Name of header</param>
<param name="value">Header value</param>
<returns>Header.</returns>
<exception cref="T:System.FormatException">Value is not a well formatted header value.</exception>
</member>
<member name="T:HttpServer.IRequest">
<summary>
Request sent to a HTTP server.
</summary>
<seealso cref="T:HttpServer.Messages.Request"/>
</member>
<member name="T:HttpServer.IMessage">
<summary>
Base interface for request and response.
</summary>
</member>
<member name="M:HttpServer.IMessage.Add(System.String,HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="name"></param>
<param name="value"></param>
</member>
<member name="M:HttpServer.IMessage.Add(HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="header">Header to add.</param>
</member>
<member name="P:HttpServer.IMessage.Body">
<summary>
Gets body stream.
</summary>
</member>
<member name="P:HttpServer.IMessage.ContentLength">
<summary>
Size of the body. MUST be specified before sending the header,
unless property Chunked is set to <c>true</c>.
</summary>
</member>
<member name="P:HttpServer.IMessage.ContentType">
<summary>
Kind of content in the body
</summary>
<remarks>Default is <c>text/html</c></remarks>
</member>
<member name="P:HttpServer.IMessage.Encoding">
<summary>
Gets or sets encoding
</summary>
</member>
<member name="P:HttpServer.IMessage.Headers">
<summary>
Gets headers.
</summary>
</member>
<member name="M:HttpServer.IRequest.Get``1(System.String)">
<summary>
Get a header
</summary>
<typeparam name="T">Type that it should be cast to</typeparam>
<param name="headerName">Name of header</param>
<returns>Header if found and casted properly; otherwise <c>null</c>.</returns>
</member>
<member name="P:HttpServer.IRequest.Connection">
<summary>
Gets or sets connection header.
</summary>
</member>
<member name="P:HttpServer.IRequest.Cookies">
<summary>
Gets cookies.
</summary>
</member>
<member name="P:HttpServer.IRequest.Files">
<summary>
Gets all uploaded files.
</summary>
</member>
<member name="P:HttpServer.IRequest.Form">
<summary>
Gets form parameters.
</summary>
</member>
<member name="P:HttpServer.IRequest.HttpVersion">
<summary>
Gets or sets HTTP version.
</summary>
</member>
<member name="P:HttpServer.IRequest.IsAjax">
<summary>
Gets if request is an Ajax request.
</summary>
</member>
<member name="P:HttpServer.IRequest.Method">
<summary>
Gets or sets HTTP method.
</summary>
</member>
<member name="P:HttpServer.IRequest.Parameters">
<summary>
Gets query string and form parameters
</summary>
</member>
<member name="P:HttpServer.IRequest.QueryString">
<summary>
Gets query string.
</summary>
</member>
<member name="P:HttpServer.IRequest.Uri">
<summary>
Gets requested URI.
</summary>
</member>
<member name="T:HttpServer.Resources.FileResources">
<summary>
Load resources from disk.
</summary>
</member>
<member name="T:HttpServer.Resources.IResourceLoader">
<summary>
Loads resources from a specific location (such as assembly, hard drive etc).
</summary>
</member>
<member name="M:HttpServer.Resources.IResourceLoader.Exists(System.String)">
<summary>
Checks if a resource exists in the specified directory
</summary>
<param name="uriPath">Uri path to resource</param>
<returns><c>true</c> if resource was found; otherwise <c>false</c>.</returns>
<example>
<code>
if (resources.Exists("/files/user/user.png"))
Debug.WriteLine("Resource exists.");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.IResourceLoader.Find(System.String,System.Collections.Generic.List{System.String})">
<summary>
Find all views in a folder/path.
</summary>
<param name="path">Absolute Uri path to files that should be found, can end with wild card.</param>
<param name="viewNames">Collection to add all view names to.</param>
</member>
<member name="M:HttpServer.Resources.IResourceLoader.Get(System.String)">
<summary>
Gets a resource.
</summary>
<param name="uriPath">Uri path to resource.</param>
<returns>Resource</returns>
<exception cref="T:HttpServer.ForbiddenException">Uri contains forbidden characters.</exception>
<example>
<code>
Resource resource = resources.Get("/files/user/user.png");
</code>
</example>
</member>
<member name="F:HttpServer.Resources.FileResources.DefaultForbiddenChars">
<summary>
Default forbidden characters.
</summary>
</member>
<member name="F:HttpServer.Resources.FileResources._paths">
<summary>
relative to absolute path mappings.
</summary>
</member>
<member name="M:HttpServer.Resources.FileResources.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Resources.FileResources"/> class.
</summary>
</member>
<member name="M:HttpServer.Resources.FileResources.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Resources.FileResources"/> class.
</summary>
<param name="uri">Request URI path</param>
<param name="absolutePath">Disk path</param>
<remarks>
File names should not be included in URI or path.
</remarks>
<example>
<code>
new FileResources("/files/user/", "C:\\intetpub\\files\users\\");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.FileResources.Add(System.String,System.String)">
<summary>
Add a new resource mapping.
</summary>
<param name="uri">Request URI path</param>
<param name="absolutePath">Disk path</param>
<remarks>
File names should not be included in URI or path.
</remarks>
<example>
<code>
resources.Add("/files/", "C:\\intetpub\\files\\");
</code>
</example>
<exception cref="T:System.IO.DirectoryNotFoundException"><c>absolutePath</c> is not found.</exception>
</member>
<member name="M:HttpServer.Resources.FileResources.Contains(System.String,System.Collections.Generic.IEnumerable{System.String})">
<summary>
check if source contains any of the chars.
</summary>
<param name="source">string to check</param>
<param name="chars">Characters to fined</param>
<returns></returns>
</member>
<member name="M:HttpServer.Resources.FileResources.GetFullFilePath(System.String)">
<summary>
Go through all mappings and find requested Uri.
</summary>
<param name="uriPath">Uri to get local path for.</param>
<returns>Path if found; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Resources.FileResources.Exists(System.String)">
<summary>
Checks if a resource exists in the specified directory
</summary>
<param name="uriPath">Uri path to resource</param>
<returns><c>true</c> if resource was found; otherwise <c>false</c>.</returns>
<example>
<code>
if (resources.Exists("/files/user/user.png"))
Debug.WriteLine("Resource exists.");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.FileResources.Get(System.String)">
<summary>
Gets a resource.
</summary>
<param name="uriPath">Uri path to resource.</param>
<returns>Resource</returns>
<exception cref="T:HttpServer.ForbiddenException">Uri contains forbidden characters.</exception>
<example>
<code>
Resource resource = resources.Get("/files/user/user.png");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.FileResources.Find(System.String,System.Collections.Generic.List{System.String})">
<summary>
Find all views in a folder/path.
</summary>
<param name="path">Absolute Uri path to files that should be found, can end with wild card.</param>
<param name="viewNames">Collection to add all view names to.</param>
<exception cref="T:HttpServer.ForbiddenException">Uri contains forbidden characters.</exception>
<example>
Find("
</example>
</member>
<member name="P:HttpServer.Resources.FileResources.ForbiddenCharacters">
<summary>
Gets or sets forbidden characters.
</summary>
<remarks>
Used to revoke access to any system files.
</remarks>
</member>
<member name="P:HttpServer.Resources.FileResources.Mapping.AbsolutePath">
<summary>
Gets or sets absolute path on disk, including file name.
</summary>
</member>
<member name="P:HttpServer.Resources.FileResources.Mapping.RelativePath">
<summary>
Gets or sets relative file path.
</summary>
</member>
<member name="P:HttpServer.Resources.FileResources.Mapping.UriPath">
<summary>
Gets or sets Uri path, excluding file name
</summary>
</member>
<member name="T:HttpServer.Messages.ResponseWriter">
<summary>
Used to send a response back to the client.
</summary>
<remarks>
<para>
Writes a <see cref="T:HttpServer.IResponse"/> object into a stream.
</para>
<para>
Important! ResponseWriter do not throw any exceptions. Instead it just logs them and
let them die peacefully. This is since the response writer is used from
catch blocks here and there.
</para>
</remarks>
</member>
<member name="M:HttpServer.Messages.ResponseWriter.Send(HttpServer.IHttpContext,HttpServer.IResponse)">
<summary>
Sends response using the specified context.
</summary>
<param name="context">The context.</param>
<param name="response">The response.</param>
</member>
<member name="M:HttpServer.Messages.ResponseWriter.Send(HttpServer.IHttpContext,System.String,System.Text.Encoding)">
<summary>
Converts and sends a string.
</summary>
<param name="context"></param>
<param name="data"></param>
<param name="encoding">Encoding used to transfer string</param>
</member>
<member name="M:HttpServer.Messages.ResponseWriter.SendBody(HttpServer.IHttpContext,System.IO.Stream)">
<summary>
Send a body to the client
</summary>
<param name="context">Context containing the stream to use.</param>
<param name="body">Body to send</param>
</member>
<member name="M:HttpServer.Messages.ResponseWriter.SendHeaders(HttpServer.IHttpContext,HttpServer.IResponse)">
<summary>
Send all headers to the client
</summary>
<param name="response">Response containing call headers.</param>
<param name="context">Content used to send headers.</param>
</member>
<member name="T:HttpServer.BodyDecoders.IBodyDecoder">
<summary>
Decodes body stream.
</summary>
</member>
<member name="M:HttpServer.BodyDecoders.IBodyDecoder.Decode(System.IO.Stream,HttpServer.Headers.ContentTypeHeader,System.Text.Encoding)">
<summary>
Decode body stream
</summary>
<param name="stream">Stream containing the content</param>
<param name="contentType">Content type header</param>
<param name="encoding">Stream encoding</param>
<returns>Decoded data.</returns>
<exception cref="T:System.FormatException">Body format is invalid for the specified content type.</exception>
<exception cref="T:HttpServer.InternalServerException">Something unexpected failed.</exception>
</member>
<member name="P:HttpServer.BodyDecoders.IBodyDecoder.ContentTypes">
<summary>
All content types that the decoder can parse.
</summary>
<returns>A collection of all content types that the decoder can handle.</returns>
</member>
<member name="T:HttpServer.BodyDecoders.MultiPartDecoder">
<summary>
Decodes forms that have multiple sections.
</summary>
<remarks>
http://www.faqs.org/rfcs/rfc1867.html
</remarks>
</member>
<member name="F:HttpServer.BodyDecoders.MultiPartDecoder.FormData">
<summary>
form-data
</summary>
</member>
<member name="F:HttpServer.BodyDecoders.MultiPartDecoder.MimeType">
<summary>
multipart/form-data
</summary>
</member>
<member name="M:HttpServer.BodyDecoders.MultiPartDecoder.Decode(System.IO.Stream,HttpServer.Headers.ContentTypeHeader,System.Text.Encoding)">
<summary>
Decode body stream
</summary>
<param name="stream">Stream containing the content</param>
<param name="contentType">Content type header</param>
<param name="encoding">Stream encoding</param>
<returns>Decoded data.</returns>
<exception cref="T:System.FormatException">Body format is invalid for the specified content type.</exception>
<exception cref="T:HttpServer.InternalServerException">Something unexpected failed.</exception>
<exception cref="T:System.ArgumentNullException"><c>stream</c> is <c>null</c>.</exception>
</member>
<member name="P:HttpServer.BodyDecoders.MultiPartDecoder.ContentTypes">
<summary>
All content types that the decoder can parse.
</summary>
<returns>A collection of all content types that the decoder can handle.</returns>
</member>
<member name="T:HttpServer.Tools.SessionProvider`1">
<summary>
Provides sessions.
</summary>
<typeparam name="T">Type of session object</typeparam>
<remarks>
<para>Will always use files for sessions (utilizing the binary formatter), but can
also cache them in memory.</para>
<para>
If caching is enabled, it will only write sessions to disk every 20 seconds if they have
been accessed the last minute (to not keep writing dead sessions to disk).
</para>
</remarks>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.SessionProvider`1"/> class.
</summary>
<exception cref="T:System.InvalidOperationException">Session type must use [Serializable] attribute.</exception>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.Create">
<summary>
Create a new session.
</summary>
<returns></returns>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.Load(System.String)">
<summary>
Load session
</summary>
<param name="sessionId">Id of session.</param>
<returns>Session if found; otherwise <c>null</c>.</returns>
<exception cref="T:System.ArgumentNullException"><c>sessionId</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.OnLoadSession(System.Object,HttpServer.RequestEventArgs)">
<summary>
Load session when a new request comes in.
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.Save(`0)">
<summary>
Save a session to disk.
</summary>
<param name="session">Session to write to disk.</param>
<remarks>
You are responsible for writing sessions to disk if you are not using caching.
</remarks>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.Start(HttpServer.Server)">
<summary>
Start the session system and hook
</summary>
<param name="webServer"></param>
</member>
<member name="M:HttpServer.Tools.SessionProvider`1.Stop">
<summary>
Stop session handling
</summary>
</member>
<member name="P:HttpServer.Tools.SessionProvider`1.CookieName">
<summary>
Gets or sets session cookie name
</summary>
</member>
<member name="P:HttpServer.Tools.SessionProvider`1.Cache">
<summary>
Gets or sets cache
</summary>
</member>
<member name="P:HttpServer.Tools.SessionProvider`1.Current">
<summary>
Gets current session.
</summary>
</member>
<member name="P:HttpServer.Tools.SessionProvider`1.SessionExpireSeconds">
<summary>
Gets or sets number of seconds before a session expired.
</summary>
<remarks>
A session have expired if nothing have accessed it for X seconds. This
class modifies the write time each time it's accessed.
</remarks>
</member>
<member name="P:HttpServer.Tools.SessionProvider`1.SetCookie">
<summary>
Determines if cookie should be set in the response.
</summary>
</member>
<member name="T:HttpServer.Tools.SessionChangedHandler">
<summary>
Invoked when a session have been changed and should be written to disc.
</summary>
</member>
<member name="T:HttpServer.Messages.Parser.ResponseLineEventArgs">
<summary>
First line in a response have been received
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.ResponseLineEventArgs.ReasonPhrase">
<summary>
Gets or sets motivation to why the status code was used.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.ResponseLineEventArgs.StatusCode">
<summary>
Gets or sets message status code
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.ResponseLineEventArgs.Version">
<summary>
Gets or sets sip protocol version used.
</summary>
</member>
<member name="T:HttpServer.Messages.FactoryRequestEventArgs">
<summary>
A request have been parsed successfully by the server.
</summary>
</member>
<member name="M:HttpServer.Messages.FactoryRequestEventArgs.#ctor(HttpServer.IRequest)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.FactoryRequestEventArgs"/> class.
</summary>
<param name="request">Received request.</param>
</member>
<member name="P:HttpServer.Messages.FactoryRequestEventArgs.Request">
<summary>
Gets received request.
</summary>
</member>
<member name="T:HttpServer.Authentication.IUserProvider">
<summary>
Provider returning user to be authenticated.
</summary>
</member>
<member name="M:HttpServer.Authentication.IUserProvider.Lookup(System.String,System.String)">
<summary>
Lookups the specified user
</summary>
<param name="userName">User name.</param>
<param name="host">Typically web server domain name.</param>
<returns>User if found; otherwise <c>null</c>.</returns>
<remarks>
User name can basically be anything. For instance name entered by user when using
basic or digest authentication, or SID when using Windows authentication.
</remarks>
</member>
<member name="M:HttpServer.Authentication.IUserProvider.GetPrincipal(HttpServer.Authentication.IAuthenticationUser)">
<summary>
Gets the principal to use.
</summary>
<param name="user">Successfully authenticated user.</param>
<returns></returns>
<remarks>
Invoked when a user have successfully been authenticated.
</remarks>
<seealso cref="T:System.Security.Principal.GenericPrincipal"/>
<seealso cref="T:System.Security.Principal.WindowsPrincipal"/>
</member>
<member name="T:HttpServer.Authentication.IAuthenticationUser">
<summary>
User information used during authentication process.
</summary>
</member>
<member name="P:HttpServer.Authentication.IAuthenticationUser.Username">
<summary>
Gets or sets user name used during authentication.
</summary>
</member>
<member name="P:HttpServer.Authentication.IAuthenticationUser.Password">
<summary>
Gets or sets unencrypted password.
</summary>
<remarks>
Password as clear text. You could use <see cref="P:HttpServer.Authentication.IAuthenticationUser.HA1"/> instead if your passwords
are encrypted in the database.
</remarks>
</member>
<member name="P:HttpServer.Authentication.IAuthenticationUser.HA1">
<summary>
Gets or sets HA1 hash.
</summary>
<remarks>
<para>
Digest authentication requires clear text passwords to work. If you
do not have that, you can store a HA1 hash in your database (which is part of
the Digest authentication process).
</para>
<para>
A HA1 hash is simply a Md5 encoded string: "UserName:Realm:Password". The quotes should
not be included. Realm is the currently requested Host (as in <c>Request.Headers["host"]</c>).
</para>
<para>
Leave the string as <c>null</c> if you are not using HA1 hashes.
</para>
</remarks>
</member>
<member name="T:HttpServer.Tools.Properties.PropertyProvider">
<summary>
Used to get or set properties on objects.
</summary>
<remarks>
This class should be a bit faster than the standard reflection.
</remarks>
</member>
<member name="M:HttpServer.Tools.Properties.PropertyProvider.Get(System.Type)">
<summary>
Get cached type.
</summary>
<param name="type">Type to get/set properties in</param>
<returns>Type to use</returns>
</member>
<member name="T:HttpServer.Sessions.SessionProvider`1">
<summary>
Used to load/store sessions in the server.
</summary>
</member>
<member name="M:HttpServer.Sessions.SessionProvider`1.#ctor(HttpServer.Server,HttpServer.Sessions.ISessionStore)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Sessions.SessionProvider`1"/> class.
</summary>
<param name="server">Web server that the provider is for..</param>
<param name="store">Store to use.</param>
</member>
<member name="M:HttpServer.Sessions.SessionProvider`1.#ctor(HttpServer.Server)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Sessions.SessionProvider`1"/> class.
</summary>
<param name="server">The server.</param>
<remarks>
Uses a file store.
</remarks>
</member>
<member name="M:HttpServer.Sessions.SessionProvider`1.OnRequest(System.Object,HttpServer.RequestEventArgs)">
<summary>
Loads a session for all requests that got the session cookie.
</summary>
<param name="sender">The sender.</param>
<param name="e">The <see cref="T:HttpServer.RequestEventArgs"/> instance containing the event data.</param>
</member>
<member name="P:HttpServer.Sessions.SessionProvider`1.CurrentSession">
<summary>
Gets current session
</summary>
<value>Session if set, otherwise <c>null</c>.</value>
</member>
<member name="P:HttpServer.Sessions.SessionProvider`1.SessionLifeTime">
<summary>
Gets or sets the session life time in minutes.
</summary>
<value>The session life time.</value>
</member>
<member name="E:HttpServer.Sessions.SessionProvider`1.SessionLoaded">
<summary>
A session have been loaded. Use <see cref="P:HttpServer.Sessions.SessionProvider`1.CurrentSession"/> to access it.
</summary>
</member>
<member name="T:HttpServer.SecureHttpListener">
<summary>
Secure version of the HTTP listener.
</summary>
</member>
<member name="M:HttpServer.SecureHttpListener.#ctor(System.Net.IPAddress,System.Int32,System.Security.Cryptography.X509Certificates.X509Certificate)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.SecureHttpListener"/> class.
</summary>
<param name="address">Address to accept new connections on.</param>
<param name="port">Port to accept connections on.</param>
<param name="certificate">Certificate securing the connection.</param>
</member>
<member name="M:HttpServer.SecureHttpListener.CreateContext(System.Net.Sockets.Socket)">
<summary>
Create a new context
</summary>
<param name="socket">Accepted socket</param>
<returns>A new context.</returns>
<remarks>
Factory is assigned by the <see cref="T:HttpServer.HttpListener"/> on each incoming request.
</remarks>
</member>
<member name="P:HttpServer.SecureHttpListener.IsSecure">
<summary>
Gets if listener is secure.
</summary>
<value></value>
</member>
<member name="P:HttpServer.SecureHttpListener.Protocol">
<summary>
Gets or sets SSL protocol.
</summary>
</member>
<member name="P:HttpServer.SecureHttpListener.UseClientCertificate">
<summary>
Gets or sets if client certificate should be used.
</summary>
</member>
<member name="T:HttpServer.Messages.Parser.BodyEventArgs">
<summary>
Arguments used when more body bytes have come.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.BodyEventArgs.#ctor(System.Byte[],System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.BodyEventArgs"/> class.
</summary>
<param name="buffer">buffer that contains the received bytes.</param>
<param name="offset">offset in buffer where to start processing.</param>
<param name="count">number of bytes from <paramref name="offset"/> that should be parsed.</param>
<exception cref="T:System.ArgumentNullException"><c>buffer</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.BodyEventArgs.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.BodyEventArgs"/> class.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.BodyEventArgs.Buffer">
<summary>
Gets or sets buffer that contains the received bytes.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.BodyEventArgs.Count">
<summary>
Gets or sets number of bytes from <see cref="P:HttpServer.Messages.Parser.BodyEventArgs.Offset"/> that should be parsed.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.BodyEventArgs.Offset">
<summary>
Gets or sets offset in buffer where to start processing.
</summary>
</member>
<member name="T:HttpServer.Modules.IModule">
<summary>
HTTP Module
</summary>
</member>
<member name="M:HttpServer.Modules.IModule.Process(HttpServer.RequestContext)">
<summary>
Process a request.
</summary>
<param name="context">Request information</param>
<returns>What to do next.</returns>
</member>
<member name="T:HttpServer.InternalServerException">
<summary>
Something unexpected went wrong.
</summary>
</member>
<member name="M:HttpServer.InternalServerException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.InternalServerException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.InternalServerException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.InternalServerException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Inner exception.</param>
</member>
<member name="T:HttpServer.HttpFile">
<summary>
File sent from remote end.
</summary>
</member>
<member name="P:HttpServer.HttpFile.ContentType">
<summary>
Gets or sets content type.
</summary>
</member>
<member name="P:HttpServer.HttpFile.Name">
<summary>
Gets or sets name in form.
</summary>
</member>
<member name="P:HttpServer.HttpFile.OriginalFileName">
<summary>
Gets or sets name original file name
</summary>
</member>
<member name="P:HttpServer.HttpFile.TempFileName">
<summary>
Gets or sets filename for locally stored file.
</summary>
</member>
<member name="T:HttpServer.Headers.Parsers.CookieParser">
<summary>
Parses Cookie header.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.CookieParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.BodyDecoders.UrlDecoder">
<summary>
Decodes URL encoded values.
</summary>
</member>
<member name="M:HttpServer.BodyDecoders.UrlDecoder.Decode(System.IO.Stream,HttpServer.Headers.ContentTypeHeader,System.Text.Encoding)">
<summary>
</summary>
<param name="stream">Stream containing the content</param>
<param name="contentType">Content type header</param>
<param name="encoding">Stream encoding</param>
<returns>Collection with all parameters.</returns>
<exception cref="T:System.FormatException">Body format is invalid for the specified content type.</exception>
<exception cref="T:HttpServer.InternalServerException">Failed to read all bytes from body stream.</exception>
</member>
<member name="P:HttpServer.BodyDecoders.UrlDecoder.ContentTypes">
<summary>
All content types that the decoder can parse.
</summary>
<returns>A collection of all content types that the decoder can handle.</returns>
</member>
<member name="T:HttpServer.Tools.Session">
<summary>
Base class for sessions.
</summary>
<remarks>
Your class must be tagged with <see cref="T:System.Runtime.Serialization.ISerializable"/> attribute to be able to use sessions.
</remarks>
</member>
<member name="M:HttpServer.Tools.Session.TriggerChanged">
<summary>
The session have been changed and should be written to disk.
</summary>
</member>
<member name="F:HttpServer.Tools.Session.Changed">
<summary>
Session have been changed.
</summary>
</member>
<member name="P:HttpServer.Tools.Session.AccessedAt">
<summary>
Gets or sets when session was accessed last
</summary>
</member>
<member name="P:HttpServer.Tools.Session.CurrentSession">
<summary>
Gets current session.
</summary>
</member>
<member name="P:HttpServer.Tools.Session.SessionId">
<summary>
Gets or sets session id.
</summary>
</member>
<member name="P:HttpServer.Tools.Session.WrittenAt">
<summary>
Gets or sets when the session was last written to disk.
</summary>
</member>
<member name="T:HttpServer.Messages.MessageFactory">
<summary>
Parses and builds messages
</summary>
<remarks>
<para>The message factory takes care of building messages
from all end points.</para>
<para>
Since both message and packet protocols are used, the factory
hands out contexts to all end points. The context keeps a state
to be able to parse partial messages properly.
</para>
<para>
Each end point need to hand the context back to the message factory
when the client disconnects (or a message have been parsed).
</para>
</remarks>
</member>
<member name="M:HttpServer.Messages.MessageFactory.#ctor(HttpServer.Headers.HeaderFactory)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.MessageFactory"/> class.
</summary>
<param name="factory">Factory used to create headers.</param>
</member>
<member name="M:HttpServer.Messages.MessageFactory.CreateNewContext">
<summary>
Create a new message factory context.
</summary>
<returns>A new context.</returns>
<remarks>
A context is used to parse messages from a specific endpoint.
</remarks>
</member>
<member name="M:HttpServer.Messages.MessageFactory.Release(HttpServer.Messages.MessageFactoryContext)">
<summary>
Release a used factory context.
</summary>
<param name="factoryContext"></param>
</member>
<member name="E:HttpServer.Messages.MessageFactory.RequestReceived">
<summary>
A request have been received from one of the end points.
</summary>
</member>
<member name="E:HttpServer.Messages.MessageFactory.ResponseReceived">
<summary>
A response have been received from one of the end points.
</summary>
</member>
<member name="T:HttpServer.Logging.ILogger">
<summary>
Interface used to write to log files.
</summary>
<remarks>
If you want to use the built in filtering mechanism, create a constructor
which takes one parameter, a <see cref="T:HttpServer.Logging.ILogFilter"/>.
</remarks>
</member>
<member name="M:HttpServer.Logging.ILogger.Debug(System.String)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Debug(System.String,System.Exception)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Error(System.String)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Error(System.String,System.Exception)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Fatal(System.String)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Fatal(System.String,System.Exception)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Info(System.String)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Info(System.String,System.Exception)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Trace(System.String)">
<summary>
Write a entry that helps when trying to find hard to find bugs.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Trace(System.String,System.Exception)">
<summary>
Write a entry that helps when trying to find hard to find bugs.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Warning(System.String)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ILogger.Warning(System.String,System.Exception)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="T:HttpServer.Messages.RequestCookie">
<summary>
cookie sent by the client/browser
</summary>
<seealso cref="T:HttpServer.Messages.ResponseCookie"/>
</member>
<member name="M:HttpServer.Messages.RequestCookie.#ctor(System.String,System.String)">
<summary>
Constructor.
</summary>
<param name="id">cookie identifier</param>
<param name="content">cookie content</param>
<exception cref="T:System.ArgumentNullException">id or content is null</exception>
<exception cref="T:System.ArgumentException">id is empty</exception>
</member>
<member name="M:HttpServer.Messages.RequestCookie.ToString">
<summary>
Gets the cookie HTML representation.
</summary>
<returns>cookie string</returns>
</member>
<member name="P:HttpServer.Messages.RequestCookie.Name">
<summary>
Gets the cookie identifier.
</summary>
</member>
<member name="P:HttpServer.Messages.RequestCookie.Value">
<summary>
Gets value.
</summary>
<remarks>
Set to <c>null</c> to remove cookie.
</remarks>
</member>
<member name="T:HttpServer.ErrorPageEventArgs">
<summary>
Arguments for <see cref="E:HttpServer.Server.ErrorPageRequested"/>.
</summary>
</member>
<member name="M:HttpServer.ErrorPageEventArgs.#ctor(HttpServer.IHttpContext)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ErrorPageEventArgs"/> class.
</summary>
<param name="context">The context.</param>
</member>
<member name="P:HttpServer.ErrorPageEventArgs.Exception">
<summary>
Gets or sets thrown exception
</summary>
</member>
<member name="P:HttpServer.ErrorPageEventArgs.IsHandled">
<summary>
Gets or sets if error page was provided.
</summary>
</member>
<member name="P:HttpServer.ErrorPageEventArgs.Request">
<summary>
Gets requested resource.
</summary>
</member>
<member name="P:HttpServer.ErrorPageEventArgs.Response">
<summary>
Gets response to send
</summary>
</member>
<member name="T:HttpServer.Authentication.DigestAuthentication">
<summary>
Implements HTTP Digest authentication. It's more secure than Basic auth since password is
encrypted with a "key" from the server.
</summary>
<remarks>
Keep in mind that the password is encrypted with MD5. Use a combination of SSL and digest auth to be secure.
</remarks>
</member>
<member name="T:HttpServer.Authentication.IAuthenticator">
<summary>
Authenticates requests
</summary>
</member>
<member name="M:HttpServer.Authentication.IAuthenticator.Authenticate(HttpServer.Headers.AuthorizationHeader,System.String,System.String)">
<summary>
Authenticate request
</summary>
<param name="header">Authorization header send by web client</param>
<param name="realm">Realm to authenticate in, typically a domain name.</param>
<param name="httpVerb">HTTP Verb used in the request.</param>
<returns><c>User</c> if authentication was successful; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Authentication.IAuthenticator.CreateChallenge(System.String)">
<summary>
Create a authentication challenge.
</summary>
<param name="realm">Realm that the user should authenticate in</param>
<returns>A WWW-Authenticate header.</returns>
<exception cref="T:System.ArgumentNullException">If realm is empty or <c>null</c>.</exception>
</member>
<member name="P:HttpServer.Authentication.IAuthenticator.Scheme">
<summary>
Gets authenticator scheme
</summary>
<example>
digest
</example>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.#ctor(HttpServer.Authentication.IUserProvider)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Authentication.DigestAuthentication"/> class.
</summary>
<param name="userProvider">Supplies users during authentication process.</param>
</member>
<member name="F:HttpServer.Authentication.DigestAuthentication.DisableNonceCheck">
<summary>
Used by test classes to be able to use hardcoded values
</summary>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.Authenticate(HttpServer.Headers.AuthorizationHeader,System.String,System.String)">
<summary>
An authentication response have been received from the web browser.
Check if it's correct
</summary>
<param name="header">Contents from the Authorization header</param>
<param name="realm">Realm that should be authenticated</param>
<param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
<returns>
Authentication object that is stored for the request. A user class or something like that.
</returns>
<exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
<exception cref="T:System.ArgumentNullException">If any of the parameters is empty or null.</exception>
</member>
<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)">
<summary>
Encrypts parameters into a Digest string
</summary>
<param name="realm">Realm that the user want to log into.</param>
<param name="userName">User logging in</param>
<param name="password">Users password.</param>
<param name="method">HTTP method.</param>
<param name="uri">Uri/domain that generated the login prompt.</param>
<param name="qop">Quality of Protection.</param>
<param name="nonce">"Number used ONCE"</param>
<param name="nc">Hexadecimal request counter.</param>
<param name="cnonce">"Client Number used ONCE"</param>
<returns>Digest encrypted string</returns>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.Encrypt(System.String,System.String,System.String,System.String,System.String,System.String)">
<summary>
</summary>
<param name="ha1">Md5 hex encoded "userName:realm:password", without the quotes.</param>
<param name="ha2">Md5 hex encoded "method:uri", without the quotes</param>
<param name="qop">Quality of Protection</param>
<param name="nonce">"Number used ONCE"</param>
<param name="nc">Hexadecimal request counter.</param>
<param name="cnonce">Client number used once</param>
<returns></returns>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.CreateChallenge(System.String)">
<summary>
Create a authentication challenge.
</summary>
<param name="realm">Realm that the user should authenticate in</param>
<returns>A correct auth request.</returns>
<exception cref="T:System.ArgumentNullException">If realm is empty or null.</exception>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.GetCurrentNonce">
<summary>
Gets the current nonce.
</summary>
<returns></returns>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.GetMD5HashBinHex2(System.String)">
<summary>
Gets the Md5 hash bin hex2.
</summary>
<param name="toBeHashed">To be hashed.</param>
<returns></returns>
</member>
<member name="M:HttpServer.Authentication.DigestAuthentication.IsValidNonce(System.String)">
<summary>
determines if the nonce is valid or has expired.
</summary>
<param name="nonce">nonce value (check wikipedia for info)</param>
<returns><c>true</c> if the nonce has not expired.</returns>
</member>
<member name="P:HttpServer.Authentication.DigestAuthentication.Name">
<summary>
Gets authentication scheme name
</summary>
</member>
<member name="P:HttpServer.Authentication.DigestAuthentication.Scheme">
<summary>
Gets authenticator scheme
</summary>
<value></value>
<example>
digest
</example>
</member>
<member name="T:HttpServer.Authentication.AuthenticationProvider">
<summary>
Provides authentication in the web server.
</summary>
<remarks>
To initiate authentication you just need to throw a Una
</remarks>
</member>
<member name="M:HttpServer.Authentication.AuthenticationProvider.Add(HttpServer.Authentication.IAuthenticator)">
<summary>
Add a authenticator.
</summary>
<param name="authenticator"></param>
</member>
<member name="M:HttpServer.Authentication.AuthenticationProvider.Authenticate(HttpServer.IRequest)">
<summary>
Authenticate request.
</summary>
<param name="request"></param>
<returns></returns>
<remarks>
Requires that a <c>AuthorizationHeader</c> have been sent by the client. If not,
request one by sending a WWW-Authentication header (can be generated by the Challenge method).
</remarks>
<exception cref="T:System.InvalidOperationException">Authorization header was not found in the request.</exception>
<exception cref="T:System.NotSupportedException">Requested authentication scheme is not supported.</exception>
</member>
<member name="M:HttpServer.Authentication.AuthenticationProvider.CreateChallenge(HttpServer.IResponse,System.String)">
<summary>
Create a challenge header (WWW-authenticate)
</summary>
<param name="response">Response that the authentication header should be added to</param>
<param name="realm">Realm that the user should authenticate in</param>
<returns>WWW-Authenticate header.</returns>
<remarks>
<para>
Scheme can currently be <c>basic</c> or <c>digest</c>. Basic is not very safe, but easier to use.
Digest is quite safe.
</para><para>
</para>
</remarks>
<exception cref="T:System.NotSupportedException">Requested scheme is not supported.</exception>
</member>
<member name="T:HttpServer.Logging.ConsoleLogFactory">
<summary>
Creates a console logger.
</summary>
</member>
<member name="T:HttpServer.Logging.ILogFactory">
<summary>
Factory implementation used to create logs.
</summary>
</member>
<member name="M:HttpServer.Logging.ILogFactory.CreateLogger(System.Type)">
<summary>
Create a new logger.
</summary>
<param name="type">Type that requested a logger.</param>
<returns>Logger for the specified type;</returns>
<remarks>
MUST ALWAYS return a logger. Return <see cref="T:HttpServer.Logging.NullLogWriter"/> if no logging
should be used.
</remarks>
</member>
<member name="M:HttpServer.Logging.ConsoleLogFactory.#ctor(HttpServer.Logging.ILogFilter)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Logging.ConsoleLogFactory"/> class.
</summary>
<param name="filter">The filter.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogFactory.CreateLogger(System.Type)">
<summary>
Create a new logger.
</summary>
<param name="type">Type that requested a logger.</param>
<returns>Logger for the specified type;</returns>
<remarks>
MUST ALWAYS return a logger. Return <see cref="T:HttpServer.Logging.NullLogWriter"/> if no logging
should be used.
</remarks>
</member>
<member name="T:HttpServer.Routing.SimpleRouter">
<summary>
redirects from one URL to another.
</summary>
</member>
<member name="T:HttpServer.Routing.IRouter">
<summary>
Rules are used to perform operations before a request is being handled.
Rules can be used to create routing etc.
</summary>
</member>
<member name="M:HttpServer.Routing.IRouter.Process(HttpServer.RequestContext)">
<summary>
Process the incoming request.
</summary>
<param name="context">Request context information.</param>
<returns>Processing result.</returns>
<exception cref="T:System.ArgumentNullException">If any parameter is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Routing.SimpleRouter.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Routing.SimpleRouter"/> class.
</summary>
<param name="fromUrl">Absolute path (no server name)</param>
<param name="toUrl">Absolute path (no server name)</param>
<example>
server.Add(new RedirectRule("/", "/user/index"));
</example>
</member>
<member name="M:HttpServer.Routing.SimpleRouter.#ctor(System.String,System.String,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Routing.SimpleRouter"/> class.
</summary>
<param name="fromUrl">Absolute path (no server name)</param>
<param name="toUrl">Absolute path (no server name)</param>
<param name="shouldRedirect"><c>true</c> if request should be redirected, <c>false</c> if the request URI should be replaced.</param>
<example>
server.Add(new RedirectRule("/", "/user/index"));
</example>
</member>
<member name="M:HttpServer.Routing.SimpleRouter.Process(HttpServer.RequestContext)">
<summary>
Process the incoming request.
</summary>
<param name="context">Request context.</param>
<returns>Processing result.</returns>
<exception cref="T:System.ArgumentNullException">If any parameter is <c>null</c>.</exception>
</member>
<member name="P:HttpServer.Routing.SimpleRouter.FromUrl">
<summary>
Gets string to match request URI with.
</summary>
<remarks>Is compared to request.Uri.AbsolutePath</remarks>
</member>
<member name="P:HttpServer.Routing.SimpleRouter.ShouldRedirect">
<summary>
Gets whether the server should redirect the client instead of simply modifying the URI.
</summary>
<remarks>
<c>false</c> means that the rule will replace
the current request URI with the new one from this class.
<c>true</c> means that a redirect response is sent to the client.
</remarks>
</member>
<member name="P:HttpServer.Routing.SimpleRouter.ToUrl">
<summary>
Gets where to redirect.
</summary>
</member>
<member name="T:HttpServer.Headers.ConnectionHeader">
<summary>
The Connection general-header field allows the sender to specify options
that are desired for that particular connection and MUST NOT be
communicated by proxies over further connections.
</summary>
<remarks>
<para>
HTTP/1.1 proxies MUST parse the Connection header field before a
message is forwarded and, for each connection-token in this field,
remove any header field(s) from the message with the same name as the
connection-token. Connection options are signaled by the presence of
a connection-token in the Connection header field, not by any
corresponding additional header field(s), since the additional header
field may not be sent if there are no parameters associated with that
connection option.
</para><para>
Message headers listed in the Connection header MUST NOT include
end-to-end headers, such as Cache-Control.
</para><para>
HTTP/1.1 defines the "close" connection option for the sender to
signal that the connection will be closed after completion of the
response. For example,
<example>
Connection: close
</example>
in either the request or the response header fields indicates that
the connection SHOULD NOT be considered `persistent' (section 8.1)
after the current request/response is complete.
</para><para>
HTTP/1.1 applications that do not support persistent connections MUST
include the "close" connection option in every message.
</para><para>
A system receiving an HTTP/1.0 (or lower-version) message that
includes a Connection header MUST, for each connection-token in this
field, remove and ignore any header field(s) from the message with
the same name as the connection-token. This protects against mistaken
forwarding of such header fields by pre-HTTP/1.1 proxies. See section
19.6.2 in RFC2616.
</para>
</remarks>
</member>
<member name="F:HttpServer.Headers.ConnectionHeader.NAME">
<summary>
Header name
</summary>
</member>
<member name="F:HttpServer.Headers.ConnectionHeader.Default10">
<summary>
Default connection header for HTTP/1.0
</summary>
</member>
<member name="F:HttpServer.Headers.ConnectionHeader.Default11">
<summary>
Default connection header for HTTP/1.1
</summary>
</member>
<member name="M:HttpServer.Headers.ConnectionHeader.#ctor(HttpServer.Headers.ConnectionType,HttpServer.Headers.HeaderParameterCollection)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.ConnectionHeader"/> class.
</summary>
<param name="type">Connection type.</param>
<param name="parameters">The parameters.</param>
</member>
<member name="M:HttpServer.Headers.ConnectionHeader.#ctor(HttpServer.Headers.ConnectionType)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.ConnectionHeader"/> class.
</summary>
<param name="type">The type.</param>
</member>
<member name="M:HttpServer.Headers.ConnectionHeader.ToString">
<summary>
Returns data formatted as a HTTP header value.
</summary>
<returns>
A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</returns>
</member>
<member name="P:HttpServer.Headers.ConnectionHeader.Parameters">
<summary>
Gets connection parameters.
</summary>
</member>
<member name="P:HttpServer.Headers.ConnectionHeader.Type">
<summary>
Gets or sets connection type
</summary>
</member>
<member name="P:HttpServer.Headers.ConnectionHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.Headers.ConnectionType">
<summary>
Type of HTTP connection
</summary>
</member>
<member name="F:HttpServer.Headers.ConnectionType.Close">
<summary>
Connection is closed after each request-response
</summary>
</member>
<member name="F:HttpServer.Headers.ConnectionType.KeepAlive">
<summary>
Connection is kept alive for X seconds (unless another request have been made)
</summary>
</member>
<member name="F:HttpServer.Headers.ConnectionType.TransferEncoding">
<summary>
Requests message-body be sent with an encoding to be specified in the "Transfer-Encoding" header.
</summary>
</member>
<member name="T:HttpServer.ContentTypeHelper">
<summary>
Helper for content types.
</summary>
</member>
<member name="T:HttpServer.Tools.ObjectPool`1">
<summary>
Flyweight design pattern implementation.
</summary>
<typeparam name="T">Type of object.</typeparam>
</member>
<member name="M:HttpServer.Tools.ObjectPool`1.#ctor(HttpServer.Tools.CreateHandler{`0})">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.ObjectPool`1"/> class.
</summary>
<param name="createHandler">How large buffers to allocate.</param>
</member>
<member name="M:HttpServer.Tools.ObjectPool`1.Dequeue">
<summary>
Get an object.
</summary>
<returns>Created object.</returns>
<remarks>Will create one if queue is empty.</remarks>
</member>
<member name="M:HttpServer.Tools.ObjectPool`1.Enqueue(`0)">
<summary>
Enqueues the specified buffer.
</summary>
<param name="value">Object to enqueue.</param>
<exception cref="T:System.ArgumentOutOfRangeException">Buffer is is less than the minimum requirement.</exception>
</member>
<member name="T:HttpServer.Tools.CreateHandler`1">
<summary>
Used to create new objects.
</summary>
<typeparam name="T">Type of objects to create.</typeparam>
<returns>Newly created object.</returns>
<seealso cref="T:HttpServer.Tools.ObjectPool`1"/>.
</member>
<member name="T:HttpServer.Messages.Parser.HttpParser">
<summary>
A HTTP parser using delegates to which parsing methods.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.HttpParser"/> class.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.GetBody">
<summary>
Parser method to copy all body bytes.
</summary>
<returns></returns>
<remarks>Needed since a TCP packet can contain multiple messages
after each other, or partial messages.</remarks>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.GetHeaderName">
<summary>
Try to find a header name.
</summary>
<returns></returns>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.GetHeaderValue">
<summary>
Get header values.
</summary>
<returns></returns>
<remarks>Will also look for multi header values and automatically merge them to one line.</remarks>
<exception cref="T:HttpServer.Messages.Parser.ParserException">Content length is not a number.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.OnBodyBytes(System.Byte[],System.Int32,System.Int32)">
<summary>
Toggle body bytes event.
</summary>
<param name="bytes"></param>
<param name="offset"></param>
<param name="count"></param>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.OnComplete">
<summary>
Raise the <see cref="E:HttpServer.Messages.Parser.HttpParser.MessageComplete"/> event, since we have successfully parsed a message and it's body.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.OnFirstLine(System.String[])">
<summary>
First message line.
</summary>
<param name="words">Will always contain three elements.</param>
<remarks>Used to raise the <see cref="E:HttpServer.Messages.Parser.HttpParser.RequestLineParsed"/> or <see cref="E:HttpServer.Messages.Parser.HttpParser.ResponseLineParsed"/> event
depending on the words in the array.</remarks>
<exception cref="T:HttpServer.BadRequestException"><c>BadRequestException</c>.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.Parse(System.Byte[],System.Int32,System.Int32)">
<summary>
Continue parsing a message
</summary>
<param name="buffer">Byte buffer containing bytes</param>
<param name="offset">Where to start the parsing</param>
<param name="count">Number of bytes to parse</param>
<returns>index where the parsing stopped.</returns>
<exception cref="T:HttpServer.Messages.Parser.ParserException">Parsing failed.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.ParseFirstLine">
<summary>
Parses the first line in a request/response.
</summary>
<returns><c>true</c> if first line is well formatted; otherwise <c>false</c>.</returns>
<exception cref="T:HttpServer.BadRequestException">Invalid request/response line.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.HttpParser.Reset">
<summary>
Reset parser to initial state.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.HttpParser.LineNumber">
<summary>
Gets or sets current line number.
</summary>
</member>
<member name="E:HttpServer.Messages.Parser.HttpParser.RequestLineParsed">
<summary>
The request line has been parsed.
</summary>
</member>
<member name="E:HttpServer.Messages.Parser.HttpParser.ResponseLineParsed">
<summary>
Response line has been parsed.
</summary>
</member>
<member name="E:HttpServer.Messages.Parser.HttpParser.HeaderParsed">
<summary>
Parsed a header.
</summary>
</member>
<member name="E:HttpServer.Messages.Parser.HttpParser.BodyBytesReceived">
<summary>
Received body bytes.
</summary>
</member>
<member name="E:HttpServer.Messages.Parser.HttpParser.MessageComplete">
<summary>
A message have been successfully parsed.
</summary>
</member>
<member name="T:HttpServer.Messages.Parser.HttpParser.ParserMethod">
<summary>
Used to be able to quickly swap parser method.
</summary>
<returns></returns>
</member>
<member name="T:HttpServer.IHttpFactory">
<summary>
Get or create components used in the web server framework
</summary>
<remarks>
</remarks>
</member>
<member name="M:HttpServer.IHttpFactory.Get``1(System.Object[])">
<summary>
Get or create a type.
</summary>
<typeparam name="T">Type to create</typeparam>
<returns>Created type.</returns>
<remarks>
Gets or creates types in the framework.
Check <see cref="T:HttpServer.HttpFactory"/> for more information on which
types the factory should contain.
</remarks>
</member>
<member name="T:HttpServer.HttpFactory">
<summary>
Used to create all key types in the HTTP server.
</summary>
<remarks>
<para>Should have factory methods at least for the following types:
<see cref="T:HttpServer.IRequest"/>, <see cref="T:HttpServer.IResponse"/>,
<see cref="T:HttpServer.Headers.HeaderFactory"/>, <see cref="T:HttpServer.Messages.MessageFactory"/>,
<see cref="T:HttpServer.HttpContext"/>, <see cref="T:HttpServer.SecureHttpContext"/>,
<see cref="T:HttpServer.IResponse"/>, <see cref="T:HttpServer.IRequest"/>,
<see cref="T:HttpServer.Messages.ResponseWriter"/>.
</para>
<para>Check the default implementations to see which constructor
parameters you will get.</para>
</remarks>
<example>
HttpFactory.Add(typeof(IRequest), (type, args) =&gt; new MyRequest((string)args[0]));
</example>
</member>
<member name="M:HttpServer.HttpFactory.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpFactory"/> class.
</summary>
</member>
<member name="M:HttpServer.HttpFactory.Add(System.Type,HttpServer.FactoryMethod)">
<summary>
Add a factory method for a type.
</summary>
<param name="type">Type to create</param>
<param name="handler">Method creating the type.</param>
</member>
<member name="M:HttpServer.HttpFactory.FindFactoryMethod(System.Type)">
<summary>
Used to
</summary>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:HttpServer.HttpFactory.OnSetupHeaderFactory(System.Type,System.Object[])">
<summary>
Setup our singleton.
</summary>
<param name="type"></param>
<param name="arguments"></param>
<returns></returns>
<remarks>
We want to use a singleton, but we also want to be able
to let the developer to setup his own header factory.
Therefore we use this method to create our own factory only if the user
have not specified one.
</remarks>
</member>
<member name="M:HttpServer.HttpFactory.OnSetupMessageFactory(System.Type,System.Object[])">
<summary>
Small method to create a message factory singleton and replace then default delegate method.
</summary>
<param name="type"></param>
<param name="arguments"></param>
<returns></returns>
</member>
<member name="M:HttpServer.HttpFactory.Get``1(System.Object[])">
<summary>
Create a type.
</summary>
<typeparam name="T">Type to create</typeparam>
<returns>Created type.</returns>
</member>
<member name="P:HttpServer.HttpFactory.Current">
<summary>
Gets http factory for the current listener.
</summary>
</member>
<member name="T:HttpServer.FactoryMethod">
<summary>
Delegate used to create a certain type
</summary>
<returns>Created type.</returns>
<remarks>
Method must never fail.
</remarks>
</member>
<member name="T:HttpServer.Headers.Parsers.ParserForAttribute">
<summary>
Used to define which headers a parse is for.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.ParserForAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.Parsers.ParserForAttribute"/> class.
</summary>
<param name="headerName">Name of the header.</param>
</member>
<member name="P:HttpServer.Headers.Parsers.ParserForAttribute.HeaderName">
<summary>
Gets name of header that this parser is for.
</summary>
</member>
<member name="T:HttpServer.Headers.Parsers.DateParser">
<summary>
Parses "Date" header.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.DateParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.Headers.AuthorizationHeader">
<summary>
Authorization response
</summary>
<remarks>
<para>
A user agent that wishes to authenticate itself with a server--
usually, but not necessarily, after receiving a 401 response--does
so by including an Authorization request-header field with the
request. The Authorization field value consists of credentials
containing the authentication information of the user agent for
the realm of the resource being requested.
</para>
<example>
Authorization = "Authorization" ":" credentials
</example>
<para>
HTTP access authentication is described in "HTTP Authentication:
Basic and Digest Access Authentication" [43]. If a request is
authenticated and a realm specified, the same credentials SHOULD
be valid for all other requests within this realm (assuming that
the authentication scheme itself does not require otherwise, such
as credentials that vary according to a challenge value or using
synchronized clocks).
When a shared cache (see section 13.7) receives a request
containing an Authorization field, it MUST NOT return the
corresponding response as a reply to any other request, unless one
of the following specific exceptions holds:
</para>
<list type="number">
<item>
If the response includes the "s-maxage" cache-control
directive, the cache MAY use that response in replying to a
subsequent request. But (if the specified maximum age has
passed) a proxy cache MUST first revalidate it with the origin
server, using the request-headers from the new request to allow
the origin server to authenticate the new request. (This is the
defined behavior for s-maxage.) If the response includes "s-
maxage=0", the proxy MUST always revalidate it before re-using
it.
</item><item>
If the response includes the "must-revalidate" cache-control
directive, the cache MAY use that response in replying to a
subsequent request. But if the response is stale, all caches
MUST first revalidate it with the origin server, using the
request-headers from the new request to allow the origin server
to authenticate the new request.
</item><item>
If the response includes the "public" cache-control directive,
it MAY be returned in reply to any subsequent request.
</item>
</list>
</remarks>
</member>
<member name="F:HttpServer.Headers.AuthorizationHeader.NAME">
<summary>
Name constant
</summary>
</member>
<member name="P:HttpServer.Headers.AuthorizationHeader.Data">
<summary>
Gets or sets authentication data.
</summary>
</member>
<member name="P:HttpServer.Headers.AuthorizationHeader.Scheme">
<summary>
Gets or sets authentication protocol.
</summary>
</member>
<member name="P:HttpServer.Headers.AuthorizationHeader.Name">
<summary>
Gets name of header.
</summary>
</member>
<member name="T:HttpServer.AuthenticationRequiredException">
<summary>
User needs to authenticate.
</summary>
<seealso cref="T:HttpServer.ForbiddenException"/>
<seealso cref="T:HttpServer.Authentication.AuthenticationProvider"/>
</member>
<member name="M:HttpServer.AuthenticationRequiredException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.AuthenticationRequiredException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Inner exception.</param>
</member>
<member name="T:HttpServer.Messages.Parser.FactoryResponseEventArgs">
<summary>
A response have been received.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.FactoryResponseEventArgs.#ctor(HttpServer.IResponse)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.FactoryResponseEventArgs"/> class.
</summary>
<param name="response">The response.</param>
</member>
<member name="P:HttpServer.Messages.Parser.FactoryResponseEventArgs.Response">
<summary>
Gets or sets response.
</summary>
</member>
<member name="T:HttpServer.Messages.MessageFactoryContext">
<summary>
Creates a single message for one of the end points.
</summary>
<remarks>
The factory is
</remarks>
</member>
<member name="M:HttpServer.Messages.MessageFactoryContext.#ctor(HttpServer.Messages.MessageFactory,HttpServer.Headers.HeaderFactory,HttpServer.Messages.Parser.HttpParser)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.MessageFactoryContext"/> class.
</summary>
<param name="msgFactory">The MSG factory.</param>
<param name="factory">The factory.</param>
<param name="parser">The parser.</param>
</member>
<member name="M:HttpServer.Messages.MessageFactoryContext.Dispose">
<summary>
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
</summary>
<filterpriority>2</filterpriority>
</member>
<member name="M:HttpServer.Messages.MessageFactoryContext.OnHeader(System.Object,HttpServer.Messages.Parser.HeaderEventArgs)">
<summary>
Received a header from parser
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:HttpServer.Messages.MessageFactoryContext.Parse(System.Byte[],System.Int32,System.Int32)">
<summary>
Will continue the parsing until nothing more can be parsed.
</summary>
<param name="buffer">buffer to parse</param>
<param name="offset">where to start in the buffer</param>
<param name="length">number of bytes to process.</param>
<returns>Position where parser stopped parsing.</returns>
<exception cref="T:HttpServer.Messages.Parser.ParserException">Parsing failed.</exception>
</member>
<member name="M:HttpServer.Messages.MessageFactoryContext.Reset">
<summary>
Reset parser.
</summary>
<remarks>
Something failed, reset parser so it can start on a new request.
</remarks>
</member>
<member name="E:HttpServer.Messages.MessageFactoryContext.RequestCompleted">
<summary>
A request have been successfully parsed.
</summary>
</member>
<member name="E:HttpServer.Messages.MessageFactoryContext.ResponseCompleted">
<summary>
A response have been successfully parsed.
</summary>
</member>
<member name="E:HttpServer.Messages.MessageFactoryContext.ContinueResponseRequested">
<summary>
Client asks if he may continue.
</summary>
<remarks>
If the body is too large or anything like that you should respond <see cref="F:System.Net.HttpStatusCode.ExpectationFailed"/>.
</remarks>
</member>
<member name="T:HttpServer.Messages.ContinueEventArgs">
<summary>
Used to notify about 100-continue header.
</summary>
</member>
<member name="M:HttpServer.Messages.ContinueEventArgs.#ctor(HttpServer.IRequest)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.ContinueEventArgs"/> class.
</summary>
<param name="request">request that want to continue.</param>
</member>
<member name="P:HttpServer.Messages.ContinueEventArgs.Request">
<summary>
Gets request that want to continue
</summary>
</member>
<member name="T:HttpServer.Logging.LogFilter">
<summary>
Default log filter implementation.
</summary>
</member>
<member name="T:HttpServer.Logging.ILogFilter">
<summary>
Determines which classes can log
</summary>
</member>
<member name="M:HttpServer.Logging.ILogFilter.CanLog(HttpServer.Logging.LogLevel,System.Type)">
<summary>
Checks if the specified type can send
log entries at the specified level.
</summary>
<param name="level">Log level</param>
<param name="type">Type that want to write a log entry.</param>
<returns><c>true</c> if logging is allowed; otherwise <c>false</c>.</returns>
</member>
<member name="M:HttpServer.Logging.LogFilter.AddNameSpace(System.String,HttpServer.Logging.LogLevel)">
<summary>
Add a name space filter.
</summary>
<param name="ns">Name space to add filter for.</param>
<param name="level">Minimum log level required.</param>
<example>
<code>
// Parsing can only add error and fatal messages
AddNamespace("SipSharp.Messages.Headers.Parsers", LogLevel.Error);
AddType(typeof(SipParser), LogLevel.Error);
// Transport layer can only log warnings, errors and fatal messages
AddNamespace("SipSharp.Transports.*", LogLevel.Warning);
</code>
</example>
</member>
<member name="M:HttpServer.Logging.LogFilter.AddStandardRules">
<summary>
Used to specify standard filter rules
</summary>
<remarks>
Parser can only display errors. Transports only warnings.
</remarks>
</member>
<member name="M:HttpServer.Logging.LogFilter.AddType(System.Type,HttpServer.Logging.LogLevel)">
<summary>
Add filter for a type
</summary>
<param name="type">Type to add filter for.</param>
<param name="level">Minimum log level required.</param>
<example>
<code>
// Parsing can only add error and fatal messages
AddNamespace("SipSharp.Messages.Headers.Parsers", LogLevel.Error);
AddType(typeof(SipParser), LogLevel.Error);
// Transport layer can only log warnings, errors and fatal messages
AddNamespace("SipSharp.Transports.*", LogLevel.Warning);
</code>
</example>
</member>
<member name="M:HttpServer.Logging.LogFilter.AddType(System.String,HttpServer.Logging.LogLevel)">
<summary>
Add filter for a type
</summary>
<param name="typeStr">Type to add filter for.</param>
<param name="level">Minimum log level required.</param>
<example>
<code>
// Parsing can only add error and fatal messages
AddNamespace("SipSharp.Messages.Headers.Parsers", LogLevel.Error);
AddType("SipSharp.Messages.MessageFactory", LogLevel.Error);
// Transport layer can only log warnings, errors and fatal messages
AddNamespace("SipSharp.Transports.*", LogLevel.Warning);
</code>
</example>
<exception cref="T:System.ArgumentException">Type could not be identified.</exception>
</member>
<member name="M:HttpServer.Logging.LogFilter.HttpServer#Logging#ILogFilter#CanLog(HttpServer.Logging.LogLevel,System.Type)">
<summary>
Checks if the specified type can send
log entries at the specified level.
</summary>
<param name="level">Log level</param>
<param name="type">Type that want to write a log entry.</param>
<returns><c>true</c> if logging is allowed; otherwise <c>false</c>.</returns>
</member>
<member name="M:HttpServer.Logging.LogFilter.NamespaceFilter.#ctor(System.String,HttpServer.Logging.LogLevel)">
<exception cref="T:System.ArgumentException">No filters = everything logged. <see cref="T:HttpServer.Logging.NullLogFactory"/> = no logs. Don't use a rule with '*' or '.*'</exception>
</member>
<member name="P:HttpServer.Logging.LogFilter.NamespaceFilter.IsWildcard">
<summary>
User have specified a wild card filter.
</summary>
<remarks>
Wild card filters are used to log a name space and
all it's children name spaces.
</remarks>
</member>
<member name="T:HttpServer.ProcessingResult">
<summary>
Result of processing.
</summary>
</member>
<member name="F:HttpServer.ProcessingResult.Continue">
<summary>
Continue with the next handler
</summary>
</member>
<member name="F:HttpServer.ProcessingResult.SendResponse">
<summary>
No more handlers can process the request.
</summary>
<remarks>
The server will process the response object and
generate a HTTP response from it.
</remarks>
</member>
<member name="F:HttpServer.ProcessingResult.Abort">
<summary>
Response have been sent back by the handler.
</summary>
<remarks>
This option should only be used if you are streaming
something or sending back a custom result. The server will
not process the response object or send anything back
to the client.
</remarks>
</member>
<member name="T:HttpServer.Headers.StringHeader">
<summary>
Used to store all headers that that aren't recognized.
</summary>
</member>
<member name="M:HttpServer.Headers.StringHeader.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.StringHeader"/> class.
</summary>
<param name="name">The name.</param>
<param name="value">The value.</param>
</member>
<member name="P:HttpServer.Headers.StringHeader.Value">
<summary>
Gets or sets value
</summary>
</member>
<member name="P:HttpServer.Headers.StringHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.Headers.Parsers.ConnectionParser">
<summary>
Parses <see cref="T:HttpServer.Headers.ConnectionHeader"/>.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.ConnectionParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.IParameterCollection">
<summary>
Collection of parameters
</summary>
</member>
<member name="M:HttpServer.IParameterCollection.Get(System.String)">
<summary>
Get a parameter.
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:HttpServer.IParameterCollection.Add(System.String,System.String)">
<summary>
Add a query string parameter.
</summary>
<param name="name">Parameter name</param>
<param name="value">Value</param>
</member>
<member name="M:HttpServer.IParameterCollection.Exists(System.String)">
<summary>
Checks if the specified parameter exists
</summary>
<param name="name">Parameter name.</param>
<returns><c>true</c> if found; otherwise <c>false</c>;</returns>
</member>
<member name="P:HttpServer.IParameterCollection.Count">
<summary>
Gets number of parameters.
</summary>
</member>
<member name="P:HttpServer.IParameterCollection.Item(System.String)">
<summary>
Gets last value of an parameter.
</summary>
<param name="name">Parameter name</param>
<returns>String if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.IParameter">
<summary>
Parameter in <see cref="T:HttpServer.IParameterCollection"/>
</summary>
</member>
<member name="P:HttpServer.IParameter.Value">
<summary>
Gets *last* value.
</summary>
<remarks>
Parameters can have multiple values. This property will always get the last value in the list.
</remarks>
<value>String if any value exist; otherwise <c>null</c>.</value>
</member>
<member name="P:HttpServer.IParameter.Name">
<summary>
Gets or sets name.
</summary>
</member>
<member name="P:HttpServer.IParameter.Values">
<summary>
Gets a list of all values.
</summary>
</member>
<member name="T:HttpServer.Parameter">
<summary>
A parameter in <see cref="T:HttpServer.IParameterCollection"/>.
</summary>
</member>
<member name="M:HttpServer.Parameter.System#Collections#Generic#IEnumerable{System#String}#GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.Parameter.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="P:HttpServer.Parameter.Value">
<summary>
Gets last value.
</summary>
<remarks>
Parameters can have multiple values. This property will always get the last value in the list.
</remarks>
<value>String if any value exist; otherwise <c>null</c>.</value>
</member>
<member name="P:HttpServer.Parameter.Name">
<summary>
Gets or sets name.
</summary>
</member>
<member name="P:HttpServer.Parameter.Values">
<summary>
Gets a list of all values.
</summary>
</member>
<member name="T:HttpServer.Messages.Parser.RequestLineEventArgs">
<summary>
Used when the request line have been successfully parsed.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.RequestLineEventArgs.#ctor(System.String,System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.RequestLineEventArgs"/> class.
</summary>
<param name="method">The HTTP method.</param>
<param name="uriPath">The URI path.</param>
<param name="version">The HTTP version.</param>
</member>
<member name="M:HttpServer.Messages.Parser.RequestLineEventArgs.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.RequestLineEventArgs"/> class.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.RequestLineEventArgs.Method">
<summary>
Gets or sets HTTP method.
</summary>
<remarks>
Should be one of the methods declared in <see cref="P:HttpServer.Messages.Parser.RequestLineEventArgs.Method"/>.
</remarks>
</member>
<member name="P:HttpServer.Messages.Parser.RequestLineEventArgs.UriPath">
<summary>
Gets or sets requested URI path.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.RequestLineEventArgs.Version">
<summary>
Gets or sets the version of the SIP protocol that the client want to use.
</summary>
</member>
<member name="T:HttpServer.Headers.ContentTypeHeader">
<summary>
Content-type
</summary>
</member>
<member name="F:HttpServer.Headers.ContentTypeHeader.NAME">
<summary>
Header name.
</summary>
</member>
<member name="M:HttpServer.Headers.ContentTypeHeader.#ctor(System.String,HttpServer.Headers.HeaderParameterCollection)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.ContentTypeHeader"/> class.
</summary>
<param name="contentType">Type of the content.</param>
<param name="parameterCollection">Value parameters.</param>
</member>
<member name="M:HttpServer.Headers.ContentTypeHeader.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.ContentTypeHeader"/> class.
</summary>
<param name="contentType">Type of the content.</param>
</member>
<member name="M:HttpServer.Headers.ContentTypeHeader.ToString">
<summary>
Returns data formatted as a HTTP header value.
</summary>
<returns>
A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</returns>
</member>
<member name="P:HttpServer.Headers.ContentTypeHeader.Parameters">
<summary>
Gets all parameters.
</summary>
</member>
<member name="P:HttpServer.Headers.ContentTypeHeader.Value">
<summary>
Gets content type.
</summary>
</member>
<member name="P:HttpServer.Headers.ContentTypeHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.ForbiddenException">
<summary>
Requested resource may not be accessed.
</summary>
<remarks>
Normally thrown after an authentication attempt have failed too many times.
</remarks>
<seealso cref="T:HttpServer.AuthenticationRequiredException"/>
</member>
<member name="M:HttpServer.ForbiddenException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ForbiddenException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.ForbiddenException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ForbiddenException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Inner exception.</param>
</member>
<member name="T:HttpServer.BodyDecoders.Mono.HttpMultipart">
<summary>
Stream-based multipart handling.
In this incarnation deals with an HttpInputStream as we are now using
IntPtr-based streams instead of byte []. In the future, we will also
send uploads above a certain threshold into the disk (to implement
limit-less HttpInputFiles).
</summary>
<remarks>
Taken from HttpRequest in mono (http://www.mono-project.com)
</remarks>
</member>
<member name="T:HttpServer.Transports.ClientCertificate">
<summary>
Client X.509 certificate, X.509 chain, and any SSL policy errors encountered
during the SSL stream creation
</summary>
</member>
<member name="M:HttpServer.Transports.ClientCertificate.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Transports.ClientCertificate"/> class.
</summary>
<param name="certificate">The certificate.</param>
<param name="chain">Client security certificate chain.</param>
<param name="sslPolicyErrors">Any SSL policy errors encountered during the SSL stream creation.</param>
</member>
<member name="P:HttpServer.Transports.ClientCertificate.Certificate">
<summary>
Client security certificate
</summary>
</member>
<member name="P:HttpServer.Transports.ClientCertificate.Chain">
<summary>
Client security certificate chain
</summary>
</member>
<member name="P:HttpServer.Transports.ClientCertificate.SslPolicyErrors">
<summary>
Any SSL policy errors encountered during the SSL stream creation
</summary>
</member>
<member name="T:HttpServer.Tools.Properties.EmitHelper">
<summary>
Credits and description: http://theinstructionlimit.com/?p=76
</summary>
<remarks>
Converted to .Net 2.0
</remarks>
</member>
<member name="T:HttpServer.Sessions.Session">
<summary>
Session in the system
</summary>
</member>
<member name="P:HttpServer.Sessions.Session.SessionId">
<summary>
Gets or sets session id.
</summary>
</member>
<member name="T:HttpServer.Logging.NullLogFactory">
<summary>
Factory creating null logger.
</summary>
</member>
<member name="M:HttpServer.Logging.NullLogFactory.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Logging.NullLogFactory"/> class.
</summary>
</member>
<member name="M:HttpServer.Logging.NullLogFactory.CreateLogger(System.Type)">
<summary>
Create a new logger.
</summary>
<param name="type">Type that requested a logger.</param>
<returns>Logger for the specified type;</returns>
<remarks>
MUST ALWAYS return a logger. Return <see cref="T:HttpServer.Logging.NullLogWriter"/> if no logging
should be used.
</remarks>
</member>
<member name="P:HttpServer.Logging.NullLogFactory.Instance">
<summary>
Logger instance.
</summary>
</member>
<member name="T:HttpServer.Resources.ResourceProvider">
<summary>
Provides resources.
</summary>
</member>
<member name="T:HttpServer.Resources.IResourceProvider">
<summary>
Used to access resources.
</summary>
</member>
<member name="M:HttpServer.Resources.IResourceProvider.Add(HttpServer.Resources.IResourceLoader)">
<summary>
Add a new resource loader.
</summary>
<param name="loader">Provider to add.</param>
<exception cref="T:System.InvalidOperationException">Manager have been started.</exception>
</member>
<member name="M:HttpServer.Resources.IResourceProvider.Exists(System.String)">
<summary>
Check if a resource exists.
</summary>
<param name="uriPath">Uri to check</param>
<returns><c>true</c> if found; otherwise <c>false</c>.</returns>
<example>
<code>
if (manager.Exists("/views/user/view.haml"))
return true
</code>
</example>
</member>
<member name="M:HttpServer.Resources.IResourceProvider.Get(System.String)">
<summary>
Get a resource.
</summary>
<param name="uri">Uri path to resource.</param>
<returns>Resource if found; otherwise <c>null</c>.</returns>
<example>
<code>
Resource resource = manager.Get("/views/user/view.haml");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.IResourceProvider.Start">
<summary>
Start manager.
</summary>
</member>
<member name="P:HttpServer.Resources.IResourceProvider.Count">
<summary>
Gets number of resource providers
</summary>
</member>
<member name="M:HttpServer.Resources.ResourceProvider.Find(System.String)">
<summary>
Get all view names from a folder.
</summary>
<param name="path">Path to find views in.</param>
<returns>A collection of view names (without path).</returns>
</member>
<member name="M:HttpServer.Resources.ResourceProvider.Add(HttpServer.Resources.IResourceLoader)">
<summary>
Add a new resource loader.
</summary>
<param name="loader">Provider to add.</param>
<exception cref="T:System.InvalidOperationException">Manager have been started.</exception>
</member>
<member name="M:HttpServer.Resources.ResourceProvider.Start">
<summary>
Start manager.
</summary>
</member>
<member name="M:HttpServer.Resources.ResourceProvider.Exists(System.String)">
<summary>
Check if a resource exists.
</summary>
<param name="uriPath">Uri to check</param>
<returns><c>true</c> if found; otherwise <c>false</c>.</returns>
<example>
<code>
if (manager.Exists("/views/user/view.haml"))
return true
</code>
</example>
</member>
<member name="M:HttpServer.Resources.ResourceProvider.Get(System.String)">
<summary>
Get a resource.
</summary>
<param name="uri">Uri path to resource.</param>
<returns>Resource if found; otherwise <c>null</c>.</returns>
<example>
<code>
Resource resource = manager.Get("/views/user/view.haml");
</code>
</example>
</member>
<member name="P:HttpServer.Resources.ResourceProvider.Count">
<summary>
Gets number of resource providers
</summary>
</member>
<member name="T:HttpServer.Resources.EmbeddedResourceLoader">
<summary>
Loads resources that are embedded in assemblies.
</summary>
<remarks>
No locks used internally since all mappings are loaded during start up.
</remarks>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Resources.EmbeddedResourceLoader"/> class.
</summary>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.#ctor(System.String,System.Reflection.Assembly,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Resources.EmbeddedResourceLoader"/> class.
</summary>
<param name="path">Path (Uri) requested by clients</param>
<param name="assembly">Assembly that the resources exist in</param>
<param name="nameSpace">Name space that the resources exist in</param>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.Add(System.String,System.Reflection.Assembly,System.String,System.String)">
<summary>
Add a specific resource.
</summary>
<param name="path">Path (Uri) requested by clients</param>
<param name="assembly">Assembly that the resources exist in</param>
<param name="rootNameSpace">Name space to root folder under (all name spaces below the specified one are considered as folders)</param>
<param name="fullResourceName">Name space and name of resource.</param>
<example>
<code>
Add("/", Assembly.GetExecutingAssembly(), "MyApplication.Files", "Myapplication.Files.Images.MyImage.png");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.AddFile(System.String,System.Reflection.Assembly,System.String)">
<summary>
Add resources.
</summary>
<param name="path">Path (Uri) requested by clients</param>
<param name="assembly">Assembly that the resources exist in</param>
<param name="resourceName">Name of resource, including name space.</param>
<returns><c>true</c> if file was found (and has not previously been added); otherwise <c>false</c>.</returns>
<remarks>
</remarks>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.AddFilesInFolder(System.String,System.Reflection.Assembly,System.String)">
<summary>
Add resources in a specific path (will not work with sub folders)
</summary>
<param name="path">Path (Uri) requested by clients</param>
<param name="assembly">Assembly that the resources exist in</param>
<param name="rootNameSpace">Name space to root folder under which all name spaces exists in,</param>
<returns><c>true</c> if any files was found; otherwise <c>false</c>.</returns>
<remarks>
<para>
Adds all views in the specified folder. Sub folders are not supported since it's hard to determine
with parts are the path and witch parts are the filename. Use <see cref="M:HttpServer.Resources.EmbeddedResourceLoader.AddPath(System.String,System.Reflection.Assembly,System.String)"/> to get support
for sub folders.
</para>
</remarks>
<example>
<code>
Add("/user/", typeof(MyController).Assembly, "YourProject.Users.Views");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.AddPath(System.String,System.Reflection.Assembly,System.String)">
<summary>
Add resources in a folder and it's sub folder
</summary>
<param name="path"></param>
<param name="assembly"></param>
<param name="rootNameSpace"></param>
<remarks>
<para>This method is not going to map files but keep the mapping and
try to look up views every time they are requested. This is the method
to use to add a resource folder that has sub folders.
</para>
</remarks>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.LoadMappingFromPath(System.String)">
<summary>
Tries to load file by using previously added paths.
</summary>
<param name="uriPath">Uri path including file name</param>
<returns></returns>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.Exists(System.String)">
<summary>
Checks if a resource exists in the specified directory
</summary>
<param name="uriPath">Uri path to resource</param>
<returns><c>true</c> if resource was found; otherwise <c>false</c>.</returns>
<example>
<code>
if (resources.Exists("/files/user/user.png"))
Debug.WriteLine("Resource exists.");
</code>
</example>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.Get(System.String)">
<summary>
Load a resource.
</summary>
<param name="uri">Uri of resource.</param>
<returns>Resource if found and loaded; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.Find(System.String,System.Collections.Generic.List{System.String})">
<summary>
Find all views in a folder/path.
</summary>
<param name="path">Uri path</param>
<param name="viewNames">Collection to add all view names to.</param>
</member>
<member name="M:HttpServer.Resources.EmbeddedResourceLoader.LoadFromPathMappings(System.String)">
<summary>
Loads all files in a resource directory
</summary>
<param name="path"></param>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.Mapping.Assembly">
<summary>
Gets or sets assembly that the resource exists in.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.Mapping.FileName">
<summary>
Gets or sets resource name.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.Mapping.FullResourceName">
<summary>
Gets or sets full name space path to resource.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.Mapping.TypeExtension">
<summary>
Gets or sets if this file is for a certain content type.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.Mapping.UriPath">
<summary>
Gets or sets full "virtual" Uri path, excluding file name.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.PathMapping.Assembly">
<summary>
Gets or sets assembly
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.PathMapping.RootNameSpace">
<summary>
Gets or sets name space root.
</summary>
</member>
<member name="P:HttpServer.Resources.EmbeddedResourceLoader.PathMapping.UriPath">
<summary>
Gets or sets uri path.
</summary>
</member>
<member name="T:HttpServer.Messages.RequestCookieCollection">
<summary>
A list of request cookies.
</summary>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.#ctor(System.String)">
<summary>
Let's copy all the cookies.
</summary>
<param name="cookies">value from cookie header.</param>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.RequestCookieCollection"/> class.
</summary>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.Add(HttpServer.Messages.RequestCookie)">
<summary>
Adds a cookie in the collection.
</summary>
<param name="cookie">cookie to add</param>
<exception cref="T:System.ArgumentNullException">cookie is <c>null</c></exception>
<exception cref="T:System.ArgumentException">Name must be specified.</exception>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.Clear">
<summary>
Remove all cookies.
</summary>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.Remove(System.String)">
<summary>
Remove a cookie from the collection.
</summary>
<param name="cookieName">Name of cookie.</param>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.GetEnumerator">
<summary>
Gets a collection enumerator on the cookie list.
</summary>
<returns>collection enumerator</returns>
</member>
<member name="M:HttpServer.Messages.RequestCookieCollection.System#Collections#Generic#IEnumerable{HttpServer#Messages#RequestCookie}#GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"></see> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="P:HttpServer.Messages.RequestCookieCollection.Count">
<summary>
Gets the count of cookies in the collection.
</summary>
</member>
<member name="P:HttpServer.Messages.RequestCookieCollection.Item(System.String)">
<summary>
Gets the cookie of a given identifier (<c>null</c> if not existing).
</summary>
</member>
<member name="T:HttpServer.Headers.HeaderCollection">
<summary>
Collection of headers.
</summary>
</member>
<member name="T:HttpServer.Headers.IHeaderCollection">
<summary>
Collection of headers.
</summary>
</member>
<member name="P:HttpServer.Headers.IHeaderCollection.Item(System.String)">
<summary>
Gets a header
</summary>
<param name="name">header name.</param>
<returns>header if found; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.#ctor(HttpServer.Headers.HeaderFactory)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.HeaderCollection"/> class.
</summary>
<param name="factory">Factory used to created headers.</param>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.Add(HttpServer.Headers.IHeader)">
<summary>
Adds a header
</summary>
<remarks>
Will replace any existing header with the same name.
</remarks>
<param name="header">header to add</param>
<exception cref="T:System.ArgumentNullException"><c>header</c> is <c>null</c>.</exception>
<exception cref="T:System.ArgumentException">Header name cannot be <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.Add(System.String,System.String)">
<summary>
Add a header.
</summary>
<param name="name">Header name</param>
<param name="value">Header value</param>
<remarks>
Will try to parse the header and create a <see cref="T:HttpServer.Headers.IHeader"/> object.
</remarks>
<exception cref="T:System.FormatException">Header value is not correctly formatted.</exception>
<exception cref="T:System.ArgumentNullException"><c>name</c> or <c>value</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.Add(System.String,HttpServer.Headers.IHeader)">
<summary>
Add a header.
</summary>
<param name="name">Header name</param>
<param name="value">Header value</param>
<remarks>
Will try to parse the header and create a <see cref="T:HttpServer.Headers.IHeader"/> object.
</remarks>
<exception cref="T:System.ArgumentNullException"><c>name</c> or <c>value</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.Get``1(System.String)">
<summary>
Get a header
</summary>
<typeparam name="T">Type that it should be cast to</typeparam>
<param name="headerName">Name of header</param>
<returns>Header if found and casted properly; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.Headers.HeaderCollection.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="P:HttpServer.Headers.HeaderCollection.Item(System.String)">
<summary>
Gets a header
</summary>
<param name="name">header name.</param>
<returns>header if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.Headers.DateHeader">
<summary>
Header for "Date" and "If-Modified-Since"
</summary>
<remarks>
<para>
The field value is an HTTP-date, as described in section 3.3.1 in RFC2616;
it MUST be sent in RFC 1123 [8]-date format. An example is
<example>
Date: Tue, 15 Nov 1994 08:12:31 GMT
</example>
</para><para>Origin servers MUST include a Date header field in all
responses, except in these cases:
<list type="number">
<item>If the response status code is 100 (Continue) or 101 (Switching
Protocols), the response MAY include a Date header field, at the server's
option.
</item><item>If the response status code conveys a server error, e.g. 500
(Internal Server Error) or 503 (Service Unavailable), and it is inconvenient
or impossible to generate a valid Date.
</item><item>If the server does not have a clock that can provide a
reasonable approximation of the current time, its responses MUST NOT include
a Date header field. In this case, the rules in section 14.18.1 in RFC2616
MUST be followed.
</item>
</list>
</para><para>A received message that does not have a Date header field MUST
be assigned one by the recipient if the message will be cached by that
recipient or gatewayed via a protocol which requires a Date. An HTTP
implementation without a clock MUST NOT cache responses without revalidating
them on every use. An HTTP cache, especially a shared cache, SHOULD use a
mechanism, such as NTP [28], to synchronize its clock with a reliable
external standard.
</para><para>Clients SHOULD only send a Date header field in messages that
include an entity-body, as in the case of the PUT and POST requests, and
even then it is optional. A client without a clock MUST NOT send a Date
header field in a request.
</para><para>The HTTP-date sent in a Date header SHOULD NOT represent a date
and time subsequent to the generation of the message. It SHOULD represent
the best available approximation of the date and time of message generation,
unless the implementation has no means of generating a reasonably accurate
date and time. In theory, the date ought to represent the moment just before
the entity is generated. In practice, the date can be generated at any time
during the message origination without affecting its semantic value.
</para>
</remarks>
</member>
<member name="F:HttpServer.Headers.DateHeader.NAME">
<summary>
Header name
</summary>
</member>
<member name="M:HttpServer.Headers.DateHeader.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.DateHeader"/> class.
</summary>
<param name="name">Header name.</param>
<exception cref="T:System.ArgumentException">Name must not be empty.</exception>
</member>
<member name="M:HttpServer.Headers.DateHeader.#ctor(System.String,System.DateTime)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.DateHeader"/> class.
</summary>
<param name="name">Header name.</param>
<param name="value">Universal time.</param>
</member>
<member name="M:HttpServer.Headers.DateHeader.ToString">
<summary>
Returns data formatted as a HTTP header value.
</summary>
<returns>
A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</returns>
</member>
<member name="P:HttpServer.Headers.DateHeader.Value">
<summary>
Gets or sets date time.
</summary>
<value>Should be in UTC.</value>
</member>
<member name="P:HttpServer.Headers.DateHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.Tools.Properties.ICachedType">
<summary>
Type cached for fast property value modifications.
</summary>
</member>
<member name="M:HttpServer.Tools.Properties.ICachedType.GetValue(System.Object,System.String)">
<summary>
Get a property value.
</summary>
<param name="instance">Instance to get value from.</param>
<param name="propertyName">Name of property.</param>
<returns>Property value.</returns>
</member>
<member name="M:HttpServer.Tools.Properties.ICachedType.SetConvertedValue(System.Object,System.String,System.Object)">
<summary>
Assign a value, try to convert it if it's not the same type as the property type.
</summary>
<param name="instance">Object containing the property</param>
<param name="propertyName">Name of property</param>
<param name="value">Value to convert and assign</param>
<exception cref="T:System.InvalidOperationException">Failed to find property.</exception>
<exception cref="T:System.InvalidCastException">Could not convert value type to property type.</exception>
</member>
<member name="M:HttpServer.Tools.Properties.ICachedType.SetValue(System.Object,System.String,System.Object)">
<summary>
Assign value to a property
</summary>
<param name="instance">Object containing the property</param>
<param name="propertyName">Name of property</param>
<param name="value">Value to assign, must be of the same type as the property.</param>
<exception cref="T:System.InvalidOperationException">Failed to find property.</exception>
</member>
<member name="T:HttpServer.Tools.Properties.CachedType">
<summary>
Used to cache property information
</summary>
</member>
<member name="M:HttpServer.Tools.Properties.CachedType.GetProperty(System.String)">
<summary>
Gets the property.
</summary>
<param name="name">The name.</param>
<returns></returns>
<exception cref="T:System.InvalidOperationException">Failed to find property.</exception>
</member>
<member name="M:HttpServer.Tools.Properties.CachedType.ToDate(System.Type,System.Object)">
<exception cref="T:System.InvalidCastException"><c>InvalidCastException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.Properties.CachedType.GetValue(System.Object,System.String)">
<summary>
Get a property value.
</summary>
<param name="instance">Instance to get value from.</param>
<param name="propertyName">Name of property.</param>
<returns>Property value.</returns>
</member>
<member name="M:HttpServer.Tools.Properties.CachedType.SetConvertedValue(System.Object,System.String,System.Object)">
<summary>
Assign a value, try to convert it if it's not the same type as the property type.
</summary>
<param name="instance">Object containing the property</param>
<param name="propertyName">Name of property</param>
<param name="value">Value to convert and assign</param>
<exception cref="T:System.InvalidOperationException">Failed to find property.</exception>
<exception cref="T:System.InvalidCastException">Could not convert value type to property type.</exception>
</member>
<member name="M:HttpServer.Tools.Properties.CachedType.SetValue(System.Object,System.String,System.Object)">
<summary>
Assign value to a property
</summary>
<param name="instance">Object containing the property</param>
<param name="propertyName">Name of property</param>
<param name="value">Value to assign, must be of the same type as the property.</param>
<exception cref="T:System.InvalidOperationException">Failed to find property.</exception>
</member>
<member name="P:HttpServer.Tools.Properties.CachedType.CachedProperty.MemberInfo">
<summary>
Gets or sets member info
</summary>
</member>
<member name="P:HttpServer.Tools.Properties.CachedType.CachedProperty.MemberType">
<summary>
Gets or sets member type
</summary>
</member>
<member name="T:HttpServer.Tools.ITextReader">
<summary>
Base interface to read string tokens from different sources.
</summary>
</member>
<member name="M:HttpServer.Tools.ITextReader.Assign(System.Object,System.Int32,System.Int32)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process.</param>
<param name="offset">Where to start process buffer</param>
<param name="count">Buffer length</param>
</member>
<member name="M:HttpServer.Tools.ITextReader.Assign(System.Object)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process</param>
</member>
<member name="M:HttpServer.Tools.ITextReader.Consume">
<summary>
Consume current character.
</summary>
</member>
<member name="M:HttpServer.Tools.ITextReader.Consume(System.Char[])">
<summary>
Consume specified characters
</summary>
<param name="chars">One or more characters.</param>
</member>
<member name="M:HttpServer.Tools.ITextReader.ConsumeWhiteSpaces">
<summary>
Consumes horizontal white spaces (space and tab).
</summary>
</member>
<member name="M:HttpServer.Tools.ITextReader.ConsumeWhiteSpaces(System.Char)">
<summary>
Consume horizontal white spaces and the specified character.
</summary>
<param name="extraCharacter">Extra character to consume</param>
</member>
<member name="M:HttpServer.Tools.ITextReader.Contains(System.Char)">
<summary>
Checks if one of the remaining bytes are a specified character.
</summary>
<param name="ch">Character to find.</param>
<returns><c>true</c> if found; otherwise <c>false</c>.</returns>
</member>
<member name="M:HttpServer.Tools.ITextReader.Read">
<summary>
Read a character.
</summary>
<returns>Character if not EOF; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadLine">
<summary>
Get a text line.
</summary>
<returns></returns>
<remarks>Will merge multiline headers.</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadQuotedString">
<summary>
Read quoted string
</summary>
<returns>string if current character (in buffer) is a quote; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadToEnd(System.String)">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<remarks>
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadToEnd">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<remarks>
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadToEnd(System.Char)">
<summary>
Read to end of buffer, or until specified delimiter is found.
</summary>
<param name="delimiter">Delimiter to find.</param>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<remarks>
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadUntil(System.Char)">
<summary>
Will read until specified delimiter is found.
</summary>
<param name="delimiter">Character to stop at.</param>
<returns>A string if the delimiter was found; otherwise <c>null</c>.</returns>
<remarks>
Will trim away spaces and tabs from the end.
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadUntil(System.String)">
<summary>
Read until one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>A string if one of the delimiters was found; otherwise <c>null</c>.</returns>
<remarks>
Will trim away spaces and tabs from the end.
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.ITextReader.ReadWord">
<summary>
Read until a horizontal white space occurs.
</summary>
<returns>A string if a white space was found; otherwise <c>null</c>.</returns>
</member>
<member name="P:HttpServer.Tools.ITextReader.Current">
<summary>
Gets current character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.ITextReader.EOF">
<summary>
Gets if end of buffer have been reached
</summary>
</member>
<member name="P:HttpServer.Tools.ITextReader.HasMore">
<summary>
Gets if more bytes can be processed.
</summary>
</member>
<member name="P:HttpServer.Tools.ITextReader.Index">
<summary>
Gets or sets current position in buffer.
</summary>
<remarks>
THINK before you manually change the position since it can blow up
the whole parsing in your face.
</remarks>
</member>
<member name="P:HttpServer.Tools.ITextReader.Length">
<summary>
Gets total length of buffer.
</summary>
</member>
<member name="P:HttpServer.Tools.ITextReader.LineNumber">
<summary>
Gets or sets line number.
</summary>
</member>
<member name="P:HttpServer.Tools.ITextReader.Peek">
<summary>
Gets next character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.ITextReader.RemainingLength">
<summary>
Gets number of bytes left.
</summary>
</member>
<member name="T:HttpServer.Logging.LogFactory">
<summary>
Factory is used to create new logs in the system.
</summary>
</member>
<member name="M:HttpServer.Logging.LogFactory.Assign(HttpServer.Logging.ILogFactory)">
<summary>
Assigns log factory being used.
</summary>
<param name="logFactory">The log factory.</param>
<exception cref="T:System.InvalidOperationException">A factory have already been assigned.</exception>
</member>
<member name="M:HttpServer.Logging.LogFactory.CreateLogger(System.Type)">
<summary>
Create a new logger.
</summary>
<param name="type">Type that requested a logger.</param>
<returns>Logger for the specified type;</returns>
</member>
<member name="T:HttpServer.ComponentAttribute">
<summary>
Component that should be registered in the container.
</summary>
<remarks>
Register using all interfaces that is specified in this assembly.
</remarks>
</member>
<member name="T:HttpServer.Authentication.IAuthenticationProvider">
<summary>
Used to authenticate users
</summary>
<remarks>
Authentication is requested by throwing
</remarks>
</member>
<member name="T:HttpServer.Messages.Request">
<summary>
Request implementation.
</summary>
</member>
<member name="M:HttpServer.Messages.Request.#ctor(System.String,System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Request"/> class.
</summary>
<param name="method">The method.</param>
<param name="path">The path.</param>
<param name="version">The version.</param>
</member>
<member name="M:HttpServer.Messages.Request.Get``1(System.String)">
<summary>
Get a header
</summary>
<typeparam name="T">Type that it should be cast to</typeparam>
<param name="headerName">Name of header</param>
<returns>Header if found and casted properly; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Messages.Request.Add(System.String,HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="name"></param>
<param name="value"></param>
</member>
<member name="M:HttpServer.Messages.Request.Add(HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="header">Header to add.</param>
</member>
<member name="M:HttpServer.Messages.Request.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.Messages.Request.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="P:HttpServer.Messages.Request.Item(System.String)">
<summary>
Gets a header.
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="P:HttpServer.Messages.Request.Uri">
<summary>
Gets request URI.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Cookies">
<summary>
Gets cookies.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Files">
<summary>
Gets all uploaded files.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Parameters">
<summary>
Gets query string and form parameters
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Form">
<summary>
Gets form parameters.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.QueryString">
<summary>
Gets query string.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.IsAjax">
<summary>
Gets if request is an Ajax request.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Connection">
<summary>
Gets or sets connection header.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.HttpVersion">
<summary>
Gets or sets HTTP version.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Method">
<summary>
Gets or sets HTTP method.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.HttpServer#IRequest#Uri">
<summary>
Gets requested URI.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.ContentType">
<summary>
Kind of content in the body
</summary>
<remarks>Default is <c>text/html</c></remarks>
</member>
<member name="P:HttpServer.Messages.Request.Encoding">
<summary>
Gets or sets encoding
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Headers">
<summary>
Gets headers.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.Body">
<summary>
Gets body stream.
</summary>
</member>
<member name="P:HttpServer.Messages.Request.ContentLength">
<summary>
Size of the body. MUST be specified before sending the header,
unless property Chunked is set to <c>true</c>.
</summary>
<value>
Any specifically assigned value or Body stream length.
</value>
</member>
<member name="T:HttpServer.Messages.Parser.HeaderEventArgs">
<summary>
Event arguments used when a new header have been parsed.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.HeaderEventArgs.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.HeaderEventArgs"/> class.
</summary>
<param name="name">Name of header.</param>
<param name="value">Header value.</param>
<exception cref="T:System.ArgumentException">Name cannot be empty</exception>
<exception cref="T:System.ArgumentNullException"><c>value</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Messages.Parser.HeaderEventArgs.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.HeaderEventArgs"/> class.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.HeaderEventArgs.Name">
<summary>
Gets or sets header name.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.HeaderEventArgs.Value">
<summary>
Gets or sets header value.
</summary>
</member>
<member name="T:HttpServer.ParameterCollection">
<summary>
Collection of parameters.
</summary>
<remarks>
<see cref="T:System.Collections.Generic.Dictionary`2"/> or <see cref="T:System.Collections.Specialized.NameValueCollection"/> is not used since each parameter can
have multiple values.
</remarks>
</member>
<member name="M:HttpServer.ParameterCollection.#ctor(HttpServer.IParameterCollection[])">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ParameterCollection"/> class.
</summary>
<param name="collections">Collections to merge.</param>
<remarks>
Later collections will overwrite parameters from earlier collections.
</remarks>
</member>
<member name="M:HttpServer.ParameterCollection.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ParameterCollection"/> class.
</summary>
</member>
<member name="M:HttpServer.ParameterCollection.GetArrayNames">
<summary>
Get a list of string arrays.
</summary>
<returns></returns>
</member>
<member name="M:HttpServer.ParameterCollection.GetParameters(System.String)">
<summary>
Get parameters
</summary>
<param name="arrayName">Sub array (text array)</param>
<returns></returns>
</member>
<member name="M:HttpServer.ParameterCollection.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.ParameterCollection.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="M:HttpServer.ParameterCollection.Get(System.String)">
<summary>
Get a parameter.
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:HttpServer.ParameterCollection.Add(System.String,System.String)">
<summary>
Add a query string parameter.
</summary>
<param name="name">Parameter name</param>
<param name="value">Value</param>
</member>
<member name="M:HttpServer.ParameterCollection.Exists(System.String)">
<summary>
Checks if the specified parameter exists
</summary>
<param name="name">Parameter name.</param>
<returns><c>true</c> if found; otherwise <c>false</c>;</returns>
</member>
<member name="P:HttpServer.ParameterCollection.Count">
<summary>
Gets number of parameters.
</summary>
</member>
<member name="P:HttpServer.ParameterCollection.Item(System.String)">
<summary>
Gets last value of an parameter.
</summary>
<param name="name">Parameter name</param>
<returns>String if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.Headers.Parsers.StringParser">
<summary>
Parses <see cref="T:HttpServer.Headers.StringHeader"/>.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.StringParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.Headers.Parsers.NumericHeaderParser">
<summary>
Parses numerical values
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.NumericHeaderParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.Headers.Parsers.ContentTypeParser">
<summary>
Parses <see cref="T:HttpServer.Headers.ContentTypeHeader"/>.
</summary>
</member>
<member name="M:HttpServer.Headers.Parsers.ContentTypeParser.Parse(System.String,HttpServer.Tools.ITextReader)">
<summary>
Parse a header
</summary>
<param name="name">Name of header.</param>
<param name="reader">Reader containing value.</param>
<returns>HTTP Header</returns>
<exception cref="T:System.FormatException">Header value is not of the expected format.</exception>
</member>
<member name="T:HttpServer.NotFoundException">
<summary>
Request couldn't be parsed successfully.
</summary>
</member>
<member name="M:HttpServer.NotFoundException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.BadRequestException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
</member>
<member name="M:HttpServer.NotFoundException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.BadRequestException"/> class.
</summary>
<param name="errMsg">Exception description.</param>
<param name="inner">Exception description.</param>
</member>
<member name="T:HttpServer.Authentication.BasicAuthentication">
<summary>
Implements basic authentication scheme.
</summary>
</member>
<member name="M:HttpServer.Authentication.BasicAuthentication.CreateChallenge(System.String)">
<summary>
Create a response that can be sent in the WWW-Authenticate header.
</summary>
<param name="realm">Realm that the user should authenticate in</param>
<param name="options">Not used by basic authentication</param>
<returns>A WWW-Authenticate header.</returns>
<exception cref="T:System.ArgumentNullException">Argument is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Authentication.BasicAuthentication.Authenticate(HttpServer.Headers.AuthorizationHeader,System.String,System.String)">
<summary>
An authentication response have been received from the web browser.
Check if it's correct
</summary>
<param name="header">Authorization header</param>
<param name="realm">Realm that should be authenticated</param>
<param name="httpVerb">GET/POST/PUT/DELETE etc.</param>
<returns>Authentication object that is stored for the request. A user class or something like that.</returns>
<exception cref="T:System.ArgumentException">if authenticationHeader is invalid</exception>
<exception cref="T:System.ArgumentNullException">If any of the paramters is empty or null.</exception>
</member>
<member name="P:HttpServer.Authentication.BasicAuthentication.Scheme">
<summary>
Gets authenticator scheme
</summary>
<value></value>
<example>
digest
</example>
</member>
<member name="T:HttpServer.Tools.BufferReader">
<summary>
Reads strings from a byte array.
</summary>
</member>
<member name="M:HttpServer.Tools.BufferReader.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.BufferReader"/> class.
</summary>
</member>
<member name="M:HttpServer.Tools.BufferReader.#ctor(System.Text.Encoding)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.BufferReader"/> class.
</summary>
<param name="encoding">Encoding to use when converting byte array to strings.</param>
</member>
<member name="M:HttpServer.Tools.BufferReader.#ctor(System.Byte[],System.Text.Encoding)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.BufferReader"/> class.
</summary>
<param name="buffer">Buffer to read from.</param>
<param name="encoding">Encoding to use when converting byte array to strings.</param>
</member>
<member name="M:HttpServer.Tools.BufferReader.Assign(System.Object,System.Int32,System.Int32)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process.</param>
<param name="offset">Where to start process buffer</param>
<param name="count">Buffer length</param>
<exception cref="T:System.ArgumentException">Buffer needs to be a byte array</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.Assign(System.Object)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process</param>
<exception cref="T:System.ArgumentException">Buffer needs to be a byte array</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.Consume">
<summary>
Consume current character.
</summary>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadLine">
<summary>
Get a text line.
</summary>
<returns></returns>
<remarks>Will merge multi line headers.</remarks>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadQuotedString">
<summary>
Read quoted string
</summary>
<returns>string if current character (in buffer) is a quote; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadToEnd(System.String)">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>
A string (can be <see cref="F:System.String.Empty"/>).
</returns>
<remarks>
Will not consume the delimiter.
</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadToEnd">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<remarks>
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadToEnd(System.Char)">
<summary>
Read to end of buffer, or until specified delimiter is found.
</summary>
<param name="delimiter">Delimiter to find.</param>
<returns>
A string (can be <see cref="F:System.String.Empty"/>).
</returns>
<remarks>
Will not consume the delimiter.
</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.Consume(System.Char[])">
<summary>
Consume specified characters
</summary>
<param name="chars">One or more characters.</param>
</member>
<member name="M:HttpServer.Tools.BufferReader.ConsumeWhiteSpaces">
<summary>
Consumes horizontal white spaces (space and tab).
</summary>
</member>
<member name="M:HttpServer.Tools.BufferReader.ConsumeWhiteSpaces(System.Char)">
<summary>
Consume horizontal white spaces and the specified character.
</summary>
<param name="extraCharacter">Extra character to consume</param>
</member>
<member name="M:HttpServer.Tools.BufferReader.Read">
<summary>
Read a character.
</summary>
<returns>
Character if not EOF; otherwise <c>null</c>.
</returns>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadUntil(System.Char)">
<summary>
Will read until specified delimiter is found.
</summary>
<param name="delimiter">Character to stop at.</param>
<returns>
A string if the delimiter was found; otherwise <c>null</c>.
</returns>
<remarks>
Will trim away spaces and tabs from the end.</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadUntil(System.String)">
<summary>
Read until one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>
A string if one of the delimiters was found; otherwise <c>null</c>.
</returns>
<remarks>
Will not consume the delimiter.
</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.BufferReader.ReadWord">
<summary>
Read until a horizontal white space occurs.
</summary>
<returns>A string if a white space was found; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Tools.BufferReader.Contains(System.Char)">
<summary>
Checks if one of the remaining bytes are a specified character.
</summary>
<param name="ch">Character to find.</param>
<returns>
<c>true</c> if found; otherwise <c>false</c>.
</returns>
</member>
<member name="P:HttpServer.Tools.BufferReader.LineNumber">
<summary>
Gets or sets line number.
</summary>
</member>
<member name="P:HttpServer.Tools.BufferReader.EOF">
<summary>
Gets if end of buffer have been reached
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.BufferReader.HasMore">
<summary>
Gets if more bytes can be processed.
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.BufferReader.Peek">
<summary>
Gets next character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.BufferReader.Current">
<summary>
Gets current character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.BufferReader.Index">
<summary>
Gets or sets current position in buffer.
</summary>
<remarks>
THINK before you manually change the position since it can blow up
the whole parsing in your face.
</remarks>
</member>
<member name="P:HttpServer.Tools.BufferReader.Length">
<summary>
Gets total length of buffer.
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.BufferReader.RemainingLength">
<summary>
Gets number of bytes left.
</summary>
</member>
<member name="T:HttpServer.IResponse">
<summary>
Response to a request.
</summary>
</member>
<member name="M:HttpServer.IResponse.Redirect(System.String)">
<summary>
Redirect user.
</summary>
<param name="uri">Where to redirect to.</param>
<remarks>
Any modifications after a redirect will be ignored.
</remarks>
</member>
<member name="P:HttpServer.IResponse.Connection">
<summary>
Gets connection type.
</summary>
</member>
<member name="P:HttpServer.IResponse.Cookies">
<summary>
Gets cookies.
</summary>
</member>
<member name="P:HttpServer.IResponse.HttpVersion">
<summary>
Gets HTTP version.
</summary>
<remarks>
Default is HTTP/1.1
</remarks>
</member>
<member name="P:HttpServer.IResponse.Reason">
<summary>
Information about why a specific status code was used.
</summary>
</member>
<member name="P:HttpServer.IResponse.Status">
<summary>
Status code that is sent to the client.
</summary>
<remarks>Default is <see cref="F:System.Net.HttpStatusCode.OK"/></remarks>
</member>
<member name="P:HttpServer.IResponse.ContentType">
<summary>
Gets or sets content type
</summary>
</member>
<member name="T:HttpServer.RequestContext">
<summary>
Request context
</summary>
<remarks>
Contains information about a HTTP request and where it came from.
</remarks>
</member>
<member name="P:HttpServer.RequestContext.HttpContext">
<summary>
Gets or sets http context.
</summary>
</member>
<member name="P:HttpServer.RequestContext.Request">
<summary>
Gets or sets http request.
</summary>
</member>
<member name="P:HttpServer.RequestContext.Response">
<summary>
Gets or sets http response.
</summary>
</member>
<member name="T:HttpServer.Headers.NumericHeader">
<summary>
Contains numerical value.
</summary>
</member>
<member name="M:HttpServer.Headers.NumericHeader.#ctor(System.String,System.Int64)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Headers.NumericHeader"/> class.
</summary>
<param name="name">The name.</param>
<param name="value">The value.</param>
</member>
<member name="M:HttpServer.Headers.NumericHeader.ToString">
<summary>
Returns data formatted as a HTTP header value.
</summary>
<returns>
A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</returns>
</member>
<member name="P:HttpServer.Headers.NumericHeader.Value">
<summary>
Gets value
</summary>
</member>
<member name="P:HttpServer.Headers.NumericHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.ArrayParameterCollection">
<summary>
Form parameters where form string arrays have been converted to real arrays.
</summary>
</member>
<member name="M:HttpServer.ArrayParameterCollection.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ArrayParameterCollection"/> class.
</summary>
</member>
<member name="M:HttpServer.ArrayParameterCollection.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ArrayParameterCollection"/> class.
</summary>
<param name="name">The name.</param>
<param name="value">The value.</param>
</member>
<member name="M:HttpServer.ArrayParameterCollection.#ctor(System.Collections.Generic.IEnumerable{HttpServer.IParameter})">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.ArrayParameterCollection"/> class.
</summary>
<param name="collection">Parse parameters from the this collection.</param>
</member>
<member name="M:HttpServer.ArrayParameterCollection.Get(System.String)">
<summary>
Get a parameter.
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:HttpServer.ArrayParameterCollection.Add(System.String,System.String)">
<summary>
Add a parameter
</summary>
<param name="name">Name of parameter, can contain a string array.</param>
<param name="value">Value</param>
<example>
<code>
ArrayParameterCollection array = new ArrayParameterCollection();
array.Add("user[FirstName]", "Jonas");
array.Add("user[FirstName]", "Arne");
string firstName = array["user"]["FirstName"].Value; // "Arne" is returned
foreach (string value in array["user"]["FirstName"])
Console.WriteLine(value); // each name is displayed.
</code>
</example>
</member>
<member name="M:HttpServer.ArrayParameterCollection.Exists(System.String)">
<summary>
Checks if the specified parameter exists
</summary>
<param name="name">Parameter name.</param>
<returns><c>true</c> if found; otherwise <c>false</c>;</returns>
</member>
<member name="M:HttpServer.ArrayParameterCollection.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="P:HttpServer.ArrayParameterCollection.Item(System.String)">
<summary>
Gets first value of an item.
</summary>
<value></value>
<returns>String if found; otherwise <c>null</c>.</returns>
</member>
<member name="P:HttpServer.ArrayParameterCollection.Count">
<summary>
Gets number of parameters.
</summary>
</member>
<member name="P:HttpServer.ArrayParameterCollection.HttpServer#IParameterCollection#Item(System.String)">
<summary>
Gets last value of an parameter.
</summary>
<param name="name">Parameter name</param>
<returns>String if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.Helpers.PropertyAssigner">
<summary>
Assign properties from HTTP parameters.
</summary>
</member>
<member name="M:HttpServer.Helpers.PropertyAssigner.SetFilterHandler(HttpServer.Helpers.FilterHandler)">
<summary>
Used to filter out properties.
</summary>
<param name="handler">Filter handler.</param>
<exception cref="T:System.InvalidOperationException">Handler have already been set.</exception>
</member>
<member name="M:HttpServer.Helpers.PropertyAssigner.Assign(System.Object,HttpServer.IParameterCollection)">
<summary>
Assign properties in the specified object.
</summary>
<param name="instance">Object to fill.</param>
<param name="parameters">Contains all parameters that should be assigned to the properties.</param>
<exception cref="T:HttpServer.Helpers.PropertyException">Properties was not found or value could not be converted.</exception>
<exception cref="T:System.ArgumentNullException">Any parameter is <c>null</c>.</exception>
</member>
<member name="T:HttpServer.Helpers.FilterHandler">
<summary>
Used to be able to filter properties
</summary>
<param name="instance">Model having it's properties assigned</param>
<param name="propertyName">Property about to be assigned</param>
<param name="propertyValue">Value to assign</param>
<returns><c>true</c> if value can be set; otherwise <c>false</c>.</returns>
</member>
<member name="T:HttpServer.Helpers.PropertyException">
<summary>
Failed to assign properties.
</summary>
</member>
<member name="M:HttpServer.Helpers.PropertyException.#ctor(System.Collections.Generic.Dictionary{System.String,System.Exception})">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Helpers.PropertyException"/> class.
</summary>
<param name="propertyErrors">The property errors.</param>
</member>
<member name="P:HttpServer.Helpers.PropertyException.PropertyErrors">
<summary>
Gets all errors during assignment.
</summary>
<remarks>
Dictionary key is property name.
</remarks>
</member>
<member name="T:HttpServer.Tools.StringReader">
<summary>
Used to read from a string object.
</summary>
</member>
<member name="M:HttpServer.Tools.StringReader.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.StringReader"/> class.
</summary>
<param name="buffer">Buffer to process.</param>
</member>
<member name="M:HttpServer.Tools.StringReader.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Tools.StringReader"/> class.
</summary>
</member>
<member name="M:HttpServer.Tools.StringReader.Assign(System.Object,System.Int32,System.Int32)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process.</param>
<param name="offset">Where to start process buffer</param>
<param name="count">Buffer length</param>
<remarks><paramref name="buffer"/> MUST be of type <see cref="T:System.String"/>.</remarks>
<exception cref="T:System.ArgumentException">buffer needs to be of type string</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.Assign(System.Object)">
<summary>
Assign a new buffer
</summary>
<param name="buffer">Buffer to process</param>
<remarks><paramref name="buffer"/> MUST be of type <see cref="T:System.String"/>.</remarks>
<exception cref="T:System.ArgumentException">buffer needs to be of type string</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.Consume">
<summary>
Consume current character.
</summary>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadLine">
<summary>
Get a text line.
</summary>
<returns></returns>
<remarks>Will merge multiline headers.</remarks>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadQuotedString">
<summary>
Read quoted string
</summary>
<returns>string if current character (in buffer) is a quote; otherwise <c>null</c>.</returns>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadToEnd(System.String)">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadToEnd">
<summary>
Read until end of string, or to one of the delimiters are found.
</summary>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<remarks>
Will not consume the delimiter.
</remarks>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadToEnd(System.Char)">
<summary>
Read to end of buffer, or until specified delimiter is found.
</summary>
<param name="delimiter">Delimiter to find.</param>
<returns>A string (can be <see cref="F:System.String.Empty"/>).</returns>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.Consume(System.Char[])">
<summary>
Consume specified characters
</summary>
<param name="chars">One or more characters.</param>
</member>
<member name="M:HttpServer.Tools.StringReader.ConsumeWhiteSpaces">
<summary>
Consumes horizontal white spaces (space and tab).
</summary>
</member>
<member name="M:HttpServer.Tools.StringReader.Read">
<summary>
Read a character.
</summary>
<returns>
Character if not EOF; otherwise <c>null</c>.
</returns>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadUntil(System.Char)">
<summary>
Will read until specified delimiter is found.
</summary>
<param name="delimiter">Character to stop at.</param>
<returns>
A string if the delimiter was found; otherwise <c>null</c>.
</returns>
<remarks>
Will trim away spaces and tabs from the end.
Will not consume the delimiter.
</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadUntil(System.String)">
<summary>
Read until one of the delimiters are found.
</summary>
<param name="delimiters">characters to stop at</param>
<returns>
A string if one of the delimiters was found; otherwise <c>null</c>.
</returns>
<remarks>
Will not consume the delimiter.
</remarks>
<exception cref="T:System.InvalidOperationException"><c>InvalidOperationException</c>.</exception>
</member>
<member name="M:HttpServer.Tools.StringReader.ReadWord">
<summary>
Read until a horizontal white space occurs (or end, or end of line).
</summary>
<returns>
A string if a white space was found; otherwise <c>null</c>.
</returns>
</member>
<member name="M:HttpServer.Tools.StringReader.ConsumeWhiteSpaces(System.Char)">
<summary>
Consume horizontal white spaces and the specified character.
</summary>
<param name="extraCharacter">Extra character to consume</param>
</member>
<member name="M:HttpServer.Tools.StringReader.Contains(System.Char)">
<summary>
Checks if one of the remaining bytes are a specified character.
</summary>
<param name="ch">Character to find.</param>
<returns>
<c>true</c> if found; otherwise <c>false</c>.
</returns>
</member>
<member name="P:HttpServer.Tools.StringReader.LineNumber">
<summary>
Gets or sets line number.
</summary>
</member>
<member name="P:HttpServer.Tools.StringReader.EOF">
<summary>
Gets if end of buffer have been reached
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.StringReader.HasMore">
<summary>
Gets if more bytes can be processed.
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.StringReader.Peek">
<summary>
Gets next character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.StringReader.Current">
<summary>
Gets current character
</summary>
<value><see cref="F:System.Char.MinValue"/> if end of buffer.</value>
</member>
<member name="P:HttpServer.Tools.StringReader.Index">
<summary>
Gets or sets current position in buffer.
</summary>
<remarks>
THINK before you manually change the position since it can blow up
the whole parsing in your face.
</remarks>
</member>
<member name="P:HttpServer.Tools.StringReader.Length">
<summary>
Gets total length of buffer.
</summary>
<value></value>
</member>
<member name="P:HttpServer.Tools.StringReader.RemainingLength">
<summary>
Gets number of bytes left.
</summary>
</member>
<member name="T:HttpServer.Logging.NullLogWriter">
<summary>
Default log writer, writes everything to void (nowhere).
</summary>
<seealso cref="T:HttpServer.Logging.ILogger"/>
</member>
<member name="F:HttpServer.Logging.NullLogWriter.Instance">
<summary>
The logging instance.
</summary>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Debug(System.String)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Debug(System.String,System.Exception)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Trace(System.String)">
<summary>
Write a entry needed when following through code during hard to find bugs.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Trace(System.String,System.Exception)">
<summary>
Write a entry that helps when trying to find hard to find bugs.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Info(System.String)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Info(System.String,System.Exception)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Warning(System.String)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Warning(System.String,System.Exception)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Error(System.String)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Error(System.String,System.Exception)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Fatal(System.String)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.NullLogWriter.Fatal(System.String,System.Exception)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="T:HttpServer.Logging.LogLevel">
<summary>
Priority for log entries
</summary>
<seealso cref="T:HttpServer.Logging.ILogger"/>
</member>
<member name="F:HttpServer.Logging.LogLevel.Trace">
<summary>
Very detailed logs to be able to follow the flow of the program.
</summary>
</member>
<member name="F:HttpServer.Logging.LogLevel.Debug">
<summary>
Logs to help debug errors in the application
</summary>
</member>
<member name="F:HttpServer.Logging.LogLevel.Info">
<summary>
Information to be able to keep track of state changes etc.
</summary>
</member>
<member name="F:HttpServer.Logging.LogLevel.Warning">
<summary>
Something did not go as we expected, but it's no problem.
</summary>
</member>
<member name="F:HttpServer.Logging.LogLevel.Error">
<summary>
Something that should not fail failed, but we can still keep
on going.
</summary>
</member>
<member name="F:HttpServer.Logging.LogLevel.Fatal">
<summary>
Something failed, and we cannot handle it properly.
</summary>
</member>
<member name="T:HttpServer.Logging.ConsoleLogger">
<summary>
This class writes to the console.
</summary>
<remarks>
It colors the output depending on the log level
and includes a 3-level stack trace (in debug mode)
</remarks>
<seealso cref="T:HttpServer.Logging.ILogger"/>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.#ctor(System.Type,HttpServer.Logging.ILogFilter)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Logging.ConsoleLogger"/> class.
</summary>
<param name="loggingType">Type being logged.</param>
<param name="filter">Log filter.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.GetColor(HttpServer.Logging.LogLevel)">
<summary>
Get color for the specified log level
</summary>
<param name="level">Level for the log entry</param>
<returns>A <see cref="T:System.ConsoleColor"/> for the level</returns>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Write(HttpServer.Logging.LogLevel,System.String)">
<summary>
Write an entry
</summary>
<param name="level">Importance of the log message</param>
<param name="message">The message.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Debug(System.String)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Debug(System.String,System.Exception)">
<summary>
Write an entry that helps when debugging code.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Trace(System.String)">
<summary>
Write a entry needed when following through code during hard to find bugs.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Trace(System.String,System.Exception)">
<summary>
Write a entry that helps when trying to find hard to find bugs.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Info(System.String)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Info(System.String,System.Exception)">
<summary>
Informational message, needed when helping customer to find a problem.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Warning(System.String)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Warning(System.String,System.Exception)">
<summary>
Something is not as we expect, but the code can continue to run without any changes.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Error(System.String)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Error(System.String,System.Exception)">
<summary>
Something went wrong, but the application do not need to die. The current thread/request
cannot continue as expected.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Fatal(System.String)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
</member>
<member name="M:HttpServer.Logging.ConsoleLogger.Fatal(System.String,System.Exception)">
<summary>
Something went very wrong, application might not recover.
</summary>
<param name="message">Log message</param>
<param name="exception">Thrown exception to log.</param>
</member>
<member name="P:HttpServer.Logging.ConsoleLogger.LoggingType">
<summary>
Gets or sets type that the logger is for
</summary>
</member>
<member name="T:HttpServer.HttpContext">
<summary>
A HTTP context
</summary>
<remarks>
</remarks>
</member>
<member name="T:HttpServer.IHttpContext">
<summary>
Context that received a HTTP request.
</summary>
</member>
<member name="M:HttpServer.IHttpContext.Disconnect">
<summary>
Disconnect context.
</summary>
</member>
<member name="P:HttpServer.IHttpContext.IsSecure">
<summary>
Gets if current context is using a secure connection.
</summary>
</member>
<member name="P:HttpServer.IHttpContext.Logger">
<summary>
Gets logger.
</summary>
</member>
<member name="P:HttpServer.IHttpContext.RemoteEndPoint">
<summary>
Gets remote end point
</summary>
</member>
<member name="P:HttpServer.IHttpContext.Stream">
<summary>
Gets stream used to send/receive data to/from remote end point.
</summary>
<remarks>
<para>
The stream can be any type of stream, do not assume that it's a network
stream. For instance, it can be a <see cref="T:System.Net.Security.SslStream"/> or a ZipStream.
</para>
</remarks>
</member>
<member name="P:HttpServer.IHttpContext.Request">
<summary>
Gets the currently handled request
</summary>
<value>The request.</value>
</member>
<member name="P:HttpServer.IHttpContext.Response">
<summary>
Gets the response that is going to be sent back
</summary>
<value>The response.</value>
</member>
<member name="M:HttpServer.HttpContext.#ctor(System.Net.Sockets.Socket,HttpServer.Messages.MessageFactoryContext)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.HttpContext"/> class.
</summary>
<param name="socket">Socket received from HTTP listener.</param>
<param name="context">Context used to parse incoming messages.</param>
</member>
<member name="M:HttpServer.HttpContext.Dispose">
<summary>
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
</summary>
<filterpriority>2</filterpriority>
</member>
<member name="M:HttpServer.HttpContext.Disconnect">
<summary>
Disconnect context.
</summary>
</member>
<member name="M:HttpServer.HttpContext.Close">
<summary>
Close and release socket.
</summary>
</member>
<member name="M:HttpServer.HttpContext.CreateStream(System.Net.Sockets.Socket)">
<summary>
Create stream used to send and receive bytes from the socket.
</summary>
<param name="socket">Socket to wrap</param>
<returns>Stream</returns>
<exception cref="T:System.InvalidOperationException">Stream could not be created.</exception>
</member>
<member name="M:HttpServer.HttpContext.OnReceive(System.IAsyncResult)">
<summary>
Interpret incoming data.
</summary>
<param name="ar"></param>
</member>
<member name="M:HttpServer.HttpContext.OnRequest(System.Object,HttpServer.Messages.FactoryRequestEventArgs)">
<summary>
A request was received from the parser.
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:HttpServer.HttpContext.ParseBuffer(System.Int32)">
<summary>
Parse all complete requests in buffer.
</summary>
<param name="bytesLeft"></param>
<returns>offset in buffer where parsing stopped.</returns>
<exception cref="T:System.InvalidOperationException">Parsing failed.</exception>
</member>
<member name="M:HttpServer.HttpContext.Start">
<summary>
Start content.
</summary>
<exception cref="T:System.Net.Sockets.SocketException">A socket operation failed.</exception>
<exception cref="T:System.IO.IOException">Reading from stream failed.</exception>
</member>
<member name="P:HttpServer.HttpContext.Current">
<summary>
Gets currently executing HTTP context.
</summary>
</member>
<member name="P:HttpServer.HttpContext.HttpFactory">
<summary>
Gets or sets description
</summary>
</member>
<member name="P:HttpServer.HttpContext.MessageFactoryContext">
<summary>
gets factory used to build request objects
</summary>
</member>
<member name="P:HttpServer.HttpContext.Socket">
<summary>
Gets socket
</summary>
</member>
<member name="P:HttpServer.HttpContext.RemoteEndPoint">
<summary>
Gets remove end point
</summary>
</member>
<member name="P:HttpServer.HttpContext.Stream">
<summary>
Gets network stream.
</summary>
</member>
<member name="P:HttpServer.HttpContext.Request">
<summary>
Gets the currently handled request
</summary>
<value>The request.</value>
</member>
<member name="P:HttpServer.HttpContext.Response">
<summary>
Gets the response that is going to be sent back
</summary>
<value>The response.</value>
</member>
<member name="P:HttpServer.HttpContext.Logger">
<summary>
Gets logger.
</summary>
</member>
<member name="P:HttpServer.HttpContext.IsSecure">
<summary>
Gets if current context is using a secure connection.
</summary>
</member>
<member name="E:HttpServer.HttpContext.CurrentRequestCompleted">
<summary>
Triggered for all requests in the server (after the response have been sent)
</summary>
</member>
<member name="E:HttpServer.HttpContext.RequestCompleted">
<summary>
Triggered for current request (after the response have been sent)
</summary>
</member>
<member name="E:HttpServer.HttpContext.RequestReceived">
<summary>
A new request have been received.
</summary>
</member>
<member name="E:HttpServer.HttpContext.CurrentRequestReceived">
<summary>
A new request have been received (invoked for ALL requests)
</summary>
</member>
<member name="E:HttpServer.HttpContext.Disconnected">
<summary>
Client have been disconnected.
</summary>
</member>
<member name="E:HttpServer.HttpContext.ContinueResponseRequested">
<summary>
Client asks if he may continue.
</summary>
<remarks>
If the body is too large or anything like that you should respond <see cref="F:System.Net.HttpStatusCode.ExpectationFailed"/>.
</remarks>
</member>
<member name="M:HttpServer.SecureHttpContext.#ctor(System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Authentication.SslProtocols,System.Net.Sockets.Socket,HttpServer.Messages.MessageFactoryContext)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.SecureHttpContext"/> class.
</summary>
<param name="protocols">SSL protocol to use.</param>
<param name="socket">The socket.</param>
<param name="context">The context.</param>
<param name="certificate">Server certificate to use.</param>
</member>
<member name="M:HttpServer.SecureHttpContext.CreateStream(System.Net.Sockets.Socket)">
<summary>
Create stream used to send and receive bytes from the socket.
</summary>
<param name="socket">Socket to wrap</param>
<returns>Stream</returns>
<exception cref="T:System.InvalidOperationException">Stream could not be created.</exception>
</member>
<member name="P:HttpServer.SecureHttpContext.ClientCertificate">
<summary>
Gets or sets client certificate.
</summary>
</member>
<member name="P:HttpServer.SecureHttpContext.Protocol">
<summary>
Gets used protocol.
</summary>
</member>
<member name="P:HttpServer.SecureHttpContext.UseClientCertificate">
<summary>
Gets or sets if client certificate should be used instead of server certificate.
</summary>
</member>
<member name="T:HttpServer.Resources.Resource">
<summary>
Resource information.
</summary>
<remarks>
Used by content providers to be able to get information
on resources (views, files etc).
</remarks>
</member>
<member name="P:HttpServer.Resources.Resource.ModifiedAt">
<summary>
Gets or sets date when resource was modified.
</summary>
<value>
<see cref="F:System.DateTime.MinValue"/> if not used.
</value>
<remarks>
Should always be universal time.
</remarks>
</member>
<member name="P:HttpServer.Resources.Resource.Stream">
<summary>
Gets or sets resource stream.
</summary>
</member>
<member name="T:HttpServer.Headers.HeaderParameterCollection">
<summary>
Contains parameters for HTTP headers.
</summary>
</member>
<member name="M:HttpServer.Headers.HeaderParameterCollection.Add(System.String,System.String)">
<summary>
Add a parameter
</summary>
<param name="name">name</param>
<param name="value">value</param>
<remarks>
Existing parameter with the same name will be replaced.
</remarks>
</member>
<member name="M:HttpServer.Headers.HeaderParameterCollection.Parse(HttpServer.Tools.ITextReader)">
<summary>
Parse parameters.
</summary>
<param name="reader">Parser containing buffer to parse.</param>
<returns>A collection with all parameters (or just a empty collection).</returns>
<exception cref="T:System.FormatException">Expected a value after equal sign.</exception>
</member>
<member name="M:HttpServer.Headers.HeaderParameterCollection.Parse(HttpServer.Tools.ITextReader,System.Char)">
<summary>
Parse parameters.
</summary>
<param name="reader">Parser containing buffer to parse.</param>
<param name="delimiter">Parameter delimiter</param>
<returns>A collection with all parameters (or just a empty collection).</returns>
<exception cref="T:System.FormatException">Expected a value after equal sign.</exception>
</member>
<member name="M:HttpServer.Headers.HeaderParameterCollection.ToString">
<summary>
Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</summary>
<returns>
A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
</returns>
</member>
<member name="P:HttpServer.Headers.HeaderParameterCollection.Item(System.String)">
<summary>
Gets or sets a value
</summary>
<param name="name">parameter name</param>
<returns>value if found; otherwise <c>null</c>.</returns>
</member>
<member name="T:HttpServer.Messages.Response">
<summary>
Create a HTTP response object.
</summary>
</member>
<member name="M:HttpServer.Messages.Response.#ctor(System.String,System.Net.HttpStatusCode,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Response"/> class.
</summary>
<param name="version">HTTP Version.</param>
<param name="code">HTTP status code.</param>
<param name="reason">Why the status code was selected.</param>
<exception cref="T:System.FormatException">Version must start with 'HTTP/'</exception>
</member>
<member name="M:HttpServer.Messages.Response.#ctor(HttpServer.IHttpContext,HttpServer.IRequest)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Response"/> class.
</summary>
<param name="context">Context that the response will be sent through.</param>
<param name="request">Request that the response is for.</param>
<exception cref="T:System.FormatException">Version must start with 'HTTP/'</exception>
</member>
<member name="M:HttpServer.Messages.Response.Redirect(System.String)">
<summary>
Redirect user.
</summary>
<param name="uri">Where to redirect to.</param>
<remarks>
Any modifications after a redirect will be ignored.
</remarks>
</member>
<member name="M:HttpServer.Messages.Response.Add(System.String,HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="name"></param>
<param name="value"></param>
</member>
<member name="M:HttpServer.Messages.Response.Add(HttpServer.Headers.IHeader)">
<summary>
Add a new header.
</summary>
<param name="header">Header to add.</param>
</member>
<member name="M:HttpServer.Messages.Response.GetEnumerator">
<summary>
Returns an enumerator that iterates through the collection.
</summary>
<returns>
A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
</returns>
<filterpriority>1</filterpriority>
</member>
<member name="M:HttpServer.Messages.Response.System#Collections#IEnumerable#GetEnumerator">
<summary>
Returns an enumerator that iterates through a collection.
</summary>
<returns>
An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
</returns>
<filterpriority>2</filterpriority>
</member>
<member name="P:HttpServer.Messages.Response.Item(System.String)">
<summary>
Gets a header.
</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="P:HttpServer.Messages.Response.Connection">
<summary>
Gets connection type.
</summary>
</member>
<member name="P:HttpServer.Messages.Response.Status">
<summary>
Status code that is sent to the client.
</summary>
<remarks>Default is <see cref="F:System.Net.HttpStatusCode.OK"/></remarks>
</member>
<member name="P:HttpServer.Messages.Response.HttpVersion">
<summary>
Gets HTTP version.
</summary>
<remarks>
Default is HTTP/1.1
</remarks>
</member>
<member name="P:HttpServer.Messages.Response.Reason">
<summary>
Information about why a specific status code was used.
</summary>
</member>
<member name="P:HttpServer.Messages.Response.ContentLength">
<summary>
Size of the body. MUST be specified before sending the header,
unless property Chunked is set to <c>true</c>.
</summary>
<value>
Any specifically assigned value or Body stream length.
</value>
</member>
<member name="P:HttpServer.Messages.Response.ContentType">
<summary>
Kind of content in the body
</summary>
<remarks>Default is <c>text/html</c></remarks>
</member>
<member name="P:HttpServer.Messages.Response.Encoding">
<summary>
Gets or sets encoding
</summary>
</member>
<member name="P:HttpServer.Messages.Response.Cookies">
<summary>
Gets cookies.
</summary>
</member>
<member name="P:HttpServer.Messages.Response.Body">
<summary>
Gets body stream.
</summary>
</member>
<member name="P:HttpServer.Messages.Response.Headers">
<summary>
Gets headers.
</summary>
</member>
<member name="T:HttpServer.Messages.Parser.RequestEventArgs">
<summary>
A request have been received.
</summary>
</member>
<member name="M:HttpServer.Messages.Parser.RequestEventArgs.#ctor(HttpServer.IRequest,System.Net.EndPoint)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Messages.Parser.RequestEventArgs"/> class.
</summary>
<param name="request">The request.</param>
<param name="endPoint">End point that the request was received from.</param>
</member>
<member name="P:HttpServer.Messages.Parser.RequestEventArgs.RemoteEndPoint">
<summary>
End point that the message was received from.
</summary>
</member>
<member name="P:HttpServer.Messages.Parser.RequestEventArgs.Request">
<summary>
Received request.
</summary>
</member>
<member name="T:HttpServer.Routing.RegExRouter">
<summary>
Class to make dynamic binding of redirects. Instead of having to specify a number of similar redirect rules
a regular expression can be used to identify redirect URLs and their targets.
</summary>
<example>
<![CDATA[
new RegexRedirectRule("/(?<target>[a-z0-9]+)", "/users/${target}/?find=true", RegexOptions.IgnoreCase)
]]>
</example>
</member>
<member name="M:HttpServer.Routing.RegExRouter.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Routing.RegExRouter"/> class.
</summary>
<param name="fromUrlExpression">Expression to match URL</param>
<param name="toUrlExpression">Expression to generate URL</param>
<example>
<![CDATA[
server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}"));
Result of ie. /employee1 will then be /user/employee1
]]>
</example>
</member>
<member name="M:HttpServer.Routing.RegExRouter.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Routing.RegExRouter"/> class.
</summary>
<param name="fromUrlExpression">Expression to match URL</param>
<param name="toUrlExpression">Expression to generate URL</param>
<param name="options">Regular expression options to use, can be <c>null</c></param>
<example>
<![CDATA[
server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/{first}", RegexOptions.IgnoreCase));
Result of ie. /employee1 will then be /user/employee1
]]>
</example>
</member>
<member name="M:HttpServer.Routing.RegExRouter.#ctor(System.String,System.String,System.Text.RegularExpressions.RegexOptions,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Routing.RegExRouter"/> class.
</summary>
<param name="fromUrlExpression">Expression to match URL</param>
<param name="toUrlExpression">Expression to generate URL</param>
<param name="options">Regular expression options to apply</param>
<param name="shouldRedirect"><c>true</c> if request should be redirected, <c>false</c> if the request URI should be replaced.</param>
<example>
<![CDATA[
server.Add(new RegexRedirectRule("/(?<first>[a-zA-Z0-9]+)", "/user/${first}", RegexOptions.None));
Result of ie. /employee1 will then be /user/employee1
]]>
</example>
<exception cref="T:System.ArgumentNullException">Argument is <c>null</c>.</exception>
<seealso cref="P:HttpServer.Routing.SimpleRouter.ShouldRedirect"/>
</member>
<member name="M:HttpServer.Routing.RegExRouter.Process(HttpServer.RequestContext)">
<summary>
Process the incoming request.
</summary>
<param name="context">Request context.</param>
<returns>Processing result.</returns>
<exception cref="T:System.ArgumentNullException">If any parameter is <c>null</c>.</exception>
</member>
<member name="T:HttpServer.Messages.ResponseCookie">
<summary>
cookie being sent back to the browser.
</summary>
<seealso cref="T:HttpServer.Messages.ResponseCookie"/>
</member>
<member name="M:HttpServer.Messages.ResponseCookie.#ctor(System.String,System.String,System.DateTime)">
<summary>
Constructor.
</summary>
<param name="id">cookie identifier</param>
<param name="content">cookie content</param>
<param name="expiresAt">cookie expiration date. Use <see cref="F:System.DateTime.MinValue"/> for session cookie.</param>
<exception cref="T:System.ArgumentNullException">id or content is <c>null</c></exception>
<exception cref="T:System.ArgumentException">id is empty</exception>
</member>
<member name="M:HttpServer.Messages.ResponseCookie.#ctor(System.String,System.String,System.DateTime,System.String,System.String)">
<summary>
Create a new cookie
</summary>
<param name="name">name identifying the cookie</param>
<param name="value">cookie value</param>
<param name="expires">when the cookie expires. Setting <see cref="F:System.DateTime.MinValue"/> will delete the cookie when the session is closed.</param>
<param name="path">Path to where the cookie is valid</param>
<param name="domain">Domain that the cookie is valid for.</param>
</member>
<member name="M:HttpServer.Messages.ResponseCookie.#ctor(HttpServer.Messages.RequestCookie,System.DateTime)">
<summary>
Create a new cookie
</summary>
<param name="cookie">Name and value will be used</param>
<param name="expires">when the cookie expires.</param>
</member>
<member name="M:HttpServer.Messages.ResponseCookie.ToString">
<summary>
Gets the cookie HTML representation.
</summary>
<returns>cookie string</returns>
</member>
<member name="P:HttpServer.Messages.ResponseCookie.Expires">
<summary>
Gets when the cookie expires.
</summary>
<remarks><see cref="F:System.DateTime.MinValue"/> means that the cookie expires when the session do so.</remarks>
</member>
<member name="P:HttpServer.Messages.ResponseCookie.Path">
<summary>
Gets path that the cookie is valid under.
</summary>
</member>
<member name="T:HttpServer.Headers.CacheControlHeader">
<summary>
The Cache-Control general-header field is used to specify directives that
MUST be obeyed by all caching mechanisms along the request/response
chain. .
</summary>
<remarks>
<para>
The directives specify behavior intended to prevent caches from adversely
interfering with the request or response. These directives typically
override the default caching algorithms. Cache directives are
unidirectional in that the presence of a directive in a request does not
imply that the same directive is to be given in the response.
</para><para>Note that HTTP/1.0 caches might not implement Cache-Control and
might only implement Pragma: no-cache (see section 14.32 in RFC2616).
</para><para>Cache directives MUST be passed through by a proxy or gateway
application, regardless of their significance to that application, since the
directives might be applicable to all recipients along the request/response
chain. It is not possible to specify a cache- directive for a specific cache
</para>
<para>
When a directive appears without any 1#field-name parameter, the
directive applies to the entire request or response. When such a
directive appears with a 1#field-name parameter, it applies only to
the named field or fields, and not to the rest of the request or
response. This mechanism supports extensibility; implementations of
future versions of the HTTP protocol might apply these directives to
header fields not defined in HTTP/1.1.
</para>
<para>
The cache-control directives can be broken down into these general
categories:
<list type="bullet">
<item>
Restrictions on what are cacheable; these may only be imposed by
the origin server.
</item><item>
Restrictions on what may be stored by a cache; these may be
imposed by either the origin server or the user agent.
</item><item>
Modifications of the basic expiration mechanism; these may be
imposed by either the origin server or the user agent.
</item><item>
Controls over cache revalidation and reload; these may only be
imposed by a user agent.
</item><item>
Control over transformation of entities.
</item><item>
Extensions to the caching system.
</item>
</list>
</para>
</remarks>
</member>
<member name="F:HttpServer.Headers.CacheControlHeader.NAME">
<summary>
Header name
</summary>
</member>
<member name="P:HttpServer.Headers.CacheControlHeader.Name">
<summary>
Gets header name
</summary>
</member>
<member name="T:HttpServer.Modules.FileModule">
<summary>
Serves files in the web server.
</summary>
<example>
<code>
FileModule fileModule = new FileModule();
fileModule.Resources.Add(new FileResources("/", "C:\\inetpub\\myweb"));
</code>
</example>
</member>
<member name="M:HttpServer.Modules.FileModule.#ctor">
<summary>
Initializes a new instance of the <see cref="T:HttpServer.Modules.FileModule"/> class.
</summary>
<exception cref="T:System.ArgumentNullException"><c>baseUri</c> or <c>basePath</c> is <c>null</c>.</exception>
</member>
<member name="M:HttpServer.Modules.FileModule.AddDefaultMimeTypes">
<summary>
Mime types that this class can handle per default
</summary>
<remarks>
Contains the following mime types:
<list type="table">
<item><term><![CDATA[txt]]></term><value><![CDATA[text/plain]]></value></item>
<item><term><![CDATA[html]]></term><value><![CDATA[text/html]]></value></item>
<item><term><![CDATA[htm]]></term><value><![CDATA[text/html]]></value></item>
<item><term><![CDATA[jpg]]></term><value><![CDATA[image/jpg]]></value></item>
<item><term><![CDATA[jpeg]]></term><value><![CDATA[image/jpg]]></value></item>
<item><term><![CDATA[bmp]]></term><value><![CDATA[image/bmp]]></value></item>
<item><term><![CDATA[gif]]></term><value><![CDATA[image/gif]]></value></item>
<item><term><![CDATA[png]]></term><value><![CDATA[image/png]]></value></item>
<item><term><![CDATA[ico]]></term><value><![CDATA[image/vnd.microsoft.icon]]></value></item>
<item><term><![CDATA[css]]></term><value><![CDATA[text/css]]></value></item>
<item><term><![CDATA[gzip]]></term><value><![CDATA[application/x-gzip]]></value></item>
<item><term><![CDATA[zip]]></term><value><![CDATA[multipart/x-zip]]></value></item>
<item><term><![CDATA[tar]]></term><value><![CDATA[application/x-tar]]></value></item>
<item><term><![CDATA[pdf]]></term><value><![CDATA[application/pdf]]></value></item>
<item><term><![CDATA[rtf]]></term><value><![CDATA[application/rtf]]></value></item>
<item><term><![CDATA[xls]]></term><value><![CDATA[application/vnd.ms-excel]]></value></item>
<item><term><![CDATA[ppt]]></term><value><![CDATA[application/vnd.ms-powerpoint]]></value></item>
<item><term><![CDATA[doc]]></term><value><![CDATA[application/application/msword]]></value></item>
<item><term><![CDATA[js]]></term><value><![CDATA[application/javascript]]></value></item>
<item><term><![CDATA[au]]></term><value><![CDATA[audio/basic]]></value></item>
<item><term><![CDATA[snd]]></term><value><![CDATA[audio/basic]]></value></item>
<item><term><![CDATA[es]]></term><value><![CDATA[audio/echospeech]]></value></item>
<item><term><![CDATA[mp3]]></term><value><![CDATA[audio/mpeg]]></value></item>
<item><term><![CDATA[mp2]]></term><value><![CDATA[audio/mpeg]]></value></item>
<item><term><![CDATA[mid]]></term><value><![CDATA[audio/midi]]></value></item>
<item><term><![CDATA[wav]]></term><value><![CDATA[audio/x-wav]]></value></item>
<item><term><![CDATA[swf]]></term><value><![CDATA[application/x-shockwave-flash]]></value></item>
<item><term><![CDATA[avi]]></term><value><![CDATA[video/avi]]></value></item>
<item><term><![CDATA[rm]]></term><value><![CDATA[audio/x-pn-realaudio]]></value></item>
<item><term><![CDATA[ram]]></term><value><![CDATA[audio/x-pn-realaudio]]></value></item>
<item><term><![CDATA[aif]]></term><value><![CDATA[audio/x-aiff]]></value></item>
</list>
</remarks>
</member>
<member name="M:HttpServer.Modules.FileModule.SendFile(HttpServer.IHttpContext,HttpServer.IResponse,System.IO.Stream)">
<summary>
Will send a file to client.
</summary>
<param name="context">HTTP context containing outbound stream.</param>
<param name="response">Response containing headers.</param>
<param name="stream">File stream</param>
</member>
<member name="M:HttpServer.Modules.FileModule.Process(HttpServer.RequestContext)">
<summary>
Process a request.
</summary>
<param name="context">Request information</param>
<returns>What to do next.</returns>
<exception cref="T:HttpServer.InternalServerException">Failed to find file extension</exception>
<exception cref="T:HttpServer.ForbiddenException">Forbidden file type.</exception>
</member>
<member name="P:HttpServer.Modules.FileModule.ContentTypes">
<summary>
Gets a list with all allowed content types.
</summary>
<remarks>All other mime types will result in <see cref="F:System.Net.HttpStatusCode.Forbidden"/>.</remarks>
</member>
<member name="P:HttpServer.Modules.FileModule.Resources">
<summary>
Gets provider used to add files to the file manager,
</summary>
</member>
<member name="T:HttpServer.HttpFileCollection">
<summary>
Collection of files.
</summary>
</member>
<member name="M:HttpServer.HttpFileCollection.Contains(System.String)">
<summary>
Checks if a file exists.
</summary>
<param name="name">Name of the file (form item name)</param>
<returns></returns>
</member>
<member name="M:HttpServer.HttpFileCollection.Add(HttpServer.HttpFile)">
<summary>
Add a new file.
</summary>
<param name="file">File to add.</param>
</member>
<member name="M:HttpServer.HttpFileCollection.Clear">
<summary>
Remove all files from disk.
</summary>
</member>
<member name="P:HttpServer.HttpFileCollection.Item(System.String)">
<summary>
Get a file
</summary>
<param name="name">Name in form</param>
<returns>File if found; otherwise <c>null</c>.</returns>
</member>
<member name="P:HttpServer.HttpFileCollection.Count">
<summary>
Gets number of files
</summary>
</member>
</members>
</doc>