Library
Module
Module type
Parameter
Class
Class type
Directories are sets of services. They are used to spin up servers (see Server
) that reply to requests for all their registered services.
module Answer : sig ... end
Possible error while registering services.
type conflict =
| CService of EzResto.meth
| CDir
| CBuilder
| CTail
| CTypes of EzResto.Arg.descr * EzResto.Arg.descr
| CType of EzResto.Arg.descr * string list
val empty : directory
Empty tree
val prefix : 'a EzResto.Path.t -> directory -> directory
prefix p d
is a directory of services which includes a service registered on the path p / q
for each service registered on the path q
in d
.
merge d1 d2
is a directory which includes all the services of d1
and d2
.
Registered services (with existential types for parameters and such).
type ('q, 'i, 'o, 'e) types = {
query : 'q Resto.Query.t;
input : 'i input;
output : 'o Json_encoding.encoding;
error : 'e Json_encoding.encoding;
}
Resolve a service.
type lookup_error = [
| `Not_found
| `Method_not_allowed of EzResto.meth list
| `Cannot_parse_path of string list * EzResto.Arg.descr * string
]
val lookup :
directory ->
EzResto.meth ->
string list ->
(registered_service, [> lookup_error ]) result Lwt.t
lookup d m p
is Ok (Service _)
if there is a service s
registered in d
and both the method of s
is m
and the path of s
matches p
. It is Error _
otherwise.
If it is Ok (Service _)
then the returned value corresponds to the registered service.
val allowed_methods :
directory ->
string list ->
(EzResto.meth list, [> lookup_error ]) result Lwt.t
allowed_methods d p
is the set of methods m
such that lookup d m p
is Ok _
. In other words, it is the set of methods m
such that a service has been registered in d
for a path that matches p
.
val transparent_lookup :
directory ->
('meth, 'params, 'query, 'input, 'output, 'error) EzResto.service ->
'params ->
'query ->
'input ->
[> ('output, 'error) Answer.t ] Lwt.t
Registering a handler to a service in a directory.
val register :
directory ->
('meth, 'params, 'query, 'input, 'output, 'error) EzResto.service ->
('params -> 'query -> 'input -> ('output, 'error) Answer.t Lwt.t) ->
directory
register d s h
is a directory that contains all the services registered in d
plus the service s
. Requests to the service s
are handled by the handler h
.
Below are variants of the register
function curryfied for specific arity of services.
val register0 :
directory ->
('meth, unit, 'q, 'i, 'o, 'e) EzResto.service ->
('q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register1 :
directory ->
('meth, unit * 'a, 'q, 'i, 'o, 'e) EzResto.service ->
('a -> 'q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register2 :
directory ->
('meth, (unit * 'a) * 'b, 'q, 'i, 'o, 'e) EzResto.service ->
('a -> 'b -> 'q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register3 :
directory ->
('meth, ((unit * 'a) * 'b) * 'c, 'q, 'i, 'o, 'e) EzResto.service ->
('a -> 'b -> 'c -> 'q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register4 :
directory ->
('meth, (((unit * 'a) * 'b) * 'c) * 'd, 'q, 'i, 'o, 'e) EzResto.service ->
('a -> 'b -> 'c -> 'd -> 'q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register5 :
directory ->
('meth, ((((unit * 'a) * 'b) * 'c) * 'd) * 'e, 'q, 'i, 'o, 'e)
EzResto.service ->
('a -> 'b -> 'c -> 'd -> 'e -> 'q -> 'i -> ('o, 'e) Answer.t Lwt.t) ->
directory
val register_dynamic_directory :
?descr:string ->
directory ->
'params EzResto.Path.t ->
('params -> directory Lwt.t) ->
directory
Registring dynamic subtree.
val register_dynamic_directory1 :
?descr:string ->
directory ->
(unit * 'a) EzResto.Path.t ->
('a -> directory Lwt.t) ->
directory
Registring dynamic subtree. (Curryfied variant)
val register_dynamic_directory2 :
?descr:string ->
directory ->
((unit * 'a) * 'b) EzResto.Path.t ->
('a -> 'b -> directory Lwt.t) ->
directory
val register_dynamic_directory3 :
?descr:string ->
directory ->
(((unit * 'a) * 'b) * 'c) EzResto.Path.t ->
('a -> 'b -> 'c -> directory Lwt.t) ->
directory
val register_describe_directory_service :
directory ->
EzResto.description_service ->
directory
Registering a description service.