diff --git a/dev/index.html b/dev/index.html index 9e380f8b..c6140b78 100644 --- a/dev/index.html +++ b/dev/index.html @@ -2,7 +2,7 @@
Tiny_httpdTiny Http Server
This library implements a very simple, basic HTTP/1.1 server using blocking IOs and threads. Basic routing based on Scanf is provided for convenience, so that several handlers can be registered.
It is possible to use a thread pool, see create's argument new_thread.
The echo example (see src/examples/echo.ml) demonstrates some of the features by declaring a few endpoints, including one for uploading files:
module S = Tiny_httpd
+Tiny_httpd (tiny_httpd.Tiny_httpd) Module Tiny_httpd
Tiny Http Server
This library implements a very simple, basic HTTP/1.1 server using blocking IOs and threads. Basic routing based on Scanf is provided for convenience, so that several handlers can be registered.
It is possible to use a thread pool, see create's argument new_thread.
The echo example (see src/examples/echo.ml) demonstrates some of the features by declaring a few endpoints, including one for uploading files:
module S = Tiny_httpd
let () =
let server = S.create () in
diff --git a/dev/tiny_httpd/Tiny_httpd_buf/index.html b/dev/tiny_httpd/Tiny_httpd_buf/index.html
index d6a5663c..5d7fe5d6 100644
--- a/dev/tiny_httpd/Tiny_httpd_buf/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_buf/index.html
@@ -1,2 +1,2 @@
-Tiny_httpd_buf (tiny_httpd.Tiny_httpd_buf) Module Tiny_httpd_buf
Simple buffer.
These buffers are used to avoid allocating too many byte arrays when processing streams and parsing requests.
val size : t -> intval clear : t -> unitval create : ?size:int -> unit -> tval contents : t -> stringval bytes_slice : t -> bytesAccess underlying slice of bytes.
val contents_and_clear : t -> stringGet contents of the buffer and clear it.
val add_bytes : t -> bytes -> int -> int -> unitAppend given bytes slice to the buffer.
\ No newline at end of file
+Tiny_httpd_buf (tiny_httpd.Tiny_httpd_buf) Module Tiny_httpd_buf
Simple buffer.
These buffers are used to avoid allocating too many byte arrays when processing streams and parsing requests.
val size : t -> intval clear : t -> unitval create : ?size:int -> unit -> tval contents : t -> stringval bytes_slice : t -> bytesAccess underlying slice of bytes.
val contents_and_clear : t -> stringGet contents of the buffer and clear it.
val add_bytes : t -> bytes -> int -> int -> unitAppend given bytes slice to the buffer.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_dir/Embedded_fs/index.html b/dev/tiny_httpd/Tiny_httpd_dir/Embedded_fs/index.html
new file mode 100644
index 00000000..ae5c3e84
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_dir/Embedded_fs/index.html
@@ -0,0 +1,2 @@
+
+Embedded_fs (tiny_httpd.Tiny_httpd_dir.Embedded_fs) Module Tiny_httpd_dir.Embedded_fs
An embedded file system, as a list of files with (relative) paths. This is useful in combination with the "tiny-httpd-mkfs" tool, which embeds the files it's given into a OCaml module.
val create : ?mtime:float -> unit -> tval add_file : ?mtime:float -> t -> path:string -> string -> unitAdd file to the virtual file system.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_dir/index.html b/dev/tiny_httpd/Tiny_httpd_dir/index.html
index ce460ca6..f6310bf2 100644
--- a/dev/tiny_httpd/Tiny_httpd_dir/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_dir/index.html
@@ -1,5 +1,5 @@
-Tiny_httpd_dir (tiny_httpd.Tiny_httpd_dir) Module Tiny_httpd_dir
Serving static content from directories
This module provides the same functionality as the "http_of_dir" tool. It exposes a directory (and its subdirectories), with the optional ability to delete or upload files.
type dir_behavior = | Index(*Redirect to index.html if present, else fails.
*)| Lists(*Lists content of directory. Be careful of security implications.
*)| Index_or_lists(*Redirect to index.html if present and lists content otherwise. This is useful for tilde ("~") directories and other per-user behavior, but be mindful of security implications
*)| Forbidden(*Forbid access to directory. This is suited for serving assets, for example.
*)
behavior of static directory.
This controls what happens when the user requests the path to a directory rather than a file.
Type used to prevent users from building a config directly. Use default_config or config instead.
type config = {mutable download : bool;(*Is downloading files allowed?
*)mutable dir_behavior : dir_behavior;(*Behavior when serving a directory and not a file
*)mutable delete : bool;(*Is deleting a file allowed? (with method DELETE)
*)mutable upload : bool;(*Is uploading a file allowed? (with method PUT)
*)mutable max_upload_size : int;_rest : hidden;(*Just ignore this field.
*)
}configuration for static file handlers. This might get more fields over time.
val default_config : unit -> configdefault configuration:
+Tiny_httpd_dir (tiny_httpd.Tiny_httpd_dir) Module Tiny_httpd_dir
Serving static content from directories
This module provides the same functionality as the "http_of_dir" tool. It exposes a directory (and its subdirectories), with the optional ability to delete or upload files.
type dir_behavior = | Index(*Redirect to index.html if present, else fails.
*)| Lists(*Lists content of directory. Be careful of security implications.
*)| Index_or_lists(*Redirect to index.html if present and lists content otherwise. This is useful for tilde ("~") directories and other per-user behavior, but be mindful of security implications
*)| Forbidden(*Forbid access to directory. This is suited for serving assets, for example.
*)
behavior of static directory.
This controls what happens when the user requests the path to a directory rather than a file.
Type used to prevent users from building a config directly. Use default_config or config instead.
type config = {mutable download : bool;(*Is downloading files allowed?
*)mutable dir_behavior : dir_behavior;(*Behavior when serving a directory and not a file
*)mutable delete : bool;(*Is deleting a file allowed? (with method DELETE)
*)mutable upload : bool;(*Is uploading a file allowed? (with method PUT)
*)mutable max_upload_size : int;_rest : hidden;(*Just ignore this field.
*)
}configuration for static file handlers. This might get more fields over time.
val default_config : unit -> configdefault configuration:
{ download=true
; dir_behavior=Forbidden
; delete=false
diff --git a/dev/tiny_httpd/Tiny_httpd_dir/module-type-VFS/index.html b/dev/tiny_httpd/Tiny_httpd_dir/module-type-VFS/index.html
new file mode 100644
index 00000000..21235004
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_dir/module-type-VFS/index.html
@@ -0,0 +1,2 @@
+
+VFS (tiny_httpd.Tiny_httpd_dir.VFS) Module type Tiny_httpd_dir.VFS
Virtual file system.
This is used to emulate a file system from pure OCaml functions and data, e.g. for resources bundled inside the web server.
file_exists vfs path returns true if path points to a file or directory inside vfs.
List directory. This only returns basenames, the files need to be put in the directory path using Filename.concat.
Create a file and obtain a pair write, close
val read_file_content : string -> Tiny_httpd_stream.tRead content of a file
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_html/index.html b/dev/tiny_httpd/Tiny_httpd_html/index.html
index af97d774..fd6ce64b 100644
--- a/dev/tiny_httpd/Tiny_httpd_html/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_html/index.html
@@ -1,4 +1,4 @@
-Tiny_httpd_html (tiny_httpd.Tiny_httpd_html) Module Tiny_httpd_html
HTML combinators.
This module provides combinators to produce html. It doesn't enforce the well-formedness of the html, unlike Tyxml, but it's simple and should be reasonably efficient.
module Out = Tiny_httpd_html_.OutOutput for HTML combinators.
type elt = Out.t -> unitA html element. It is represented by its output function, so we can directly print it.
Element with children, represented as a list.
A chunk of sub-elements, possibly empty.
Element with children, represented as a list of sub_elt to be flattened
val sub_empty : sub_eltSub-element with nothing inside. Useful in conditionals, when one decides not to emit a sub-element at all.
val txt : string -> eltEmit a string value, which will be escaped.
val txtf :
+Tiny_httpd_html (tiny_httpd.Tiny_httpd_html) Module Tiny_httpd_html
HTML combinators.
This module provides combinators to produce html. It doesn't enforce the well-formedness of the html, unlike Tyxml, but it's simple and should be reasonably efficient.
module Out = Tiny_httpd_html_.OutOutput for HTML combinators.
type elt = Out.t -> unitA html element. It is represented by its output function, so we can directly print it.
Element with children, represented as a list.
A chunk of sub-elements, possibly empty.
Element with children, represented as a list of sub_elt to be flattened
val sub_empty : sub_eltSub-element with nothing inside. Useful in conditionals, when one decides not to emit a sub-element at all.
val txt : string -> eltEmit a string value, which will be escaped.
val txtf :
('a, Stdlib.Format.formatter, unit, Out.t -> unit) Stdlib.format4 ->
'bFormatted version of txt
val raw_html : string -> eltEmit raw HTML. Caution, this can lead to injection vulnerabilities, never use with text that comes from untrusted users.
tag "menuitem", see mdn
tag "footer", see mdn
tag "footer", see mdn
tag "menu", see mdn
tag "menu", see mdn
tag "nav", see mdn
tag "nav", see mdn
module A = Tiny_httpd_html_.AAttributes.
val to_string : ?top:bool -> elt -> stringConvert a HTML element to a string.
val to_string_l : elt list -> stringConvert a list of HTML elements to a string. This is designed for fragments of HTML that are to be injected inside a bigger context, as it's invalid to have multiple elements at the toplevel of a HTML document.
val to_string_top : elt -> stringval to_stream : elt -> Tiny_httpd_stream.tConvert a HTML element to a stream. This might just convert it to a string first, do not assume it to be more efficient.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_html_/A/index.html b/dev/tiny_httpd/Tiny_httpd_html_/A/index.html
new file mode 100644
index 00000000..48a2a04e
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_html_/A/index.html
@@ -0,0 +1,2 @@
+
+A (tiny_httpd.Tiny_httpd_html_.A) Module Tiny_httpd_html_.A
Attributes.
This module contains combinator for the standard attributes. One can also just use a pair of strings.
type t = string -> attributeAttribute builder
val accept : tAttribute "accept".
val accept_charset : tAttribute "accept-charset".
val accesskey : tAttribute "accesskey".
val action : tAttribute "action".
val align : tAttribute "align".
val allow : tAttribute "allow".
val alt : tAttribute "alt".
val async : tAttribute "async".
val autocapitalize : tAttribute "autocapitalize".
val autocomplete : tAttribute "autocomplete".
val autofocus : tAttribute "autofocus".
val autoplay : tAttribute "autoplay".
val buffered : tAttribute "buffered".
val capture : tAttribute "capture".
val challenge : tAttribute "challenge".
val charset : tAttribute "charset".
val checked : tAttribute "checked".
val cite : tAttribute "cite".
val class_ : tAttribute "class".
val code : tAttribute "code".
val codebase : tAttribute "codebase".
val cols : tAttribute "cols".
val colspan : tAttribute "colspan".
val content : tAttribute "content".
val contenteditable : tAttribute "contenteditable".
Attribute "contextmenu".
val controls : tAttribute "controls".
val coords : tAttribute "coords".
val crossorigin : tAttribute "crossorigin".
val csp : tAttribute "csp".
val data : tAttribute "data".
val data_star : tAttribute "data-*".
val datetime : tAttribute "datetime".
val decoding : tAttribute "decoding".
val default : tAttribute "default".
val defer : tAttribute "defer".
val dir : tAttribute "dir".
val dirname : tAttribute "dirname".
val disabled : tAttribute "disabled".
val download : tAttribute "download".
val draggable : tAttribute "draggable".
val enctype : tAttribute "enctype".
val enterkeyhint : tAttribute "enterkeyhint".
val for_ : tAttribute "for".
val form : tAttribute "form".
val formaction : tAttribute "formaction".
val formenctype : tAttribute "formenctype".
val formmethod : tAttribute "formmethod".
val formnovalidate : tAttribute "formnovalidate".
val formtarget : tAttribute "formtarget".
val headers : tAttribute "headers".
Attribute "hidden".
val high : tAttribute "high".
val href : tAttribute "href".
val hreflang : tAttribute "hreflang".
val http_equiv : tAttribute "http-equiv".
val icon : tAttribute "icon".
val id : tAttribute "id".
val importance : tAttribute "importance".
val integrity : tAttribute "integrity".
val ismap : tAttribute "ismap".
val itemprop : tAttribute "itemprop".
val keytype : tAttribute "keytype".
val kind : tAttribute "kind".
val label : tAttribute "label".
val lang : tAttribute "lang".
val language : tAttribute "language".
val list : tAttribute "list".
val loop : tAttribute "loop".
val low : tAttribute "low".
val manifest : tAttribute "manifest".
val max : tAttribute "max".
val maxlength : tAttribute "maxlength".
val minlength : tAttribute "minlength".
val media : tAttribute "media".
val method_ : tAttribute "method".
val min : tAttribute "min".
val multiple : tAttribute "multiple".
val muted : tAttribute "muted".
val name : tAttribute "name".
val novalidate : tAttribute "novalidate".
val open_ : tAttribute "open".
val optimum : tAttribute "optimum".
val pattern : tAttribute "pattern".
val ping : tAttribute "ping".
val placeholder : tAttribute "placeholder".
val poster : tAttribute "poster".
val preload : tAttribute "preload".
val radiogroup : tAttribute "radiogroup".
val readonly : tAttribute "readonly".
val referrerpolicy : tAttribute "referrerpolicy".
val rel : tAttribute "rel".
val required : tAttribute "required".
val reversed : tAttribute "reversed".
val rows : tAttribute "rows".
val rowspan : tAttribute "rowspan".
val sandbox : tAttribute "sandbox".
val scope : tAttribute "scope".
val scoped : tAttribute "scoped".
val selected : tAttribute "selected".
val shape : tAttribute "shape".
val size : tAttribute "size".
val sizes : tAttribute "sizes".
val slot : tAttribute "slot".
val span : tAttribute "span".
val spellcheck : tAttribute "spellcheck".
val src : tAttribute "src".
val srcdoc : tAttribute "srcdoc".
val srclang : tAttribute "srclang".
val srcset : tAttribute "srcset".
val start : tAttribute "start".
val step : tAttribute "step".
val style : tAttribute "style".
val summary : tAttribute "summary".
val tabindex : tAttribute "tabindex".
val target : tAttribute "target".
val title : tAttribute "title".
val translate : tAttribute "translate".
val text : tAttribute "Text".
val type_ : tAttribute "type".
val usemap : tAttribute "usemap".
val value : tAttribute "value".
val width : tAttribute "width".
val wrap : tAttribute "wrap".
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_html_/Out/index.html b/dev/tiny_httpd/Tiny_httpd_html_/Out/index.html
new file mode 100644
index 00000000..e3a7915e
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_html_/Out/index.html
@@ -0,0 +1,2 @@
+
+Out (tiny_httpd.Tiny_httpd_html_.Out) Module Tiny_httpd_html_.Out
Output for HTML combinators.
This output type is used to produce a string reasonably efficiently from a tree of combinators.
val create : unit -> tval clear : t -> unitval add_char : t -> char -> unitval add_string : t -> string -> unitval add_format_nl : t -> unitval with_no_format_nl : t -> (unit -> 'a) -> 'aval to_string : t -> string
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_html_/index.html b/dev/tiny_httpd/Tiny_httpd_html_/index.html
index e19cc882..db2adb23 100644
--- a/dev/tiny_httpd/Tiny_httpd_html_/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_html_/index.html
@@ -1,4 +1,4 @@
-Tiny_httpd_html_ (tiny_httpd.Tiny_httpd_html_) Module Tiny_httpd_html_
module Out : sig ... endOutput for HTML combinators.
type elt = Out.t -> unitA html element. It is represented by its output function, so we can directly print it.
Element with children, represented as a list.
A chunk of sub-elements, possibly empty.
Element with children, represented as a list of sub_elt to be flattened
val sub_empty : sub_eltSub-element with nothing inside. Useful in conditionals, when one decides not to emit a sub-element at all.
val txt : string -> eltEmit a string value, which will be escaped.
val txtf :
+Tiny_httpd_html_ (tiny_httpd.Tiny_httpd_html_) Module Tiny_httpd_html_
module Out : sig ... endOutput for HTML combinators.
type elt = Out.t -> unitA html element. It is represented by its output function, so we can directly print it.
Element with children, represented as a list.
A chunk of sub-elements, possibly empty.
Element with children, represented as a list of sub_elt to be flattened
val sub_empty : sub_eltSub-element with nothing inside. Useful in conditionals, when one decides not to emit a sub-element at all.
val txt : string -> eltEmit a string value, which will be escaped.
val txtf :
('a, Stdlib.Format.formatter, unit, Out.t -> unit) Stdlib.format4 ->
'bFormatted version of txt
val raw_html : string -> eltEmit raw HTML. Caution, this can lead to injection vulnerabilities, never use with text that comes from untrusted users.
tag "menuitem", see mdn
tag "footer", see mdn
tag "footer", see mdn
tag "menu", see mdn
tag "menu", see mdn
tag "nav", see mdn
tag "nav", see mdn
module A : sig ... endAttributes.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Headers/index.html b/dev/tiny_httpd/Tiny_httpd_server/Headers/index.html
new file mode 100644
index 00000000..72efa1e4
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Headers/index.html
@@ -0,0 +1,2 @@
+
+Headers (tiny_httpd.Tiny_httpd_server.Headers) Module Tiny_httpd_server.Headers
The header files of a request or response.
Neither the key nor the value can contain '\r' or '\n'. See https://tools.ietf.org/html/rfc7230#section-3.2
val empty : tEmpty list of headers.
val get : ?f:(string -> string) -> string -> t -> string optionget k headers looks for the header field with key k.
set k v headers sets the key k to value v. It erases any previous entry for k
val contains : string -> t -> boolIs there a header with the given key?
val pp : Stdlib.Format.formatter -> t -> unitPretty print the headers.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Meth/index.html b/dev/tiny_httpd/Tiny_httpd_server/Meth/index.html
new file mode 100644
index 00000000..02e4b4c0
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Meth/index.html
@@ -0,0 +1,2 @@
+
+Meth (tiny_httpd.Tiny_httpd_server.Meth) Module Tiny_httpd_server.Meth
A HTTP method. For now we only handle a subset of these.
See https://tools.ietf.org/html/rfc7231#section-4
val pp : Stdlib.Format.formatter -> t -> unitval to_string : t -> string
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Middleware/index.html b/dev/tiny_httpd/Tiny_httpd_server/Middleware/index.html
new file mode 100644
index 00000000..5a8ee6dd
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Middleware/index.html
@@ -0,0 +1,2 @@
+
+Middleware (tiny_httpd.Tiny_httpd_server.Middleware) Module Tiny_httpd_server.Middleware
type handler = byte_stream Request.t -> resp:(Response.t -> unit) -> unitHandlers are functions returning a response to a request. The response can be delayed, hence the use of a continuation as the resp parameter.
A middleware is a handler transformation.
It takes the existing handler h, and returns a new one which, given a query, modify it or log it before passing it to h, or fail. It can also log or modify or drop the response.
val nil : tTrivial middleware that does nothing.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Request/index.html b/dev/tiny_httpd/Tiny_httpd_server/Request/index.html
new file mode 100644
index 00000000..4c7d4f52
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Request/index.html
@@ -0,0 +1,2 @@
+
+Request (tiny_httpd.Tiny_httpd_server.Request) Module Tiny_httpd_server.Request
type 'body t = private {meth : Meth.t;(*HTTP method for this request.
*)host : string;headers : Headers.t;(*List of headers.
*)http_version : int * int;(*HTTP version. This should be either 1, 0 or 1, 1.
*)path : string;(*Full path of the requested URL.
*)path_components : string list;(*Components of the path of the requested URL.
*)query : (string * string) list;(*Query part of the requested URL.
*)body : 'body;(*Body of the request.
*)start_time : float;
}A request with method, path, host, headers, and a body, sent by a client.
The body is polymorphic because the request goes through several transformations. First it has no body, as only the request and headers are read; then it has a stream body; then the body might be entirely read as a string via read_body_full.
val pp : Stdlib.Format.formatter -> string t -> unitPretty print the request and its body. The exact format of this printing is not specified.
val pp_ : Stdlib.Format.formatter -> _ t -> unitPretty print the request without its body. The exact format of this printing is not specified.
val get_header : ?f:(string -> string) -> _ t -> string -> string optionget_header req h looks up header h in req. It returns None if the header is not present. This is case insensitive and should be used rather than looking up h verbatim in headers.
val get_header_int : _ t -> string -> int optionSame as get_header but also performs a string to integer conversion.
set_header k v req sets k: v in the request req's headers.
Modify headers using the given function.
val host : _ t -> stringHost field of the request. It also appears in the headers.
val path : _ t -> stringRequest path.
val body : 'b t -> 'bRequest body, possibly empty.
val start_time : _ t -> floattime stamp (from Unix.gettimeofday) after parsing the first line of the request
val limit_body_size : max_size:int -> byte_stream t -> byte_stream tLimit the body size to max_size bytes, or return a 413 error.
val read_body_full : ?buf_size:int -> byte_stream t -> string tRead the whole body into a string. Potentially blocking.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Response/index.html b/dev/tiny_httpd/Tiny_httpd_server/Response/index.html
new file mode 100644
index 00000000..b41f8d2a
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Response/index.html
@@ -0,0 +1,19 @@
+
+Response (tiny_httpd.Tiny_httpd_server.Response) Module Tiny_httpd_server.Response
Body of a response, either as a simple string, or a stream of bytes, or nothing (for server-sent events notably).
type t = private {code : Response_code.t;headers : Headers.t;(*Headers of the reply. Some will be set by Tiny_httpd automatically.
*)body : body;(*Body of the response. Can be empty.
*)
}A response to send back to a client.
val set_code : Response_code.t -> t -> tSet the response code.
val make_raw : ?headers:Headers.t -> code:Response_code.t -> string -> tMake a response from its raw components, with a string body. Use "" to not send a body at all.
val make_raw_stream :
+ ?headers:Headers.t ->
+ code:Response_code.t ->
+ byte_stream ->
+ tSame as make_raw but with a stream body. The body will be sent with the chunked transfer-encoding.
val make :
+ ?headers:Headers.t ->
+ (body, Response_code.t * string) Stdlib.result ->
+ tmake r turns a result into a response.
make (Ok body) replies with 200 and the body.make (Error (code,msg)) replies with the given error code and message as body.
val make_string :
+ ?headers:Headers.t ->
+ (string, Response_code.t * string) Stdlib.result ->
+ tSame as make but with a string body.
val make_stream :
+ ?headers:Headers.t ->
+ (byte_stream, Response_code.t * string) Stdlib.result ->
+ tSame as make but with a stream body.
Make the current request fail with the given code and message. Example: fail ~code:404 "oh noes, %s not found" "waldo".
Similar to fail but raises an exception that exits the current handler. This should not be used outside of a (path) handler. Example: fail_raise ~code:404 "oh noes, %s not found" "waldo"; never_executed()
val pp : Stdlib.Format.formatter -> t -> unitPretty print the response. The exact format is not specified.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Response_code/index.html b/dev/tiny_httpd/Tiny_httpd_server/Response_code/index.html
new file mode 100644
index 00000000..587eeccd
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Response_code/index.html
@@ -0,0 +1,2 @@
+
+Response_code (tiny_httpd.Tiny_httpd_server.Response_code) Module Tiny_httpd_server.Response_code
val ok : tThe code 200
val not_found : tThe code 404
val descr : t -> stringA description of some of the error codes. NOTE: this is not complete (yet).
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/Route/index.html b/dev/tiny_httpd/Tiny_httpd_server/Route/index.html
new file mode 100644
index 00000000..4f44e13e
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/Route/index.html
@@ -0,0 +1,2 @@
+
+Route (tiny_httpd.Tiny_httpd_server.Route) Module Tiny_httpd_server.Route
val int : (int -> 'a, 'a) compMatches an integer.
val string : (string -> 'a, 'a) compMatches a string not containing '/' and binds it as is.
val string_urlencoded : (string -> 'a, 'a) compMatches a URL-encoded string, and decodes it.
val exact : string -> ('a, 'a) compexact "s" matches "s" and nothing else.
val return : ('a, 'a) tMatches the empty path.
val rest_of_path : (string -> 'a, 'a) tMatches a string, even containing '/'. This will match the entirety of the remaining route.
val rest_of_path_urlencoded : (string -> 'a, 'a) tMatches a string, even containing '/', an URL-decode it. This will match the entirety of the remaining route.
comp / route matches "foo/bar/…" iff comp matches "foo", and route matches "bar/…".
exact_path "foo/bar/..." r is equivalent to exact "foo" @/ exact "bar" @/ ... @/ r
val pp : Stdlib.Format.formatter -> (_, _) t -> unitPrint the route.
val to_string : (_, _) t -> stringPrint the route.
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_server/index.html b/dev/tiny_httpd/Tiny_httpd_server/index.html
index f17eaa14..f35f4045 100644
--- a/dev/tiny_httpd/Tiny_httpd_server/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_server/index.html
@@ -1,5 +1,5 @@
-Tiny_httpd_server (tiny_httpd.Tiny_httpd_server) Module Tiny_httpd_server
HTTP server.
This module implements a very simple, basic HTTP/1.1 server using blocking IOs and threads.
It is possible to use a thread pool, see create's argument new_thread.
type buf = Tiny_httpd_buf.ttype byte_stream = Tiny_httpd_stream.tHTTP Methods
module Meth : sig ... endHeaders
Headers are metadata associated with a request or response.
module Headers : sig ... endRequests
Requests are sent by a client, e.g. a web browser or cURL. From the point of view of the server, they're inputs.
module Request : sig ... endResponse Codes
module Response_code : sig ... endResponses
Responses are what a http server, such as Tiny_httpd, send back to the client to answer a Request.t
module Response : sig ... endRouting
Basic type-safe routing of handlers based on URL paths. This is optional, it is possible to only define the root handler with something like Routes.
module Route : sig ... endMiddlewares
A middleware can be inserted in a handler to modify or observe its behavior.
module Middleware : sig ... endMain Server type
A HTTP server. See create for more details.
val create :
+Tiny_httpd_server (tiny_httpd.Tiny_httpd_server) Module Tiny_httpd_server
HTTP server.
This module implements a very simple, basic HTTP/1.1 server using blocking IOs and threads.
It is possible to use a thread pool, see create's argument new_thread.
type buf = Tiny_httpd_buf.ttype byte_stream = Tiny_httpd_stream.tHTTP Methods
module Meth : sig ... endHeaders
Headers are metadata associated with a request or response.
module Headers : sig ... endRequests
Requests are sent by a client, e.g. a web browser or cURL. From the point of view of the server, they're inputs.
module Request : sig ... endResponse Codes
module Response_code : sig ... endResponses
Responses are what a http server, such as Tiny_httpd, send back to the client to answer a Request.t
module Response : sig ... endRouting
Basic type-safe routing of handlers based on URL paths. This is optional, it is possible to only define the root handler with something like Routes.
module Route : sig ... endMiddlewares
A middleware can be inserted in a handler to modify or observe its behavior.
module Middleware : sig ... endMain Server type
A HTTP server. See create for more details.
val create :
?masksigpipe:bool ->
?max_connections:int ->
?timeout:float ->
diff --git a/dev/tiny_httpd/Tiny_httpd_server/module-type-SERVER_SENT_GENERATOR/index.html b/dev/tiny_httpd/Tiny_httpd_server/module-type-SERVER_SENT_GENERATOR/index.html
new file mode 100644
index 00000000..225e4a60
--- /dev/null
+++ b/dev/tiny_httpd/Tiny_httpd_server/module-type-SERVER_SENT_GENERATOR/index.html
@@ -0,0 +1,8 @@
+
+SERVER_SENT_GENERATOR (tiny_httpd.Tiny_httpd_server.SERVER_SENT_GENERATOR) Module type Tiny_httpd_server.SERVER_SENT_GENERATOR
A server-side function to generate of Server-sent events.
See the w3c page and this blog post.
val set_headers : Headers.t -> unitSet headers of the response. This is not mandatory but if used at all, it must be called before any call to send_event (once events are sent the response is already sent too).
\ No newline at end of file
diff --git a/dev/tiny_httpd/Tiny_httpd_stream/index.html b/dev/tiny_httpd/Tiny_httpd_stream/index.html
index 7274e1e1..f875d92c 100644
--- a/dev/tiny_httpd/Tiny_httpd_stream/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_stream/index.html
@@ -1,5 +1,5 @@
-Tiny_httpd_stream (tiny_httpd.Tiny_httpd_stream) Module Tiny_httpd_stream
Byte streams.
Streams are used to represent a series of bytes that can arrive progressively. For example, an uploaded file will be sent as a series of chunks.
These used to live in Tiny_httpd but are now in their own module.
type t = {mutable bs : bytes;(*The bytes
*)mutable off : int;mutable len : int;fill_buf : unit -> unit;(*See the current slice of the internal buffer as bytes, i, len, where the slice is bytes[i] .. [bytes[i+len-1]]. Can block to refill the buffer if there is currently no content. If len=0 then there is no more data.
*)consume : int -> unit;(*Consume n bytes from the buffer. This should only be called with n <= len.
*)close : unit -> unit;(*Close the stream.
*)_rest : hidden;
}A buffered stream, with a view into the current buffer (or refill if empty), and a function to consume n bytes. See Byte_stream for more details.
val close : t -> unitClose stream
val empty : tStream with 0 bytes inside
val of_chan : ?buf_size:int -> Stdlib.in_channel -> tMake a buffered stream from the given channel.
val of_chan_close_noerr : ?buf_size:int -> Stdlib.in_channel -> tSame as of_chan but the close method will never fail.
val of_fd : ?buf_size:int -> Unix.file_descr -> tMake a buffered stream from the given file descriptor.
val of_fd_close_noerr : ?buf_size:int -> Unix.file_descr -> tSame as of_fd but the close method will never fail.
val of_bytes : ?i:int -> ?len:int -> bytes -> tA stream that just returns the slice of bytes starting from i and of length len.
val of_string : string -> tval iter : (bytes -> int -> int -> unit) -> t -> unitIterate on the chunks of the stream
val to_chan : Stdlib.out_channel -> t -> unitWrite the stream to the channel.
val make :
+Tiny_httpd_stream (tiny_httpd.Tiny_httpd_stream) Module Tiny_httpd_stream
Byte streams.
Streams are used to represent a series of bytes that can arrive progressively. For example, an uploaded file will be sent as a series of chunks.
These used to live in Tiny_httpd but are now in their own module.
type t = {mutable bs : bytes;(*The bytes
*)mutable off : int;mutable len : int;fill_buf : unit -> unit;(*See the current slice of the internal buffer as bytes, i, len, where the slice is bytes[i] .. [bytes[i+len-1]]. Can block to refill the buffer if there is currently no content. If len=0 then there is no more data.
*)consume : int -> unit;(*Consume n bytes from the buffer. This should only be called with n <= len.
*)close : unit -> unit;(*Close the stream.
*)_rest : hidden;
}A buffered stream, with a view into the current buffer (or refill if empty), and a function to consume n bytes. See Byte_stream for more details.
val close : t -> unitClose stream
val empty : tStream with 0 bytes inside
val of_chan : ?buf_size:int -> Stdlib.in_channel -> tMake a buffered stream from the given channel.
val of_chan_close_noerr : ?buf_size:int -> Stdlib.in_channel -> tSame as of_chan but the close method will never fail.
val of_fd : ?buf_size:int -> Unix.file_descr -> tMake a buffered stream from the given file descriptor.
val of_fd_close_noerr : ?buf_size:int -> Unix.file_descr -> tSame as of_fd but the close method will never fail.
val of_bytes : ?i:int -> ?len:int -> bytes -> tA stream that just returns the slice of bytes starting from i and of length len.
val of_string : string -> tval iter : (bytes -> int -> int -> unit) -> t -> unitIterate on the chunks of the stream
val to_chan : Stdlib.out_channel -> t -> unitWrite the stream to the channel.
val make :
?bs:bytes ->
?close:(t -> unit) ->
consume:(t -> int -> unit) ->
diff --git a/dev/tiny_httpd/Tiny_httpd_util/index.html b/dev/tiny_httpd/Tiny_httpd_util/index.html
index dd5fc057..16ac2da7 100644
--- a/dev/tiny_httpd/Tiny_httpd_util/index.html
+++ b/dev/tiny_httpd/Tiny_httpd_util/index.html
@@ -1,2 +1,2 @@
-Tiny_httpd_util (tiny_httpd.Tiny_httpd_util) Module Tiny_httpd_util
Some utils for writing web servers
Encode the string into a valid path following https://tools.ietf.org/html/rfc3986#section-2.1
Inverse operation of percent_encode. Can fail since some strings are not valid percent encodings.
\ No newline at end of file
+Tiny_httpd_util (tiny_httpd.Tiny_httpd_util) Module Tiny_httpd_util
Some utils for writing web servers
Encode the string into a valid path following https://tools.ietf.org/html/rfc3986#section-2.1
Inverse operation of percent_encode. Can fail since some strings are not valid percent encodings.
\ No newline at end of file
diff --git a/dev/tiny_httpd/index.html b/dev/tiny_httpd/index.html
index e36e7060..a46521a6 100644
--- a/dev/tiny_httpd/index.html
+++ b/dev/tiny_httpd/index.html
@@ -1,2 +1,2 @@
-index (tiny_httpd.index) tiny_httpd index
Library tiny_httpd
This library exposes the following toplevel modules:
Tiny_httpd Tiny Http ServerTiny_httpd_buf Simple buffer.Tiny_httpd_dir Serving static content from directoriesTiny_httpd_html HTML combinators.Tiny_httpd_html_ Tiny_httpd_server HTTP server.Tiny_httpd_stream Byte streams.Tiny_httpd_util
\ No newline at end of file
+index (tiny_httpd.index) tiny_httpd index
Library tiny_httpd
This library exposes the following toplevel modules:
Tiny_httpd Tiny Http ServerTiny_httpd_buf Simple buffer.Tiny_httpd_dir Serving static content from directoriesTiny_httpd_html HTML combinators.Tiny_httpd_html_ Tiny_httpd_server HTTP server.Tiny_httpd_stream Byte streams.Tiny_httpd_util
\ No newline at end of file
diff --git a/dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html b/dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html
index 1cf17118..81c20436 100644
--- a/dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html
+++ b/dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html
@@ -1,5 +1,5 @@
-Tiny_httpd_camlzip (tiny_httpd_camlzip.Tiny_httpd_camlzip) Module Tiny_httpd_camlzip
Middleware for compression.
This uses camlzip to provide deflate compression/decompression. If installed, the middleware will compress responses' bodies when they are streams or fixed-size above a given limit (but it will not compress small, fixed-size bodies).
val middleware :
+Tiny_httpd_camlzip (tiny_httpd_camlzip.Tiny_httpd_camlzip) Module Tiny_httpd_camlzip
Middleware for compression.
This uses camlzip to provide deflate compression/decompression. If installed, the middleware will compress responses' bodies when they are streams or fixed-size above a given limit (but it will not compress small, fixed-size bodies).
val middleware :
?compress_above:int ->
?buf_size:int ->
unit ->
diff --git a/dev/tiny_httpd_camlzip/index.html b/dev/tiny_httpd_camlzip/index.html
index f2d130f8..47a8f23a 100644
--- a/dev/tiny_httpd_camlzip/index.html
+++ b/dev/tiny_httpd_camlzip/index.html
@@ -1,2 +1,2 @@
-index (tiny_httpd_camlzip.index) tiny_httpd_camlzip index
Library tiny_httpd_camlzip
The entry point of this library is the module: Tiny_httpd_camlzip.
\ No newline at end of file
+index (tiny_httpd_camlzip.index) tiny_httpd_camlzip index
Library tiny_httpd_camlzip
The entry point of this library is the module: Tiny_httpd_camlzip.
\ No newline at end of file