package ez_api
Module EzAPIServerUtils.DirectorySource
Source
type conflict = | CService| CDir| CBuilder| CCustom| CTypes of EzAPI.Arg.descr * EzAPI.Arg.descr| CType of EzAPI.Arg.descr * string list
Source
and 'a directory = {services : 'a registered_service MethMap.t;subdirs : 'a subdirectories option;
}Source
and _ subdirectories = | Suffixes : 'a directory StringMap.t -> 'a subdirectories| Arg : 'a1 EzAPI.Arg.t * ('a * 'a1) directory -> 'a subdirectories
Source
and _ registered_service = | Http : {service : ('a, 'i, 'o, 'e, 's) EzAPI.Service.t;handler : 'a -> 'i -> ('o, 'e) result Answer.t Lwt.t;
} -> 'a registered_service| Websocket : {service : ('a, 'i, 'o, 'e, 's) EzAPI.Service.t;react : 'a -> 'i -> ('o, 'e) result Lwt.t;bg : 'a -> (('o, 'e) result -> unit) -> unit Lwt.t;onclose : ('a -> unit Lwt.t) option;step : float option;
} -> 'a registered_service
Source
type lookup_error = [ | `Not_found| `Cannot_parse of EzAPI.Arg.descr * string * string list| `Method_not_allowed
]Source
type handler_error = [ | EzEncoding.destruct_error| `unsupported of string option| `handler_exn of exn| `handler_error of string
]Source
type lookup_ok = [ | `head| `options of (string * string) list| `http of string -> (string Answer.t, handler_error) result Lwt.t| `ws of (string -> (ws_frame, handler_error) result Lwt.t) * (((ws_frame, handler_error) result -> unit) -> unit Lwt.t) * (unit -> unit Lwt.t) option * float option
]Source
val resolve :
'a. string list ->
'a directory ->
'a ->
string list ->
(resolved_directory, lookup_error) result Lwt.tSource
val ser_websocket :
('a -> 'b -> ('c, 'd) result Lwt.t) ->
('a -> (('c, 'd) result -> 'e) -> 'f) ->
'a ->
'b EzAPI.IO.io ->
'c EzAPI.io ->
'd Json_encoding.encoding ->
(string ->
(ws_frame,
[> `cannot_destruct of string * string
| `handler_error of string
| `handler_exn of exn
| `unexpected_field of string ])
Result.result
Lwt.t)
* (((ws_frame, [> `handler_error of string ]) result -> 'e) ->
'f)Source
val register :
'a. t ->
('a, 'b, 'c, 'd, [< EzAPI.Security.scheme ] as 'e) EzAPI.Service.t ->
(('a, 'b, 'c, 'd, 'e) EzAPI.Service.t -> 'a registered_service) ->
(t, Step.t list * conflict) result