1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253(**************************************************************************)(* resto *)(* Copyright (C) 2016, OCamlPro. *)(* *)(* All rights reserved. This file is distributed under the terms *)(* of the GNU Lesser General Public License version 2.1, with the *)(* special exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)openRestomoduleService=Resto.MakeService(Resto_json.Encoding)openServicetypemeth=[`GET|`POST|`DELETE|`PUT|`PATCH]moduleArg=ArgmodulePath=structtype'paramst=(unit,'params)Path.pathtype'paramspath=(unit,'params)Path.pathletroot=Path.rootletadd_suffix=Path.add_suffixletadd_arg=Path.add_arglet(/)=add_suffixlet(/:)=add_argendmoduleQuery=Querytype('meth,'params,'query,'input,'output,'error)service=('meth,unit,'params,'query,'input,'output,'error)Service.tletget_service=get_serviceletpost_service=post_serviceletdelete_service=delete_serviceletput_service=put_serviceletpatch_service=patch_servicetype'inputinput='inputService.input=|No_input:unitinput|Input:'inputJson_encoding.encoding->'inputinputtype'inputrequest='inputService.request={meth:meth;uri:Uri.t;input:'inputinput;}letforge_request=forge_requestletquery=queryletinput_encoding=input_encodingletoutput_encoding=output_encodingleterror_encoding=error_encodingmoduleDescription=Resto.Descriptiontypedescription_service=([`GET],unit*stringlist,Description.request,unit,Json_schema.schemaDescription.directory,unit)serviceletdescription_service?descriptionpath=description_service?descriptionJson_encoding.emptypath