module Cf_uri: sig .. end
Operations with Universal Resource Identifier (URI).
This module implements types for constructing and deconstructing Universal
Resource Identifiers (URI), as well as convenience functions for
manipulating their components, and also functions for parsing and emitting
them as strings.
Types
type host =
The sum type of "host" components of hierarchical URI's.
type server = {
|
srv_user : string option; |
|
srv_host : host; |
|
srv_port : int option; |
}
The type of "server" components of hierarchical URI's.
type authority =
| |
A_server of server option |
| |
A_reg_name of string |
The type of "authority" components of hierarchical URI's.
type segment = {
|
seg_name : string; |
|
seg_params : string list; |
}
The type of path segments in hierarchical URI's.
type net_path = {
}
The type of network paths in hierarchical URI's.
type net = [ `Net of net_path ]
The type of hierarchical URI network paths.
type abs = [ `Abs of segment * segment list ]
The type of hierarchical URI absolute paths.
type rel = [ `Rel of segment list ]
The type of hierarchical URI relative paths.
type path = [ `Abs of segment * segment list
| `Net of net_path
| `Rel of segment list ]
The sum type of hierarchical URI paths.
type abs_special_hier = {
}
The type of absolute hierarchical URI paths with optional query parts.
type abs_special =
The sum type of absolute URI parts.
type absolute = {
}
The type of absolute URI.
type relative = {
|
rel_path : path; |
|
rel_query : string option; |
}
The type of relative URI.
type t =
The type of URI.
type reference = {
|
ref_uri : t; |
|
ref_fragment : string option; |
}
The type of URI references.
exception Rel_undefined
The exception raised when a relative URI has no defined reference to an
absolute URI for a given base, i.e. too many ".." segments.
Functions
val escape : ?allow:(char -> bool) -> string -> string
Use escape ?allow s to obtain a new string by replacing all the
unreserved and "mark" characters in the string s with the equivalent URI
escape sequence. The optional allow function, if specified, can be used
to prevent the escape of characters for which the function returns true.
val unescape : string -> string
Use unescape s to obtain a new string by replacing all the URI escape
sequences in the string s with the actual character they denote.
val refer_to_base : base:absolute -> rel:relative -> absolute
Use refer_to_base ~base ~rel to compose an absolute URI by directing the
relative URI rel from the base absolute URI base. Raises
Invalid_argument if the base URI is opaque, and raises Rel_undefined
if the URI cannot be referred, i.e. too many ".." segments.
val message_to_uri : Cf_message.t -> t
Use message_to_uri m to create a URI by parsing the contents of the
message m. Raises Invalid_argument if the message does not contain a
valid URI.
val message_to_absolute_uri : base:absolute -> Cf_message.t -> absolute
Use message_to_absolute_uri ~base m to create an absolute URI by parsing
the contents of the message m and using base as the absolute URI for
reference in parsing relative URI. Raises Invalid_argument if the
message does not contain a valid URI, or the base URI is opaque. Raises
Rel_undefined if the message contains a relative URI that cannot be
referred by the base URI.
val message_to_uri_reference : Cf_message.t -> reference
Use message_to_uri_reference m to create a URI reference by parsing the
contents of the message m. Raises Invalid_argument if the message does
not contain a valid URI reference.
val message_to_absolute_uri_reference : base:absolute -> Cf_message.t -> reference
Use message_to_absolute_uri_reference ~base m to create a URI reference
to an absolute URI by parsing the contents of the message m and using
base as the absolute URI for reference parsing relative URI. Raises
Invalid_argument if the message does not contain a valid URI, or the base
URI is opaque. Raises Rel_undefined if the message contains a relative
URI that cannot be referred by the base URI.
val emit_host : Format.formatter -> host -> unit
Use emit_host pp host to print the host part of a URI host with the
formatter pp. Reserved characters in the host name are escaped in the
output.
val emit_server : Format.formatter -> server -> unit
Use emit_server pp server to print the server part of a URI server with
the formatter pp. Reserved characters in the host name or user name are
escaped in the output.
val emit_authority : Format.formatter -> authority -> unit
Use emit_authority pp auth to print the name authority part of a URI
authority with the formatter pp. Reserved characters are escaped
appropriately.
val emit_path : Format.formatter -> [< path ] -> unit
Use emit_path pp path to print the path component of a URI path with
the formatter pp. Reserved characters in the path segments or path
segment parameter lists are escaped in the output.
val emit_abs_special : Format.formatter -> abs_special -> unit
Use emit_abs_special pp abs to print the absolute URI specialization
abs with the formatter pp. All reserved characters are escaped
appropriately in the output.
val emit_uri : Format.formatter -> t -> unit
Use emit_uri pp uri to print the URI uri with the formatter pp. All
reserved characters are escaped appropriately in the output.
val emit_uri_reference : Format.formatter -> reference -> unit
Use emit_uri_reference pp uriref to print the URI reference uriref with
the formatter pp. All reserved characters are escaped appropriately in
the output.
val message_of_uri : t -> Cf_message.t
Use message_of_uri uri to produce a message containing the formatted URI
string produced by emitting uri into a string.
val message_of_uri_reference : reference -> Cf_message.t
Use message_of_uri_reference uriref to produce a message containing the
formatted URI reference string produced by emitting uriref into a string.