From 6459a7e3644f528b791251508f58a258280df6ef Mon Sep 17 00:00:00 2001 From: high Date: Sun, 4 Sep 2011 22:26:31 -0400 Subject: [PATCH 01/46] binaries added --- HttpBins/HttpServer.dll | Bin 0 -> 156160 bytes HttpBins/HttpServer.pdb | Bin 0 -> 456192 bytes HttpBins/HttpServer.xml | 6183 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 6183 insertions(+) create mode 100644 HttpBins/HttpServer.dll create mode 100644 HttpBins/HttpServer.pdb create mode 100644 HttpBins/HttpServer.xml diff --git a/HttpBins/HttpServer.dll b/HttpBins/HttpServer.dll new file mode 100644 index 0000000000000000000000000000000000000000..bf54306832eaeb2d4da67c8d86ab9460073802ac GIT binary patch literal 156160 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 {uZ{=TN-kG; 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�{d$M?OcI<@2IhqyTIl1r+&TM$!?f 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 literal 0 HcmV?d00001 diff --git a/HttpBins/HttpServer.pdb b/HttpBins/HttpServer.pdb new file mode 100644 index 0000000000000000000000000000000000000000..f1cfd83f7158a5dd3669271cedc0b7b078eb7207 GIT binary patch literal 456192 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

UO`A5I`%1SzX=-im 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 z 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 Q5kwL-Q3*sP@ZU|~U&oikF#rGn literal 0 HcmV?d00001 diff --git a/HttpBins/HttpServer.xml b/HttpBins/HttpServer.xml new file mode 100644 index 00000000..fff737b5 --- /dev/null +++ b/HttpBins/HttpServer.xml @@ -0,0 +1,6183 @@ + + + + HttpServer + + + +

+ Used to read from a string object. + + + + + Base interface to read string tokens from different sources. + + + + + Assign a new buffer + + Buffer to process. + Where to start process buffer + Buffer length + + + + Assign a new buffer + + Buffer to process + + + + Consume current character. + + + + + Consume specified characters + + One or more characters. + + + + Consumes horizontal white spaces (space and tab). + + + + + Consume horizontal white spaces and the specified character. + + Extra character to consume + + + + Checks if one of the remaining bytes are a specified character. + + Character to find. + true if found; otherwise false. + + + + Read a character. + + Character if not EOF; otherwise null. + + + + Get a text line. + + + Will merge multiline headers. + + + + Read quoted string + + string if current character (in buffer) is a quote; otherwise null. + + + + Read until end of string, or to one of the delimiters are found. + + characters to stop at + A string (can be ). + + Will not consume the delimiter. + + + + + Read until end of string, or to one of the delimiters are found. + + A string (can be ). + + Will not consume the delimiter. + + + + + Read to end of buffer, or until specified delimiter is found. + + Delimiter to find. + A string (can be ). + + Will not consume the delimiter. + + + + + Will read until specified delimiter is found. + + Character to stop at. + A string if the delimiter was found; otherwise null. + + Will trim away spaces and tabs from the end. + Will not consume the delimiter. + + + + + Read until one of the delimiters are found. + + characters to stop at + A string if one of the delimiters was found; otherwise null. + + Will trim away spaces and tabs from the end. + Will not consume the delimiter. + + + + + Read until a horizontal white space occurs. + + A string if a white space was found; otherwise null. + + + + Gets current character + + if end of buffer. + + + + Gets if end of buffer have been reached + + + + + Gets if more bytes can be processed. + + + + + Gets or sets current position in buffer. + + + THINK before you manually change the position since it can blow up + the whole parsing in your face. + + + + + Gets total length of buffer. + + + + + Gets or sets line number. + + + + + Gets next character + + if end of buffer. + + + + Gets number of bytes left. + + + + + Initializes a new instance of the class. + + Buffer to process. + + + + Initializes a new instance of the class. + + + + + Assign a new buffer + + Buffer to process. + Where to start process buffer + Buffer length + MUST be of type . + buffer needs to be of type string + + + + Assign a new buffer + + Buffer to process + MUST be of type . + buffer needs to be of type string + + + + Consume current character. + + + + + Get a text line. + + + Will merge multiline headers. + + + + Read quoted string + + string if current character (in buffer) is a quote; otherwise null. + + + + Read until end of string, or to one of the delimiters are found. + + characters to stop at + A string (can be ). + InvalidOperationException. + + + + Read until end of string, or to one of the delimiters are found. + + A string (can be ). + + Will not consume the delimiter. + + + + + Read to end of buffer, or until specified delimiter is found. + + Delimiter to find. + A string (can be ). + InvalidOperationException. + + + + Consume specified characters + + One or more characters. + + + + Consumes horizontal white spaces (space and tab). + + + + + Read a character. + + + Character if not EOF; otherwise null. + + + + + Will read until specified delimiter is found. + + Character to stop at. + + A string if the delimiter was found; otherwise null. + + + Will trim away spaces and tabs from the end. + Will not consume the delimiter. + + InvalidOperationException. + + + + Read until one of the delimiters are found. + + characters to stop at + + A string if one of the delimiters was found; otherwise null. + + + Will not consume the delimiter. + + InvalidOperationException. + + + + Read until a horizontal white space occurs (or end, or end of line). + + + A string if a white space was found; otherwise null. + + + + + Consume horizontal white spaces and the specified character. + + Extra character to consume + + + + Checks if one of the remaining bytes are a specified character. + + Character to find. + + true if found; otherwise false. + + + + + Gets or sets line number. + + + + + Gets if end of buffer have been reached + + + + + + Gets if more bytes can be processed. + + + + + + Gets next character + + if end of buffer. + + + + Gets current character + + if end of buffer. + + + + Gets or sets current position in buffer. + + + THINK before you manually change the position since it can blow up + the whole parsing in your face. + + + + + Gets total length of buffer. + + + + + + Gets number of bytes left. + + + + + Reads strings from a byte array. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Encoding to use when converting byte array to strings. + + + + Initializes a new instance of the class. + + Buffer to read from. + Encoding to use when converting byte array to strings. + + + + Assign a new buffer + + Buffer to process. + Where to start process buffer + Buffer length + Buffer needs to be a byte array + + + + Assign a new buffer + + Buffer to process + Buffer needs to be a byte array + + + + Consume current character. + + + + + Get a text line. + + + Will merge multi line headers. + + + + Read quoted string + + string if current character (in buffer) is a quote; otherwise null. + + + + Read until end of string, or to one of the delimiters are found. + + characters to stop at + + A string (can be ). + + + Will not consume the delimiter. + + InvalidOperationException. + + + + Read until end of string, or to one of the delimiters are found. + + A string (can be ). + + Will not consume the delimiter. + + + + + Read to end of buffer, or until specified delimiter is found. + + Delimiter to find. + + A string (can be ). + + + Will not consume the delimiter. + + InvalidOperationException. + + + + Consume specified characters + + One or more characters. + + + + Consumes horizontal white spaces (space and tab). + + + + + Consume horizontal white spaces and the specified character. + + Extra character to consume + + + + Read a character. + + + Character if not EOF; otherwise null. + + + + + Will read until specified delimiter is found. + + Character to stop at. + + A string if the delimiter was found; otherwise null. + + + Will trim away spaces and tabs from the end. + InvalidOperationException. + + + + Read until one of the delimiters are found. + + characters to stop at + + A string if one of the delimiters was found; otherwise null. + + + Will not consume the delimiter. + + InvalidOperationException. + + + + Read until a horizontal white space occurs. + + A string if a white space was found; otherwise null. + + + + Checks if one of the remaining bytes are a specified character. + + Character to find. + + true if found; otherwise false. + + + + + Gets or sets line number. + + + + + Gets if end of buffer have been reached + + + + + + Gets if more bytes can be processed. + + + + + + Gets next character + + if end of buffer. + + + + Gets current character + + if end of buffer. + + + + Gets or sets current position in buffer. + + + THINK before you manually change the position since it can blow up + the whole parsing in your face. + + + + + Gets total length of buffer. + + + + + + Gets number of bytes left. + + + + + Event arguments used when a new header have been parsed. + + + + + Initializes a new instance of the class. + + Name of header. + Header value. + Name cannot be empty + value is null. + + + + Initializes a new instance of the class. + + + + + Gets or sets header name. + + + + + Gets or sets header value. + + + + + Resource information. + + + Used by content providers to be able to get information + on resources (views, files etc). + + + + + Gets or sets date when resource was modified. + + + if not used. + + + Should always be universal time. + + + + + Gets or sets resource stream. + + + + + Loads resources from a specific location (such as assembly, hard drive etc). + + + + + Checks if a resource exists in the specified directory + + Uri path to resource + true if resource was found; otherwise false. + + + if (resources.Exists("/files/user/user.png")) + Debug.WriteLine("Resource exists."); + + + + + + Find all views in a folder/path. + + Absolute Uri path to files that should be found, can end with wild card. + Collection to add all view names to. + + + + Gets a resource. + + Uri path to resource. + Resource + Uri contains forbidden characters. + + + Resource resource = resources.Get("/files/user/user.png"); + + + + + + Parses Cookie header. + + + + + Used to parse header values + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Used by to filter out unwanted connections. + + + + + Initializes a new instance of the class. + + The socket. + + + + Gets or sets if socket can be accepted. + + + + + Gets socket. + + + + + Http listener + + + + + Start listener. + + Number of pending accepts. + + Make sure that you are subscribing on first. + + Listener have already been started. + Failed to start socket. + Invalid port number. + + + + Stop listener. + + + + + Gets listener address. + + + + + Gets if listener is secure. + + + + + Gets if listener have been started. + + + + + Gets or sets logger. + + + + + Gets listening port. + + + + + Gets the maximum content size. + + The content length limit. + + Used when responding to 100-continue. + + + + + A new request have been received. + + + + + Can be used to reject certain clients. + + + + + A HTTP exception have been thrown. + + + Fill the body with a user friendly error page, or redirect to somewhere else. + + + + + Collection of files. + + + + + Checks if a file exists. + + Name of the file (form item name) + + + + + Add a new file. + + File to add. + + + + Remove all files from disk. + + + + + Get a file + + Name in form + File if found; otherwise null. + + + + Gets number of files + + + + + Custom network stream to mark sockets as reusable when disposing the stream. + + + + + Creates a new instance of the class for the specified . + + + The that the will use to send and receive data. + + + The parameter is null. + + + The parameter is not connected. + -or- + The property of the parameter is not . + -or- + The parameter is in a nonblocking state. + + + + + Initializes a new instance of the class for the specified with the specified ownership. + + + The that the will use to send and receive data. + + + Set to true to indicate that the will take ownership of the ; otherwise, false. + + + The parameter is null. + + + The parameter is not connected. + -or- + the value of the property of the parameter is not . + -or- + the parameter is in a nonblocking state. + + + + + Creates a new instance of the class for the specified with the specified access rights. + + + The that the will use to send and receive data. + + + A bitwise combination of the values that specify the type of access given to the over the provided . + + + The parameter is null. + + + The parameter is not connected. + -or- + the property of the parameter is not . + -or- + the parameter is in a nonblocking state. + + + + + Creates a new instance of the class for the specified with the specified access rights and the specified ownership. + + + The that the will use to send and receive data. + + + A bitwise combination of the values that specifies the type of access given to the over the provided . + + + Set to true to indicate that the will take ownership of the ; otherwise, false. + + + The parameter is null. + + + The parameter is not connected. + -or- + The property of the parameter is not . + -or- + The parameter is in a nonblocking state. + + + + + Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. + + + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Request sent to a HTTP server. + + + + + + Base interface for request and response. + + + + + Add a new header. + + + + + + + Add a new header. + + Header to add. + + + + Gets body stream. + + + + + Size of the body. MUST be specified before sending the header, + unless property Chunked is set to true. + + + + + Kind of content in the body + + Default is text/html + + + + Gets or sets encoding + + + + + Gets headers. + + + + + Get a header + + Type that it should be cast to + Name of header + Header if found and casted properly; otherwise null. + + + + Gets or sets connection header. + + + + + Gets cookies. + + + + + Gets all uploaded files. + + + + + Gets form parameters. + + + + + Gets or sets HTTP version. + + + + + Gets if request is an Ajax request. + + + + + Gets or sets HTTP method. + + + + + Gets query string and form parameters + + + + + Gets query string. + + + + + Gets requested URI. + + + + + Serves files in the web server. + + + + FileModule fileModule = new FileModule(); + fileModule.Resources.Add(new FileResources("/", "C:\\inetpub\\myweb")); + + + + + + HTTP Module + + + + + Process a request. + + Request information + What to do next. + + + + Initializes a new instance of the class. + + baseUri or basePath is null. + + + + Mime types that this class can handle per default + + + Contains the following mime types: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Will send a file to client. + + HTTP context containing outbound stream. + Response containing headers. + File stream + + + + Process a request. + + Request information + What to do next. + Failed to find file extension + Forbidden file type. + + + + Gets a list with all allowed content types. + + All other mime types will result in . + + + + Gets provider used to add files to the file manager, + + + + + An exception that can't be handled by the library have been thrown. + + + + + Initializes a new instance of the class. + + The exception. + + + + Gets caught exception. + + + + + Helper for content types. + + + + + Decodes forms that have multiple sections. + + + http://www.faqs.org/rfcs/rfc1867.html + + + + + Decodes body stream. + + + + + Decode body stream + + Stream containing the content + Content type header + Stream encoding + Decoded data. + Body format is invalid for the specified content type. + Something unexpected failed. + + + + All content types that the decoder can parse. + + A collection of all content types that the decoder can handle. + + + + form-data + + + + + multipart/form-data + + + + + Decode body stream + + Stream containing the content + Content type header + Stream encoding + Decoded data. + Body format is invalid for the specified content type. + Something unexpected failed. + stream is null. + + + + All content types that the decoder can parse. + + A collection of all content types that the decoder can handle. + + + + A HTTP parser using delegates to which parsing methods. + + + + + Initializes a new instance of the class. + + + + + Parser method to copy all body bytes. + + + Needed since a TCP packet can contain multiple messages + after each other, or partial messages. + + + + Try to find a header name. + + + + + + Get header values. + + + Will also look for multi header values and automatically merge them to one line. + Content length is not a number. + + + + Toggle body bytes event. + + + + + + + + Raise the event, since we have successfully parsed a message and it's body. + + + + + First message line. + + Will always contain three elements. + Used to raise the or event + depending on the words in the array. + BadRequestException. + + + + Continue parsing a message + + Byte buffer containing bytes + Where to start the parsing + Number of bytes to parse + index where the parsing stopped. + Parsing failed. + + + + Parses the first line in a request/response. + + true if first line is well formatted; otherwise false. + Invalid request/response line. + + + + Reset parser to initial state. + + + + + Gets or sets current line number. + + + + + The request line has been parsed. + + + + + Response line has been parsed. + + + + + Parsed a header. + + + + + Received body bytes. + + + + + A message have been successfully parsed. + + + + + Used to be able to quickly swap parser method. + + + + + + Default log filter implementation. + + + + + Determines which classes can log + + + + + Checks if the specified type can send + log entries at the specified level. + + Log level + Type that want to write a log entry. + true if logging is allowed; otherwise false. + + + + Add a name space filter. + + Name space to add filter for. + Minimum log level required. + + + // 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); + + + + + + Used to specify standard filter rules + + + Parser can only display errors. Transports only warnings. + + + + + Add filter for a type + + Type to add filter for. + Minimum log level required. + + + // 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); + + + + + + Add filter for a type + + Type to add filter for. + Minimum log level required. + + + // 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); + + + Type could not be identified. + + + + Checks if the specified type can send + log entries at the specified level. + + Log level + Type that want to write a log entry. + true if logging is allowed; otherwise false. + + + No filters = everything logged. = no logs. Don't use a rule with '*' or '.*' + + + + User have specified a wild card filter. + + + Wild card filters are used to log a name space and + all it's children name spaces. + + + + + Factory implementation used to create logs. + + + + + Create a new logger. + + Type that requested a logger. + Logger for the specified type; + + MUST ALWAYS return a logger. Return if no logging + should be used. + + + + + Response to a request. + + + + + Redirect user. + + Where to redirect to. + + Any modifications after a redirect will be ignored. + + + + + Gets connection type. + + + + + Gets cookies. + + + + + Gets HTTP version. + + + Default is HTTP/1.1 + + + + + Information about why a specific status code was used. + + + + + Status code that is sent to the client. + + Default is + + + + Gets or sets content type + + + + + Rules are used to perform operations before a request is being handled. + Rules can be used to create routing etc. + + + + + Process the incoming request. + + Request context information. + Processing result. + If any parameter is null. + + + + Used to access resources. + + + + + Add a new resource loader. + + Provider to add. + Manager have been started. + + + + Check if a resource exists. + + Uri to check + true if found; otherwise false. + + + if (manager.Exists("/views/user/view.haml")) + return true + + + + + + Get a resource. + + Uri path to resource. + Resource if found; otherwise null. + + + Resource resource = manager.Get("/views/user/view.haml"); + + + + + + Start manager. + + + + + Gets number of resource providers + + + + + Parses "Date" header. + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Content-type + + + + + Header in a message + + + Important! Each header should override ToString() + and return it's data correctly formatted as a HTTP header value. + + + + + Gets header name + + + + + Gets value as it would be sent back to client. + + + + + Header name. + + + + + Initializes a new instance of the class. + + Type of the content. + Value parameters. + + + + Initializes a new instance of the class. + + Type of the content. + + + + Returns data formatted as a HTTP header value. + + + A that represents the current . + + + + + Gets all parameters. + + + + + Gets content type. + + + + + Gets header name + + + + + Used to get or set properties on objects. + + + This class should be a bit faster than the standard reflection. + + + + + Get cached type. + + Type to get/set properties in + Type to use + + + + Flyweight design pattern implementation. + + Type of object. + + + + Initializes a new instance of the class. + + How large buffers to allocate. + + + + Get an object. + + Created object. + Will create one if queue is empty. + + + + Enqueues the specified buffer. + + Object to enqueue. + Buffer is is less than the minimum requirement. + + + + Used to create new objects. + + Type of objects to create. + Newly created object. + . + + + + Used to load/store sessions in the server. + + + + + Initializes a new instance of the class. + + Web server that the provider is for.. + Store to use. + + + + Initializes a new instance of the class. + + The server. + + Uses a file store. + + + + + Loads a session for all requests that got the session cookie. + + The sender. + The instance containing the event data. + + + + Gets current session + + Session if set, otherwise null. + + + + Gets or sets the session life time in minutes. + + The session life time. + + + + A session have been loaded. Use to access it. + + + + + Used to build headers. + + + + + Add a parser + + Header that the parser is for. + Parser implementation + + Will replace any existing parser for the specified header. + + + + + Add all default (built-in) parsers. + + + Will not replace previously added parsers. + + + + + Create a header parser + + implementation. + + + Uses attribute to find which headers + the parser is for. + + Will not replace previously added parsers. + + + + + Parse a header. + + Name of header + Header value + Header. + Value is not a well formatted header value. + + + + Arguments used when more body bytes have come. + + + + + Initializes a new instance of the class. + + buffer that contains the received bytes. + offset in buffer where to start processing. + number of bytes from that should be parsed. + buffer is null. + + + + Initializes a new instance of the class. + + + + + Gets or sets buffer that contains the received bytes. + + + + + Gets or sets number of bytes from that should be parsed. + + + + + Gets or sets offset in buffer where to start processing. + + + + + redirects from one URL to another. + + + + + Initializes a new instance of the class. + + Absolute path (no server name) + Absolute path (no server name) + + server.Add(new RedirectRule("/", "/user/index")); + + + + + Initializes a new instance of the class. + + Absolute path (no server name) + Absolute path (no server name) + true if request should be redirected, false if the request URI should be replaced. + + server.Add(new RedirectRule("/", "/user/index")); + + + + + Process the incoming request. + + Request context. + Processing result. + If any parameter is null. + + + + Gets string to match request URI with. + + Is compared to request.Uri.AbsolutePath + + + + Gets whether the server should redirect the client instead of simply modifying the URI. + + + false means that the rule will replace + the current request URI with the new one from this class. + true means that a redirect response is sent to the client. + + + + + Gets where to redirect. + + + + + cookie sent by the client/browser + + + + + + Constructor. + + cookie identifier + cookie content + id or content is null + id is empty + + + + Gets the cookie HTML representation. + + cookie string + + + + Gets the cookie identifier. + + + + + Gets value. + + + Set to null to remove cookie. + + + + + A request have been parsed successfully by the server. + + + + + Initializes a new instance of the class. + + Received request. + + + + Gets received request. + + + + + Context that received a HTTP request. + + + + + Disconnect context. + + + + + Gets if current context is using a secure connection. + + + + + Gets logger. + + + + + Gets remote end point + + + + + Gets stream used to send/receive data to/from remote end point. + + + + The stream can be any type of stream, do not assume that it's a network + stream. For instance, it can be a or a ZipStream. + + + + + + Gets the currently handled request + + The request. + + + + Gets the response that is going to be sent back + + The response. + + + + File sent from remote end. + + + + + Gets or sets content type. + + + + + Gets or sets name in form. + + + + + Gets or sets name original file name + + + + + Gets or sets filename for locally stored file. + + + + + Client X.509 certificate, X.509 chain, and any SSL policy errors encountered + during the SSL stream creation + + + + + Initializes a new instance of the class. + + The certificate. + Client security certificate chain. + Any SSL policy errors encountered during the SSL stream creation. + + + + Client security certificate + + + + + Client security certificate chain + + + + + Any SSL policy errors encountered during the SSL stream creation + + + + + Provides sessions. + + Type of session object + + Will always use files for sessions (utilizing the binary formatter), but can + also cache them in memory. + + 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). + + + + + + Initializes a new instance of the class. + + Session type must use [Serializable] attribute. + + + + Create a new session. + + + + + + Load session + + Id of session. + Session if found; otherwise null. + sessionId is null. + + + + Load session when a new request comes in. + + + + + + + Save a session to disk. + + Session to write to disk. + + You are responsible for writing sessions to disk if you are not using caching. + + + + + Start the session system and hook + + + + + + Stop session handling + + + + + Gets or sets session cookie name + + + + + Gets or sets cache + + + + + Gets current session. + + + + + Gets or sets number of seconds before a session expired. + + + A session have expired if nothing have accessed it for X seconds. This + class modifies the write time each time it's accessed. + + + + + Determines if cookie should be set in the response. + + + + + Invoked when a session have been changed and should be written to disc. + + + + + Base class for sessions. + + + Your class must be tagged with attribute to be able to use sessions. + + + + + The session have been changed and should be written to disk. + + + + + Session have been changed. + + + + + Gets or sets when session was accessed last + + + + + Gets current session. + + + + + Gets or sets session id. + + + + + Gets or sets when the session was last written to disk. + + + + + Used when the request line have been successfully parsed. + + + + + Initializes a new instance of the class. + + The HTTP method. + The URI path. + The HTTP version. + + + + Initializes a new instance of the class. + + + + + Gets or sets HTTP method. + + + Should be one of the methods declared in . + + + + + Gets or sets requested URI path. + + + + + Gets or sets the version of the SIP protocol that the client want to use. + + + + + cookie being sent back to the browser. + + + + + + Constructor. + + cookie identifier + cookie content + cookie expiration date. Use for session cookie. + id or content is null + id is empty + + + + Create a new cookie + + name identifying the cookie + cookie value + when the cookie expires. Setting will delete the cookie when the session is closed. + Path to where the cookie is valid + Domain that the cookie is valid for. + + + + Create a new cookie + + Name and value will be used + when the cookie expires. + + + + Gets the cookie HTML representation. + + cookie string + + + + Gets when the cookie expires. + + means that the cookie expires when the session do so. + + + + Gets path that the cookie is valid under. + + + + + Used to define which headers a parse is for. + + + + + Initializes a new instance of the class. + + Name of the header. + + + + Gets name of header that this parser is for. + + + + + Collection of headers. + + + + + Gets a header + + header name. + header if found; otherwise null. + + + + Something failed during parsing. + + + + + Request couldn't be parsed successfully. + + + + + Exception thrown from HTTP server. + + + + + Initializes a new instance of the class. + + HTTP status code. + Exception description. + + + + Initializes a new instance of the class. + + HTTP status code. + Exception description. + Inner exception. + + + + Gets HTTP status code. + + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Inner exception. + + + + Provides resources. + + + + + Get all view names from a folder. + + Path to find views in. + A collection of view names (without path). + + + + Add a new resource loader. + + Provider to add. + Manager have been started. + + + + Start manager. + + + + + Check if a resource exists. + + Uri to check + true if found; otherwise false. + + + if (manager.Exists("/views/user/view.haml")) + return true + + + + + + Get a resource. + + Uri path to resource. + Resource if found; otherwise null. + + + Resource resource = manager.Get("/views/user/view.haml"); + + + + + + Gets number of resource providers + + + + + Collection of parameters. + + + or is not used since each parameter can + have multiple values. + + + + + Collection of parameters + + + + + Get a parameter. + + + + + + + Add a query string parameter. + + Parameter name + Value + + + + Checks if the specified parameter exists + + Parameter name. + true if found; otherwise false; + + + + Gets number of parameters. + + + + + Gets last value of an parameter. + + Parameter name + String if found; otherwise null. + + + + Initializes a new instance of the class. + + Collections to merge. + + Later collections will overwrite parameters from earlier collections. + + + + + Initializes a new instance of the class. + + + + + Get a list of string arrays. + + + + + + Get parameters + + Sub array (text array) + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Get a parameter. + + + + + + + Add a query string parameter. + + Parameter name + Value + + + + Checks if the specified parameter exists + + Parameter name. + true if found; otherwise false; + + + + Gets number of parameters. + + + + + Gets last value of an parameter. + + Parameter name + String if found; otherwise null. + + + + Result of processing. + + + + + Continue with the next handler + + + + + No more handlers can process the request. + + + The server will process the response object and + generate a HTTP response from it. + + + + + Response have been sent back by the handler. + + + 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. + + + + + A HTTP context + + + + + + + + Initializes a new instance of the class. + + Socket received from HTTP listener. + Context used to parse incoming messages. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Disconnect context. + + + + + Close and release socket. + + + + + Create stream used to send and receive bytes from the socket. + + Socket to wrap + Stream + Stream could not be created. + + + + Interpret incoming data. + + + + + + A request was received from the parser. + + + + + + + Parse all complete requests in buffer. + + + offset in buffer where parsing stopped. + Parsing failed. + + + + Start content. + + A socket operation failed. + Reading from stream failed. + + + + Gets currently executing HTTP context. + + + + + Gets or sets description + + + + + gets factory used to build request objects + + + + + Gets socket + + + + + Gets remove end point + + + + + Gets network stream. + + + + + Gets the currently handled request + + The request. + + + + Gets the response that is going to be sent back + + The response. + + + + Gets logger. + + + + + Gets if current context is using a secure connection. + + + + + Triggered for all requests in the server (after the response have been sent) + + + + + Triggered for current request (after the response have been sent) + + + + + A new request have been received. + + + + + A new request have been received (invoked for ALL requests) + + + + + Client have been disconnected. + + + + + Client asks if he may continue. + + + If the body is too large or anything like that you should respond . + + + + + Used to store all headers that that aren't recognized. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Gets or sets value + + + + + Gets header name + + + + + 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. + + + + 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. + + Message headers listed in the Connection header MUST NOT include + end-to-end headers, such as Cache-Control. + + 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, + + Connection: close + + 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. + + HTTP/1.1 applications that do not support persistent connections MUST + include the "close" connection option in every message. + + 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. + + + + + + Header name + + + + + Default connection header for HTTP/1.0 + + + + + Default connection header for HTTP/1.1 + + + + + Initializes a new instance of the class. + + Connection type. + The parameters. + + + + Initializes a new instance of the class. + + The type. + + + + Returns data formatted as a HTTP header value. + + + A that represents the current . + + + + + Gets connection parameters. + + + + + Gets or sets connection type + + + + + Gets header name + + + + + Type of HTTP connection + + + + + Connection is closed after each request-response + + + + + Connection is kept alive for X seconds (unless another request have been made) + + + + + Parameter in + + + + + Gets *last* value. + + + Parameters can have multiple values. This property will always get the last value in the list. + + String if any value exist; otherwise null. + + + + Gets or sets name. + + + + + Gets a list of all values. + + + + + A parameter in . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Gets last value. + + + Parameters can have multiple values. This property will always get the last value in the list. + + String if any value exist; otherwise null. + + + + Gets or sets name. + + + + + Gets a list of all values. + + + + + Secure version of the HTTP listener. + + + + + Http listener. + + + + + Initializes a new instance of the class. + + The address. + The port. + + + + Initializes a new instance of the class. + + The address. + The port. + The HTTP factory. + + + + Creates a new instance with default factories. + + Address that the listener should accept connections on. + Port that listener should accept connections on. + Created HTTP listener. + + + + Creates a new instance with default factories. + + Address that the listener should accept connections on. + Port that listener should accept connections on. + Factory used to create different types in the framework. + Created HTTP listener. + + + + Creates a new instance with default factories. + + Address that the listener should accept connections on. + Port that listener should accept connections on. + Certificate to use + Created HTTP listener. + + + + Create a new context + + Accepted socket + A new context. + + + Throwing exception if in debug mode and not exception handler have been specified. + + + + Start listener. + + Number of pending accepts. + + Make sure that you are subscribing on first. + + Listener have already been started. + Failed to start socket. + Invalid port number. + + + + Stop listener. + + + + + Gets HTTP factory used to create types used by this HTTP library. + + + + + Gets or sets the maximum number of bytes that the request body can contain. + + The content length limit. + + + Used when responding to 100-continue. + + + 0 = turned off. + + + + + + Gets listener address. + + + + + Gets if listener is secure. + + + + + Gets if listener have been started. + + + + + Gets or sets logger. + + + + + Gets listening port. + + + + + A new request have been received. + + + + + Can be used to reject certain clients. + + + + + A HTTP exception have been thrown. + + + Fill the body with a user friendly error page, or redirect to somewhere else. + + + + + Client asks if he may continue. + + + If the body is too large or anything like that you should respond . + + + + + Initializes a new instance of the class. + + Address to accept new connections on. + Port to accept connections on. + Certificate securing the connection. + + + + Create a new context + + Accepted socket + A new context. + + Factory is assigned by the on each incoming request. + + + + + Gets if listener is secure. + + + + + + Gets or sets SSL protocol. + + + + + Gets or sets if client certificate should be used. + + + + + A response have been received. + + + + + Initializes a new instance of the class. + + The response. + + + + Gets or sets response. + + + + + Implements HTTP Digest authentication. It's more secure than Basic auth since password is + encrypted with a "key" from the server. + + + Keep in mind that the password is encrypted with MD5. Use a combination of SSL and digest auth to be secure. + + + + + Authenticates requests + + + + + Authenticate request + + Authorization header send by web client + Realm to authenticate in, typically a domain name. + HTTP Verb used in the request. + User if authentication was successful; otherwise null. + + + + Create a authentication challenge. + + Realm that the user should authenticate in + A WWW-Authenticate header. + If realm is empty or null. + + + + Gets authenticator scheme + + + digest + + + + + Initializes a new instance of the class. + + Supplies users during authentication process. + + + + Used by test classes to be able to use hardcoded values + + + + + An authentication response have been received from the web browser. + Check if it's correct + + Contents from the Authorization header + Realm that should be authenticated + GET/POST/PUT/DELETE etc. + + Authentication object that is stored for the request. A user class or something like that. + + if authenticationHeader is invalid + If any of the parameters is empty or null. + + + + Encrypts parameters into a Digest string + + Realm that the user want to log into. + User logging in + Users password. + HTTP method. + Uri/domain that generated the login prompt. + Quality of Protection. + "Number used ONCE" + Hexadecimal request counter. + "Client Number used ONCE" + Digest encrypted string + + + + + + Md5 hex encoded "userName:realm:password", without the quotes. + Md5 hex encoded "method:uri", without the quotes + Quality of Protection + "Number used ONCE" + Hexadecimal request counter. + Client number used once + + + + + Create a authentication challenge. + + Realm that the user should authenticate in + A correct auth request. + If realm is empty or null. + + + + Gets the current nonce. + + + + + + Gets the Md5 hash bin hex2. + + To be hashed. + + + + + determines if the nonce is valid or has expired. + + nonce value (check wikipedia for info) + true if the nonce has not expired. + + + + Gets authentication scheme name + + + + + Gets authenticator scheme + + + + digest + + + + + Session in the system + + + + + Gets or sets session id. + + + + + Factory creating null logger. + + + + + Initializes a new instance of the class. + + + + + Create a new logger. + + Type that requested a logger. + Logger for the specified type; + + MUST ALWAYS return a logger. Return if no logging + should be used. + + + + + Logger instance. + + + + + HTTP methods. + + + + + Unknown method + + + + + Posting data + + + + + Get data + + + + + Update data + + + + + Remove data + + + + + Get only HTTP headers. + + + + + Options HTTP 1.1 header. + + + + + Parses . + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Request couldn't be parsed successfully. + + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Exception description. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + The context. + + + + Gets or sets thrown exception + + + + + Gets or sets if error page was provided. + + + + + Gets requested resource. + + + + + Gets response to send + + + + + Convention over configuration server. + + + Used to make it easy to create and use a web server. + + All resources must exist in the "YourProject.Content" namespace (or a subdirectory called "Content" relative to yourapp.exe). + + + + + + Http server. + + + + + Initializes a new instance of the class. + + Factory used to create objects used in this library. + + + + Initializes a new instance of the class. + + + + + Add a decoder. + + decoder to add + + Adding zero decoders will make the server add the + default ones which is and . + + + + + Add a new router. + + Router to add + Server have been started. + + + + Add a file module + + Module to add + module is null. + Cannot add modules when server have been started. + + + + Add a HTTP listener. + + + Listener have been started. + + + + An error have occurred and we need to send a result pack to the client + + The context. + The exception. + + Invoke base class () to send the contents + of . + + + + + Called before anything else. + + The context. + + Looks after a in the request and will + use the if found. + + + + + All server modules are about to be invoked. + + The context. + + Called when routers have been invoked but no modules yet. + + + + + A request have arrived but not yet been processed yet. + + The context. + + Default implementation adds a Date header and Server header. + + + + + Go through all modules and check if any of them can handle the current request. + + + + + + + Process result (check if it should be sent back or not) + + + + true if request was processed properly.; otherwise false. + + + + Processes all routers. + + Request context. + Processing result. + + + + Requests authentication from the user. + + Host/domain name that the server hosts. + + Used when calculating hashes in Digest authentication. + + + + + + + Send a response. + + + + + + + + Start http server. + + Number of pending connections. + + + + Stops the server + + true if all modules should be removed. + + + + Gets the authentication provider. + + + A authentication provider is used to keep track of all authentication types + that can be used. + + + + + Gets or sets number of bytes that a body can be. + + + + Used to determine the answer to a 100-continue request. + + + 0 = turned off. + + + + + + Gets current server. + + + Only valid when a request have been received and is being processed. + + + + + Gets or sets the maximum size of request body (in bytes) + + + + + Gets or sets server name. + + + Used in the "Server" header when serving requests. + + + + + Invoked just before a response is sent back to the client. + + + + + Invoked *after* the web server has tried to handled the request. + + + The event can be used to handle the request after all routes and modules + have tried to process the request. + + + + + Invoked *before* the web server has tried to handled the request. + + + 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. + + + + + An error page have been requested. + + + + + Initializes a new instance of the class. + + + + + 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. + + + [a-z0-9]+)", "/users/${target}/?find=true", RegexOptions.IgnoreCase) + ]]> + + + + + Initializes a new instance of the class. + + Expression to match URL + Expression to generate URL + + [a-zA-Z0-9]+)", "/user/${first}")); + Result of ie. /employee1 will then be /user/employee1 + ]]> + + + + + Initializes a new instance of the class. + + Expression to match URL + Expression to generate URL + Regular expression options to use, can be null + + [a-zA-Z0-9]+)", "/user/{first}", RegexOptions.IgnoreCase)); + Result of ie. /employee1 will then be /user/employee1 + ]]> + + + + + Initializes a new instance of the class. + + Expression to match URL + Expression to generate URL + Regular expression options to apply + true if request should be redirected, false if the request URI should be replaced. + + [a-zA-Z0-9]+)", "/user/${first}", RegexOptions.None)); + Result of ie. /employee1 will then be /user/employee1 + ]]> + + Argument is null. + + + + + Process the incoming request. + + Request context. + Processing result. + If any parameter is null. + + + + Load resources from disk. + + + + + Default forbidden characters. + + + + + relative to absolute path mappings. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Request URI path + Disk path + + File names should not be included in URI or path. + + + + new FileResources("/files/user/", "C:\\intetpub\\files\users\\"); + + + + + + Add a new resource mapping. + + Request URI path + Disk path + + File names should not be included in URI or path. + + + + resources.Add("/files/", "C:\\intetpub\\files\\"); + + + absolutePath is not found. + + + + check if source contains any of the chars. + + string to check + Characters to fined + + + + + Go through all mappings and find requested Uri. + + Uri to get local path for. + Path if found; otherwise null. + + + + Checks if a resource exists in the specified directory + + Uri path to resource + true if resource was found; otherwise false. + + + if (resources.Exists("/files/user/user.png")) + Debug.WriteLine("Resource exists."); + + + + + + Gets a resource. + + Uri path to resource. + Resource + Uri contains forbidden characters. + + + Resource resource = resources.Get("/files/user/user.png"); + + + + + + Find all views in a folder/path. + + Absolute Uri path to files that should be found, can end with wild card. + Collection to add all view names to. + Uri contains forbidden characters. + + Find(" + + + + + Gets or sets forbidden characters. + + + Used to revoke access to any system files. + + + + + Gets or sets absolute path on disk, including file name. + + + + + Gets or sets relative file path. + + + + + Gets or sets Uri path, excluding file name + + + + + Used to send a response back to the client. + + + + Writes a object into a stream. + + + 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. + + + + + + Sends response using the specified context. + + The context. + The response. + + + + Converts and sends a string. + + + + Encoding used to transfer string + + + + Send a body to the client + + Context containing the stream to use. + Body to send + + + + Send all headers to the client + + Response containing call headers. + Content used to send headers. + + + + Parses . + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Collection of headers. + + + + + Initializes a new instance of the class. + + Factory used to created headers. + + + + Adds a header + + + Will replace any existing header with the same name. + + header to add + header is null. + Header name cannot be null. + + + + Add a header. + + Header name + Header value + + Will try to parse the header and create a object. + + Header value is not correctly formatted. + name or value is null. + + + + Add a header. + + Header name + Header value + + Will try to parse the header and create a object. + + name or value is null. + + + + Get a header + + Type that it should be cast to + Name of header + Header if found and casted properly; otherwise null. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Gets a header + + header name. + header if found; otherwise null. + + + + Used to authenticate users + + + Authentication is requested by throwing + + + + + Implements basic authentication scheme. + + + + + Create a response that can be sent in the WWW-Authenticate header. + + Realm that the user should authenticate in + Not used by basic authentication + A WWW-Authenticate header. + Argument is null. + + + + An authentication response have been received from the web browser. + Check if it's correct + + Authorization header + Realm that should be authenticated + GET/POST/PUT/DELETE etc. + Authentication object that is stored for the request. A user class or something like that. + if authenticationHeader is invalid + If any of the paramters is empty or null. + + + + Gets authenticator scheme + + + + digest + + + + + Request implementation. + + + + + Initializes a new instance of the class. + + The method. + The path. + The version. + + + + Get a header + + Type that it should be cast to + Name of header + Header if found and casted properly; otherwise null. + + + + Add a new header. + + + + + + + Add a new header. + + Header to add. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Gets a header. + + + + + + + Gets request URI. + + + + + Gets cookies. + + + + + Gets all uploaded files. + + + + + Gets query string and form parameters + + + + + Gets form parameters. + + + + + Gets query string. + + + + + Gets if request is an Ajax request. + + + + + Gets or sets connection header. + + + + + Gets or sets HTTP version. + + + + + Gets or sets HTTP method. + + + + + Gets requested URI. + + + + + Kind of content in the body + + Default is text/html + + + + Gets or sets encoding + + + + + Gets headers. + + + + + Gets body stream. + + + + + Size of the body. MUST be specified before sending the header, + unless property Chunked is set to true. + + + Any specifically assigned value or Body stream length. + + + + + Initializes a new instance of the class. + + SSL protocol to use. + The socket. + The context. + Server certificate to use. + + + + Create stream used to send and receive bytes from the socket. + + Socket to wrap + Stream + Stream could not be created. + + + + Gets or sets client certificate. + + + + + Gets used protocol. + + + + + Gets or sets if client certificate should be used instead of server certificate. + + + + + A list of request cookies. + + + + + Let's copy all the cookies. + + value from cookie header. + + + + Initializes a new instance of the class. + + + + + Adds a cookie in the collection. + + cookie to add + cookie is null + Name must be specified. + + + + Remove all cookies. + + + + + Remove a cookie from the collection. + + Name of cookie. + + + + Gets a collection enumerator on the cookie list. + + collection enumerator + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + 1 + + + + Gets the count of cookies in the collection. + + + + + Gets the cookie of a given identifier (null if not existing). + + + + + Parses query string + + + + + Parse a query string + + string to parse + A collection + reader is null. + + + + Parse a query string + + string to parse + A collection + queryString is null. + + + + Stores sessions in files. + + + All session parameters must be serializable. + + + + + Stores sessions in your favorite store + + + + + + + + Saves the specified session. + + The session. + + + + Touches the specified session + + Session id. + + Used to prevent sessions from expiring. + + + + + Loads a session + + Session id. + Session if found; otherwise null. + + + + Delete a session + + Id of session + + + + Saves the specified session. + + The session. + + + + Touches the specified session + + Session id. + + Used to prevent sessions from expiring. + + + + + Loads a session + + Session id. + Session if found; otherwise null. + + + + Create a HTTP response object. + + + + + Initializes a new instance of the class. + + HTTP Version. + HTTP status code. + Why the status code was selected. + Version must start with 'HTTP/' + + + + Initializes a new instance of the class. + + Context that the response will be sent through. + Request that the response is for. + Version must start with 'HTTP/' + + + + Redirect user. + + Where to redirect to. + + Any modifications after a redirect will be ignored. + + + + + Add a new header. + + + + + + + Add a new header. + + Header to add. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Gets a header. + + + + + + + Gets connection type. + + + + + Status code that is sent to the client. + + Default is + + + + Gets HTTP version. + + + Default is HTTP/1.1 + + + + + Information about why a specific status code was used. + + + + + Size of the body. MUST be specified before sending the header, + unless property Chunked is set to true. + + + Any specifically assigned value or Body stream length. + + + + + Kind of content in the body + + Default is text/html + + + + Gets or sets encoding + + + + + Gets cookies. + + + + + Gets body stream. + + + + + Gets headers. + + + + + Loads resources that are embedded in assemblies. + + + No locks used internally since all mappings are loaded during start up. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Path (Uri) requested by clients + Assembly that the resources exist in + Name space that the resources exist in + + + + Add a specific resource. + + Path (Uri) requested by clients + Assembly that the resources exist in + Name space to root folder under (all name spaces below the specified one are considered as folders) + Name space and name of resource. + + + Add("/", Assembly.GetExecutingAssembly(), "MyApplication.Files", "Myapplication.Files.Images.MyImage.png"); + + + + + + Add resources. + + Path (Uri) requested by clients + Assembly that the resources exist in + Name of resource, including name space. + true if file was found (and has not previously been added); otherwise false. + + + + + + Add resources in a specific path (will not work with sub folders) + + Path (Uri) requested by clients + Assembly that the resources exist in + Name space to root folder under which all name spaces exists in, + true if any files was found; otherwise false. + + + 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 to get support + for sub folders. + + + + + Add("/user/", typeof(MyController).Assembly, "YourProject.Users.Views"); + + + + + + Add resources in a folder and it's sub folder + + + + + + 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. + + + + + + Tries to load file by using previously added paths. + + Uri path including file name + + + + + Checks if a resource exists in the specified directory + + Uri path to resource + true if resource was found; otherwise false. + + + if (resources.Exists("/files/user/user.png")) + Debug.WriteLine("Resource exists."); + + + + + + Load a resource. + + Uri of resource. + Resource if found and loaded; otherwise null. + + + + Find all views in a folder/path. + + Uri path + Collection to add all view names to. + + + + Loads all files in a resource directory + + + + + + Gets or sets assembly that the resource exists in. + + + + + Gets or sets resource name. + + + + + Gets or sets full name space path to resource. + + + + + Gets or sets if this file is for a certain content type. + + + + + Gets or sets full "virtual" Uri path, excluding file name. + + + + + Gets or sets assembly + + + + + Gets or sets name space root. + + + + + Gets or sets uri path. + + + + + Something unexpected went wrong. + + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Inner exception. + + + + Decodes URL encoded values. + + + + + + + Stream containing the content + Content type header + Stream encoding + Collection with all parameters. + Body format is invalid for the specified content type. + Failed to read all bytes from body stream. + + + + All content types that the decoder can parse. + + A collection of all content types that the decoder can handle. + + + + Parses and builds messages + + + The message factory takes care of building messages + from all end points. + + 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. + + + Each end point need to hand the context back to the message factory + when the client disconnects (or a message have been parsed). + + + + + + Initializes a new instance of the class. + + Factory used to create headers. + + + + Create a new message factory context. + + A new context. + + A context is used to parse messages from a specific endpoint. + + + + + Release a used factory context. + + + + + + A request have been received from one of the end points. + + + + + A response have been received from one of the end points. + + + + + Priority for log entries + + + + + + Very detailed logs to be able to follow the flow of the program. + + + + + Logs to help debug errors in the application + + + + + Information to be able to keep track of state changes etc. + + + + + Something did not go as we expected, but it's no problem. + + + + + Something that should not fail failed, but we can still keep + on going. + + + + + Something failed, and we cannot handle it properly. + + + + + Parses . + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Form parameters where form string arrays have been converted to real arrays. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Initializes a new instance of the class. + + Parse parameters from the this collection. + + + + Get a parameter. + + + + + + + Add a parameter + + Name of parameter, can contain a string array. + Value + + + 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. + + + + + + Checks if the specified parameter exists + + Parameter name. + true if found; otherwise false; + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Gets first value of an item. + + + String if found; otherwise null. + + + + Gets number of parameters. + + + + + Gets last value of an parameter. + + Parameter name + String if found; otherwise null. + + + + Assign properties from HTTP parameters. + + + + + Used to filter out properties. + + Filter handler. + Handler have already been set. + + + + Assign properties in the specified object. + + Object to fill. + Contains all parameters that should be assigned to the properties. + Properties was not found or value could not be converted. + Any parameter is null. + + + + Used to be able to filter properties + + Model having it's properties assigned + Property about to be assigned + Value to assign + true if value can be set; otherwise false. + + + + Failed to assign properties. + + + + + Initializes a new instance of the class. + + The property errors. + + + + Gets all errors during assignment. + + + Dictionary key is property name. + + + + + Requested resource may not be accessed. + + + Normally thrown after an authentication attempt have failed too many times. + + + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Inner exception. + + + + User needs to authenticate. + + + + + + + Initializes a new instance of the class. + + Exception description. + + + + Initializes a new instance of the class. + + Exception description. + Inner exception. + + + + First line in a response have been received + + + + + Gets or sets motivation to why the status code was used. + + + + + Gets or sets message status code + + + + + Gets or sets sip protocol version used. + + + + + Request context + + + Contains information about a HTTP request and where it came from. + + + + + Gets or sets http context. + + + + + Gets or sets http request. + + + + + Gets or sets http response. + + + + + Header for "Date" and "If-Modified-Since" + + + + 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 + + Date: Tue, 15 Nov 1994 08:12:31 GMT + + Origin servers MUST include a Date header field in all + responses, except in these cases: + + 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. + 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. + 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. + + + 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. + 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. + 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. + + + + + + Header name + + + + + Initializes a new instance of the class. + + Header name. + Name must not be empty. + + + + Initializes a new instance of the class. + + Header name. + Universal time. + + + + Returns data formatted as a HTTP header value. + + + A that represents the current . + + + + + Gets or sets date time. + + Should be in UTC. + + + + Gets header name + + + + + The Cache-Control general-header field is used to specify directives that + MUST be obeyed by all caching mechanisms along the request/response + chain. . + + + + 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. + Note that HTTP/1.0 caches might not implement Cache-Control and + might only implement Pragma: no-cache (see section 14.32 in RFC2616). + 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 + + + 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. + + + The cache-control directives can be broken down into these general + categories: + + + Restrictions on what are cacheable; these may only be imposed by + the origin server. + + Restrictions on what may be stored by a cache; these may be + imposed by either the origin server or the user agent. + + Modifications of the basic expiration mechanism; these may be + imposed by either the origin server or the user agent. + + Controls over cache revalidation and reload; these may only be + imposed by a user agent. + + Control over transformation of entities. + + Extensions to the caching system. + + + + + + + + Header name + + + + + Gets header name + + + + + Authorization response + + + + 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. + + + Authorization = "Authorization" ":" credentials + + + 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: + + + + 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. + + 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. + + If the response includes the "public" cache-control directive, + it MAY be returned in reply to any subsequent request. + + + + + + + Name constant + + + + + Gets or sets authentication data. + + + + + Gets or sets authentication protocol. + + + + + Gets name of header. + + + + + Factory is used to create new logs in the system. + + + + + Assigns log factory being used. + + The log factory. + A factory have already been assigned. + + + + Create a new logger. + + Type that requested a logger. + Logger for the specified type; + + + + A request have been received. + + + + + + + Initializes a new instance of the class. + + context that received the request. + Received request. + Response to send. + + + + Gets context that received the request. + + + Do not forget to set to true if you are sending + back a response manually through . + + + + + Gets or sets if the request have been handled. + + + The library will not attempt to send the response object + back to the client if this property is set to true. + + + + + Gets request object. + + + + + Gets response object. + + + + + Get or create components used in the web server framework + + + + + + + + Get or create a type. + + Type to create + Created type. + + Gets or creates types in the framework. + Check for more information on which + types the factory should contain. + + + + + Parses numerical values + + + + + Parse a header + + Name of header. + Reader containing value. + HTTP Header + Header value is not of the expected format. + + + + Contains parameters for HTTP headers. + + + + + Add a parameter + + name + value + + Existing parameter with the same name will be replaced. + + + + + Parse parameters. + + Parser containing buffer to parse. + A collection with all parameters (or just a empty collection). + Expected a value after equal sign. + + + + Parse parameters. + + Parser containing buffer to parse. + Parameter delimiter + A collection with all parameters (or just a empty collection). + Expected a value after equal sign. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets a value + + parameter name + value if found; otherwise null. + + + + Component that should be registered in the container. + + + Register using all interfaces that is specified in this assembly. + + + + + 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). + + + Taken from HttpRequest in mono (http://www.mono-project.com) + + + + + Interface used to write to log files. + + + If you want to use the built in filtering mechanism, create a constructor + which takes one parameter, a . + + + + + Write an entry that helps when debugging code. + + Log message + + + + Write an entry that helps when debugging code. + + Log message + Thrown exception to log. + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + Thrown exception to log. + + + + Something went very wrong, application might not recover. + + Log message + + + + Something went very wrong, application might not recover. + + Log message + Thrown exception to log. + + + + Informational message, needed when helping customer to find a problem. + + Log message + + + + Informational message, needed when helping customer to find a problem. + + Log message + Thrown exception to log. + + + + Write a entry that helps when trying to find hard to find bugs. + + Log message + + + + Write a entry that helps when trying to find hard to find bugs. + + Log message + Thrown exception to log. + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + Thrown exception to log. + + + + Used to create all key types in the HTTP server. + + + Should have factory methods at least for the following types: + , , + , , + , , + , , + . + + Check the default implementations to see which constructor + parameters you will get. + + + HttpFactory.Add(typeof(IRequest), (type, args) => new MyRequest((string)args[0])); + + + + + + Initializes a new instance of the class. + + + + + Add a factory method for a type. + + Type to create + Method creating the type. + + + + Used to + + + + + + + Setup our singleton. + + + + + + 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. + + + + + Small method to create a message factory singleton and replace then default delegate method. + + + + + + + + Create a type. + + Type to create + Created type. + + + + Gets http factory for the current listener. + + + + + Delegate used to create a certain type + + Created type. + + Method must never fail. + + + + + Contains numerical value. + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + Returns data formatted as a HTTP header value. + + + A that represents the current . + + + + + Gets value + + + + + Gets header name + + + + + Contents of a cookie header. + + + + + Initializes a new instance of the class. + + The collection. + collection is null. + + + + Gets cookie collection + + + + + Gets header name + + + + + Gets value as it would be sent back to client. + + + + + + Data decoded from a POST body. + + + + + Initializes a new instance of the class. + + + + + Gets or sets decoded files. + + + + + Gets or sets decoded parameters. + + + + + Collection of body decoders. + + + Body decoders are used to parse request body and convert it + into a and a . + + + + + Add another body decoder. + + + + + + Decode body stream + + Stream containing the content + Content type header + Stream encoding + Decoded data. + Body format is invalid for the specified content type. + Something unexpected failed. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + 1 + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + 2 + + + + Gets number of decoders. + + + + + Credits and description: http://theinstructionlimit.com/?p=76 + + + Converted to .Net 2.0 + + + + + Type cached for fast property value modifications. + + + + + Get a property value. + + Instance to get value from. + Name of property. + Property value. + + + + Assign a value, try to convert it if it's not the same type as the property type. + + Object containing the property + Name of property + Value to convert and assign + Failed to find property. + Could not convert value type to property type. + + + + Assign value to a property + + Object containing the property + Name of property + Value to assign, must be of the same type as the property. + Failed to find property. + + + + Used to cache property information + + + + + Gets the property. + + The name. + + Failed to find property. + + + InvalidCastException. + + + + Get a property value. + + Instance to get value from. + Name of property. + Property value. + + + + Assign a value, try to convert it if it's not the same type as the property type. + + Object containing the property + Name of property + Value to convert and assign + Failed to find property. + Could not convert value type to property type. + + + + Assign value to a property + + Object containing the property + Name of property + Value to assign, must be of the same type as the property. + Failed to find property. + + + + Gets or sets member info + + + + + Gets or sets member type + + + + + A request have been received. + + + + + Initializes a new instance of the class. + + The request. + End point that the request was received from. + + + + End point that the message was received from. + + + + + Received request. + + + + + Creates a single message for one of the end points. + + + The factory is + + + + + Initializes a new instance of the class. + + The MSG factory. + The factory. + The parser. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Received a header from parser + + + + + + + Will continue the parsing until nothing more can be parsed. + + buffer to parse + where to start in the buffer + number of bytes to process. + Position where parser stopped parsing. + Parsing failed. + + + + Reset parser. + + + Something failed, reset parser so it can start on a new request. + + + + + A request have been successfully parsed. + + + + + A response have been successfully parsed. + + + + + Client asks if he may continue. + + + If the body is too large or anything like that you should respond . + + + + + Used to notify about 100-continue header. + + + + + Initializes a new instance of the class. + + request that want to continue. + + + + Gets request that want to continue + + + + + Default log writer, writes everything to void (nowhere). + + + + + + The logging instance. + + + + + Write an entry that helps when debugging code. + + Log message + + + + Write an entry that helps when debugging code. + + Log message + Thrown exception to log. + + + + Write a entry needed when following through code during hard to find bugs. + + Log message + + + + Write a entry that helps when trying to find hard to find bugs. + + Log message + Thrown exception to log. + + + + Informational message, needed when helping customer to find a problem. + + Log message + + + + Informational message, needed when helping customer to find a problem. + + Log message + Thrown exception to log. + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + Thrown exception to log. + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + Thrown exception to log. + + + + Something went very wrong, application might not recover. + + Log message + + + + Something went very wrong, application might not recover. + + Log message + Thrown exception to log. + + + + This class writes to the console. + + + It colors the output depending on the log level + and includes a 3-level stack trace (in debug mode) + + + + + + Initializes a new instance of the class. + + Type being logged. + Log filter. + + + + Get color for the specified log level + + Level for the log entry + A for the level + + + + Write an entry + + Importance of the log message + The message. + + + + Write an entry that helps when debugging code. + + Log message + + + + Write an entry that helps when debugging code. + + Log message + Thrown exception to log. + + + + Write a entry needed when following through code during hard to find bugs. + + Log message + + + + Write a entry that helps when trying to find hard to find bugs. + + Log message + Thrown exception to log. + + + + Informational message, needed when helping customer to find a problem. + + Log message + + + + Informational message, needed when helping customer to find a problem. + + Log message + Thrown exception to log. + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + + + + Something is not as we expect, but the code can continue to run without any changes. + + Log message + Thrown exception to log. + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + + + + Something went wrong, but the application do not need to die. The current thread/request + cannot continue as expected. + + Log message + Thrown exception to log. + + + + Something went very wrong, application might not recover. + + Log message + + + + Something went very wrong, application might not recover. + + Log message + Thrown exception to log. + + + + Gets or sets type that the logger is for + + + + + Creates a console logger. + + + + + Initializes a new instance of the class. + + The filter. + + + + Create a new logger. + + Type that requested a logger. + Logger for the specified type; + + MUST ALWAYS return a logger. Return if no logging + should be used. + + + + + Cookies that should be set. + + + + + Adds a cookie in the collection. + + cookie to add + cookie is null + Name and Content must be specified. + + + + Copy a request cookie + + + When the cookie should expire + + + + Remove all cookies + + + + + Gets a collection enumerator on the cookie list. + + collection enumerator + + + + Returns an enumerator that iterates through the collection. + + + + A that can be used to iterate through the collection. + + 1 + + + + Gets the count of cookies in the collection. + + + + + Gets the cookie of a given identifier. + + Cookie if found; otherwise null. + + + + Provider returning user to be authenticated. + + + + + Lookups the specified user + + User name. + Typically web server domain name. + User if found; otherwise null. + + User name can basically be anything. For instance name entered by user when using + basic or digest authentication, or SID when using Windows authentication. + + + + + Gets the principal to use. + + Successfully authenticated user. + + + Invoked when a user have successfully been authenticated. + + + + + + + User information used during authentication process. + + + + + Gets or sets user name used during authentication. + + + + + Gets or sets unencrypted password. + + + Password as clear text. You could use instead if your passwords + are encrypted in the database. + + + + + Gets or sets HA1 hash. + + + + 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). + + + 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 Request.Headers["host"]). + + + Leave the string as null if you are not using HA1 hashes. + + + + + + Provides authentication in the web server. + + + To initiate authentication you just need to throw a Una + + + + + Add a authenticator. + + + + + + Authenticate request. + + + + + Requires that a AuthorizationHeader have been sent by the client. If not, + request one by sending a WWW-Authentication header (can be generated by the Challenge method). + + Authorization header was not found in the request. + Requested authentication scheme is not supported. + + + + Create a challenge header (WWW-authenticate) + + Response that the authentication header should be added to + Realm that the user should authenticate in + WWW-Authenticate header. + + + Scheme can currently be basic or digest. Basic is not very safe, but easier to use. + Digest is quite safe. + + + + Requested scheme is not supported. + + + From 59a2fcd62edc8b06b4bb1b3fc3e7c34bc444fcd7 Mon Sep 17 00:00:00 2001 From: high Date: Sun, 4 Sep 2011 23:43:39 -0400 Subject: [PATCH 02/46] Added Rest example --- TShockAPI/Rest.cs | 105 +++++++++++++++++++++++++++++++++++++ TShockAPI/TShock.cs | 20 +++++++ TShockAPI/TShockAPI.csproj | 6 ++- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 TShockAPI/Rest.cs diff --git a/TShockAPI/Rest.cs b/TShockAPI/Rest.cs new file mode 100644 index 00000000..55d8408b --- /dev/null +++ b/TShockAPI/Rest.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using HttpServer; +using HttpServer.Headers; +using HttpListener = HttpServer.HttpListener; + +namespace TShockAPI +{ + /// + /// Rest command delegate + /// + /// Parameters in the url + /// Http request + /// Response body or null to not handle request + public delegate string RestCommandD(IParameterCollection parameters, RequestEventArgs request); + public class Rest : IDisposable + { + List commands = new List(); + HttpListener listener; + + public Rest(IPAddress ip, int port) + { + listener = HttpListener.Create(ip, port); + listener.RequestReceived += OnRequest; + } + + public void Start() + { + listener.Start(int.MaxValue); + } + public void Stop() + { + listener.Stop(); + } + + public void Register(string path, RestCommandD callback) + { + Register(new RestCommand(path, callback)); + } + + public void Register(RestCommand com) + { + commands.Add(com); + } + + void OnRequest(object sender, RequestEventArgs e) + { + var coms = commands.Where(r => r.Path.ToLower().Equals(e.Request.Uri.AbsolutePath.ToLower())); + foreach (var com in coms) + { + var str = com.Callback(e.Request.Parameters, e); + if (str != null) + { + e.Response.Connection.Type = ConnectionType.Close; + e.Response.Body.Write(Encoding.ASCII.GetBytes(str), 0, str.Length); + e.Response.Status = HttpStatusCode.OK; + return; + } + } + string error = "Error: Invalid request"; + e.Response.Connection.Type = ConnectionType.Close; + e.Response.Body.Write(Encoding.ASCII.GetBytes(error), 0, error.Length); + e.Response.Status = HttpStatusCode.InternalServerError; + } + + #region Dispose + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + protected void Dispose(bool disposing) + { + if (disposing) + { + if (listener != null) + { + listener.Stop(); + listener = null; + } + } + } + ~Rest() + { + Dispose(false); + } + + #endregion + } + + public class RestCommand + { + public string Path { get; protected set; } + public RestCommandD Callback { get; protected set; } + + public RestCommand(string path, RestCommandD callback) + { + Path = path; + Callback = callback; + } + } +} diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 89038817..a5488dbc 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -36,6 +36,7 @@ using System.Reflection; using System.Linq; using System.Threading; using Community.CsharpSqlite.SQLiteClient; +using HttpServer; using MySql.Data.MySqlClient; using Terraria; using TerrariaAPI; @@ -67,6 +68,7 @@ namespace TShockAPI public static bool OverridePort; public static PacketBufferer PacketBuffer; public static MaxMind.GeoIPCountry Geo; + public static Rest RestApi; /// /// Called after TShock is initialized. Useful for plugins that needs hooks before tshock but also depend on tshock being loaded. @@ -172,6 +174,7 @@ namespace TShockAPI Regions = new RegionManager(DB); Itembans = new ItemManager(DB); RememberedPos = new RemeberedPosManager(DB); + RestApi = new Rest(IPAddress.Any, 8080); if (Config.EnableGeoIP) Geo = new MaxMind.GeoIPCountry(Path.Combine(SavePath, "GeoIP.dat")); @@ -200,6 +203,8 @@ namespace TShockAPI if (Initialized != null) Initialized(); + + RestApi.Register(new RestCommand("/users", usertest)); } catch (Exception ex) { @@ -226,9 +231,23 @@ namespace TShockAPI Console.WriteLine("Thanks for using TShock! Process ID file is now being destroyed."); File.Delete(Path.Combine(SavePath, "tshock.pid")); } + RestApi.Dispose(); //RconHandler.ShutdownAllThreads(); } + //http://127.0.0.1:8080/users?type=status + string usertest(IParameterCollection parameters, RequestEventArgs request) + { + var type = parameters["type"]; + if (type == null) + return "Invalid Type"; + if (type == "status") + { + return "Users online here"; + } + return null; + } + /// /// Handles exceptions that we didn't catch or that Red fucked up /// @@ -353,6 +372,7 @@ namespace TShockAPI AuthToken = 0; } Regions.ReloadAllRegions(); + RestApi.Start(); } diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index 523752e5..f6dfb3e8 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -52,6 +52,9 @@ False ..\SqlBins\Community.CsharpSqlite.SQLiteClient.dll + + ..\HttpBins\HttpServer.dll + False ..\SqlBins\MySql.Data.dll @@ -121,6 +124,7 @@ True Resources.resx + @@ -177,7 +181,7 @@ - +