123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103(** The [Client] module is a collection of convenience functions for
constructing and processing requests. *)moduletypeBASE=sigtype+'aiotype'awith_contexttypebodyvalmap_context:'awith_context->('a->'b)->'bwith_contextvalcall:(?headers:Http.Header.t->?body:body->?chunked:bool->Http.Method.t->Uri.t->(Http.Response.t*body)io)with_context(** [call ?headers ?body ?chunked meth uri]
@return
[(response, response_body)] Consume [response_body] in a timely fashion.
Please see {!val:call} about how and why.
@param chunked
use chunked encoding if [true]. The default is [false] for compatibility
reasons. *)endmoduletypeS=sigincludeBASEvalhead:(?headers:Http.Header.t->Uri.t->Http.Response.tio)with_contextvalget:(?headers:Http.Header.t->Uri.t->(Http.Response.t*body)io)with_contextvaldelete:(?body:body->?chunked:bool->?headers:Http.Header.t->Uri.t->(Http.Response.t*body)io)with_contextvalpost:(?body:body->?chunked:bool->?headers:Http.Header.t->Uri.t->(Http.Response.t*body)io)with_contextvalput:(?body:body->?chunked:bool->?headers:Http.Header.t->Uri.t->(Http.Response.t*body)io)with_contextvalpatch:(?body:body->?chunked:bool->?headers:Http.Header.t->Uri.t->(Http.Response.t*body)io)with_contextendmoduleMake(Base:BASE)(IO:S.IOwithtype'at='aBase.io)=structincludeBaseopenIOletcall=map_contextcall(funcall?headers?body?chunkedmethuri->let()=Logs.info(funm->m"%a %a"Http.Method.ppmethUri.ppuri)incall?headers?body?chunkedmethuri)letdelete=map_contextcall(funcall?body?chunked?headersuri->call?body?chunked?headers`DELETEuri)letget=map_contextcall(funcall?headersuri->call?headers`GETuri)lethead=map_contextcall(funcall?headersuri->call?headers`HEADuri>>=fun(response,_body)->returnresponse)letpatch=map_contextcall(funcall?body?chunked?headersuri->call?body?chunked?headers`PATCHuri)letpost=map_contextcall(funcall?body?chunked?headersuri->call?body?chunked?headers`POSTuri)letput=map_contextcall(funcall?body?chunked?headersuri->call?body?chunked?headers`PUTuri)end