├── .github └── workflows │ └── workflow.yml ├── .gitignore ├── CHANGES.md ├── LICENSE.md ├── Makefile ├── README.md ├── docs ├── _config.yml ├── ez-api │ ├── EzAPI │ │ ├── .dune-keep │ │ ├── Arg │ │ │ ├── Ty │ │ │ │ ├── index.html │ │ │ │ └── module-type-Ty │ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Doc │ │ │ └── index.html │ │ ├── Err │ │ │ ├── IntMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Error_codes │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ ├── Meth │ │ │ └── index.html │ │ ├── Mime │ │ │ └── index.html │ │ ├── Param │ │ │ └── index.html │ │ ├── Path │ │ │ └── index.html │ │ ├── Req │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Security │ │ │ ├── StringSet │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Service │ │ │ ├── IO │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── TYPES │ │ │ └── index.html │ │ ├── Url │ │ │ ├── TYPES │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIJS │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerCohttp │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerCohttp__ │ │ ├── .dune-keep │ │ ├── Ws │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerCohttp__Ws │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerHttpAf │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils │ │ ├── .dune-keep │ │ ├── Answer │ │ │ └── index.html │ │ ├── Directory │ │ │ ├── MethMap │ │ │ │ └── index.html │ │ │ ├── Step │ │ │ │ └── index.html │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── File │ │ │ ├── FileString │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── GMTime │ │ │ └── index.html │ │ ├── Ip │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ ├── StringMap │ │ │ └── index.html │ │ ├── Timings │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__ │ │ ├── .dune-keep │ │ ├── Answer │ │ │ └── index.html │ │ ├── Directory │ │ │ ├── MethMap │ │ │ │ └── index.html │ │ │ ├── Step │ │ │ │ └── index.html │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── File │ │ │ ├── FileString │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── GMTime │ │ │ └── index.html │ │ ├── Ip │ │ │ └── index.html │ │ ├── Timings │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__Answer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Directory │ │ ├── .dune-keep │ │ ├── MethMap │ │ │ └── index.html │ │ ├── Step │ │ │ └── index.html │ │ ├── StringMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__File │ │ ├── .dune-keep │ │ ├── FileString │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__GMTime │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Ip │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Timings │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI_ │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__ │ │ ├── .dune-keep │ │ ├── Arg │ │ │ ├── Ty │ │ │ │ ├── index.html │ │ │ │ └── module-type-Ty │ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Doc │ │ │ └── index.html │ │ ├── Err │ │ │ ├── IntMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Error_codes │ │ │ └── index.html │ │ ├── Meth │ │ │ └── index.html │ │ ├── Mime │ │ │ └── index.html │ │ ├── Param │ │ │ └── index.html │ │ ├── Path │ │ │ └── index.html │ │ ├── Req │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Security │ │ │ ├── StringSet │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Service │ │ │ ├── IO │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Url │ │ │ ├── TYPES │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Arg │ │ ├── .dune-keep │ │ ├── Ty │ │ │ ├── index.html │ │ │ └── module-type-Ty │ │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Doc │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Err │ │ ├── .dune-keep │ │ ├── IntMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Error_codes │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Meth │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Mime │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Param │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Path │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Req │ │ ├── .dune-keep │ │ ├── StringMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Security │ │ ├── .dune-keep │ │ ├── StringSet │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Service │ │ ├── .dune-keep │ │ ├── IO │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Url │ │ ├── .dune-keep │ │ ├── TYPES │ │ │ └── index.html │ │ └── index.html │ ├── EzCoXhr │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCoXhr_lwt │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp_base │ │ ├── .dune-keep │ │ ├── Make │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp_lwt │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCookieServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzCurl │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCurl_common │ │ ├── .dune-keep │ │ └── index.html │ ├── EzCurl_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzDebug │ │ ├── .dune-keep │ │ └── index.html │ ├── EzEncoding │ │ ├── .dune-keep │ │ ├── Ezjsonm │ │ │ └── index.html │ │ └── index.html │ ├── EzEncodingJS │ │ ├── .dune-keep │ │ └── index.html │ ├── EzFetch │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzFetch_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzLwtSys │ │ ├── .dune-keep │ │ └── index.html │ ├── EzOpenAPI │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Makers │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── EzRecaptcha │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ └── index.html │ ├── EzReq │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzReq_S │ │ ├── .dune-keep │ │ ├── index.html │ │ ├── module-type-CURRENT │ │ │ └── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ ├── module-type-LEGACY │ │ │ └── index.html │ │ ├── module-type-RAW │ │ │ └── index.html │ │ ├── module-type-RAWGEN │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzReq_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzReq_lwt_S │ │ ├── .dune-keep │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ ├── module-type-LEGACY │ │ │ └── index.html │ │ ├── module-type-RAW │ │ │ └── index.html │ │ ├── module-type-RAWGEN │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzRequest │ │ ├── .dune-keep │ │ ├── ANY │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ ├── argument-1-_ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzRequest_lwt │ │ ├── .dune-keep │ │ ├── ANY │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ ├── argument-1-_ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzSendgrid │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_encoding │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_services │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_types │ │ ├── .dune-keep │ │ └── index.html │ ├── EzServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSession │ │ ├── .dune-keep │ │ ├── Hash │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Encoding │ │ │ │ └── index.html │ │ │ ├── Service │ │ │ │ └── index.html │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── TYPES │ │ │ ├── index.html │ │ │ └── module-type-SessionArg │ │ │ │ └── index.html │ │ └── index.html │ ├── EzSessionClient │ │ ├── .dune-keep │ │ ├── Make │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzSessionServer │ │ ├── .dune-keep │ │ ├── Make │ │ │ ├── argument-1-S │ │ │ │ ├── SessionArg │ │ │ │ │ └── index.html │ │ │ │ ├── SessionStore │ │ │ │ │ └── index.html │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── SessionStoreInMemory │ │ │ └── index.html │ │ ├── UserStoreInMemory │ │ │ ├── SessionArg │ │ │ │ └── index.html │ │ │ ├── SessionStore │ │ │ │ └── index.html │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Arg │ │ │ ├── SessionArg │ │ │ │ └── index.html │ │ │ ├── SessionStore │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── module-type-SessionStore │ │ │ └── index.html │ ├── EzWs │ │ ├── .dune-keep │ │ └── index.html │ ├── EzWsCommon │ │ ├── .dune-keep │ │ ├── Types │ │ │ └── index.html │ │ ├── index.html │ │ └── module-type-S │ │ │ └── index.html │ ├── EzXhr │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzXhr_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── Ezjsonm_interface │ │ ├── .dune-keep │ │ └── index.html │ ├── Facebook │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Services │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── Google │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Services │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── Js_json │ │ ├── .dune-keep │ │ ├── JSON_to_Js │ │ │ └── index.html │ │ ├── JSON_to_Js_Converter │ │ │ └── index.html │ │ ├── Js_to_JSON │ │ │ └── index.html │ │ ├── Js_to_JSON_Converter │ │ │ └── index.html │ │ ├── Make_Conv │ │ │ ├── argument-1-C │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ └── module-type-Converter │ │ │ └── index.html │ ├── Ppx │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_client │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_common │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_server │ │ ├── .dune-keep │ │ └── index.html │ ├── WsCohttp │ │ ├── .dune-keep │ │ └── index.html │ ├── WsCommon │ │ ├── .dune-keep │ │ └── index.html │ ├── WsHttpaf │ │ ├── .dune-keep │ │ └── index.html │ └── index.html ├── ez_api │ ├── EzAPI │ │ ├── .dune-keep │ │ ├── Arg │ │ │ ├── Ty │ │ │ │ ├── index.html │ │ │ │ └── module-type-Ty │ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Doc │ │ │ └── index.html │ │ ├── Err │ │ │ ├── IntMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Error_codes │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ ├── Meth │ │ │ └── index.html │ │ ├── Mime │ │ │ └── index.html │ │ ├── Param │ │ │ └── index.html │ │ ├── Path │ │ │ └── index.html │ │ ├── Req │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Security │ │ │ ├── StringSet │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Service │ │ │ ├── IO │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── TYPES │ │ │ └── index.html │ │ ├── Url │ │ │ ├── TYPES │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIJS │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerCohttp │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerHttpAf │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils │ │ ├── .dune-keep │ │ ├── Answer │ │ │ └── index.html │ │ ├── Directory │ │ │ ├── MethMap │ │ │ │ └── index.html │ │ │ ├── Step │ │ │ │ └── index.html │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── File │ │ │ ├── FileString │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── GMTime │ │ │ └── index.html │ │ ├── Ip │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ ├── StringMap │ │ │ └── index.html │ │ ├── Timings │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__ │ │ ├── .dune-keep │ │ ├── Answer │ │ │ └── index.html │ │ ├── Directory │ │ │ ├── MethMap │ │ │ │ └── index.html │ │ │ ├── Step │ │ │ │ └── index.html │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── File │ │ │ ├── FileString │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── GMTime │ │ │ └── index.html │ │ ├── Ip │ │ │ └── index.html │ │ ├── Timings │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__Answer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Directory │ │ ├── .dune-keep │ │ ├── MethMap │ │ │ └── index.html │ │ ├── Step │ │ │ └── index.html │ │ ├── StringMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__File │ │ ├── .dune-keep │ │ ├── FileString │ │ │ └── index.html │ │ └── index.html │ ├── EzAPIServerUtils__GMTime │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Ip │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPIServerUtils__Timings │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__ │ │ ├── .dune-keep │ │ ├── Arg │ │ │ ├── Ty │ │ │ │ ├── index.html │ │ │ │ └── module-type-Ty │ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Doc │ │ │ └── index.html │ │ ├── Err │ │ │ ├── IntMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Error_codes │ │ │ └── index.html │ │ ├── Meth │ │ │ └── index.html │ │ ├── Mime │ │ │ └── index.html │ │ ├── Param │ │ │ └── index.html │ │ ├── Path │ │ │ └── index.html │ │ ├── Req │ │ │ ├── StringMap │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Security │ │ │ ├── StringSet │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Service │ │ │ ├── IO │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Url │ │ │ ├── TYPES │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Arg │ │ ├── .dune-keep │ │ ├── Ty │ │ │ ├── index.html │ │ │ └── module-type-Ty │ │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Doc │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Err │ │ ├── .dune-keep │ │ ├── IntMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Error_codes │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Meth │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Mime │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Param │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Path │ │ ├── .dune-keep │ │ └── index.html │ ├── EzAPI__Req │ │ ├── .dune-keep │ │ ├── StringMap │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Security │ │ ├── .dune-keep │ │ ├── StringSet │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Service │ │ ├── .dune-keep │ │ ├── IO │ │ │ └── index.html │ │ └── index.html │ ├── EzAPI__Url │ │ ├── .dune-keep │ │ ├── TYPES │ │ │ └── index.html │ │ └── index.html │ ├── EzCoXhr │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCoXhr_lwt │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp_base │ │ ├── .dune-keep │ │ ├── Make │ │ │ └── index.html │ │ └── index.html │ ├── EzCohttp_lwt │ │ ├── .dune-keep │ │ ├── Base │ │ │ └── index.html │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCookieServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzCurl │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzCurl_common │ │ ├── .dune-keep │ │ └── index.html │ ├── EzCurl_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzDebug │ │ ├── .dune-keep │ │ └── index.html │ ├── EzEncoding │ │ ├── .dune-keep │ │ ├── Ezjsonm │ │ │ └── index.html │ │ └── index.html │ ├── EzEncodingJS │ │ ├── .dune-keep │ │ └── index.html │ ├── EzFetch │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzFetch_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzHash │ │ ├── .dune-keep │ │ └── index.html │ ├── EzLoads │ │ ├── .dune-keep │ │ ├── SMap │ │ │ └── index.html │ │ └── index.html │ ├── EzLoads_offset │ │ ├── .dune-keep │ │ └── index.html │ ├── EzLwtSys │ │ ├── .dune-keep │ │ └── index.html │ ├── EzOpenAPI │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Makers │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── EzRecaptcha │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ └── index.html │ ├── EzReq │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzReq_S │ │ ├── .dune-keep │ │ ├── index.html │ │ ├── module-type-CURRENT │ │ │ └── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ ├── module-type-LEGACY │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzReq_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzReq_lwt_S │ │ ├── .dune-keep │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ ├── module-type-LEGACY │ │ │ └── index.html │ │ ├── module-type-RAW │ │ │ └── index.html │ │ ├── module-type-RAWGEN │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzRequest │ │ ├── .dune-keep │ │ ├── ANY │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ ├── argument-1-_ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzRequest_lwt │ │ ├── .dune-keep │ │ ├── ANY │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Legacy │ │ │ │ └── index.html │ │ │ ├── argument-1-_ │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Interface │ │ │ └── index.html │ │ └── module-type-S │ │ │ ├── Legacy │ │ │ └── index.html │ │ │ └── index.html │ ├── EzSendgrid │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_encoding │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_services │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSendgrid_types │ │ ├── .dune-keep │ │ └── index.html │ ├── EzServer │ │ ├── .dune-keep │ │ └── index.html │ ├── EzSession │ │ ├── .dune-keep │ │ ├── Hash │ │ │ └── index.html │ │ ├── Make │ │ │ ├── Encoding │ │ │ │ └── index.html │ │ │ ├── Service │ │ │ │ └── index.html │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── TYPES │ │ │ ├── index.html │ │ │ └── module-type-SessionArg │ │ │ │ └── index.html │ │ └── index.html │ ├── EzSessionClient │ │ ├── .dune-keep │ │ ├── Make │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── index.html │ ├── EzSessionServer │ │ ├── .dune-keep │ │ ├── Make │ │ │ ├── argument-1-S │ │ │ │ ├── SessionArg │ │ │ │ │ └── index.html │ │ │ │ ├── SessionStore │ │ │ │ │ └── index.html │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── SessionStoreInMemory │ │ │ └── index.html │ │ ├── UserStoreInMemory │ │ │ ├── SessionArg │ │ │ │ └── index.html │ │ │ ├── SessionStore │ │ │ │ └── index.html │ │ │ ├── argument-1-S │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ ├── module-type-Arg │ │ │ ├── SessionArg │ │ │ │ └── index.html │ │ │ ├── SessionStore │ │ │ │ └── index.html │ │ │ └── index.html │ │ └── module-type-SessionStore │ │ │ └── index.html │ ├── EzWs │ │ ├── .dune-keep │ │ └── index.html │ ├── EzWsCommon │ │ ├── .dune-keep │ │ ├── Types │ │ │ └── index.html │ │ ├── index.html │ │ └── module-type-S │ │ │ └── index.html │ ├── EzXhr │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── EzXhr_lwt │ │ ├── .dune-keep │ │ ├── Interface │ │ │ └── index.html │ │ ├── Legacy │ │ │ └── index.html │ │ └── index.html │ ├── Ezjsonm_interface │ │ ├── .dune-keep │ │ └── index.html │ ├── Facebook │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Services │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── Google │ │ ├── .dune-keep │ │ ├── Encoding │ │ │ └── index.html │ │ ├── Services │ │ │ └── index.html │ │ ├── Types │ │ │ └── index.html │ │ └── index.html │ ├── Js_json │ │ ├── .dune-keep │ │ ├── JSON_to_Js │ │ │ └── index.html │ │ ├── JSON_to_Js_Converter │ │ │ └── index.html │ │ ├── Js_to_JSON │ │ │ └── index.html │ │ ├── Js_to_JSON_Converter │ │ │ └── index.html │ │ ├── Make_Conv │ │ │ ├── argument-1-C │ │ │ │ └── index.html │ │ │ └── index.html │ │ ├── index.html │ │ └── module-type-Converter │ │ │ └── index.html │ ├── Ppx │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_client │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_common │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_compat │ │ ├── .dune-keep │ │ └── index.html │ ├── Ppx_server │ │ ├── .dune-keep │ │ └── index.html │ ├── WsCohttp │ │ ├── .dune-keep │ │ └── index.html │ ├── WsCommon │ │ ├── .dune-keep │ │ └── index.html │ ├── WsHttpaf │ │ ├── .dune-keep │ │ └── index.html │ └── index.html ├── highlight.pack.js ├── index.html └── odoc.css ├── dune ├── dune-project ├── ez_api.opam ├── src ├── common │ ├── arg.ml │ ├── doc.ml │ ├── dune │ ├── err.ml │ ├── error_codes.ml │ ├── ezAPI.ml │ ├── js │ │ ├── dune │ │ ├── ezDebug.ml │ │ └── ezLwtSys.ml │ ├── meth.ml │ ├── mime.ml │ ├── multipart.ml │ ├── param.ml │ ├── path.ml │ ├── req.ml │ ├── security.ml │ ├── service.ml │ ├── unix │ │ ├── dune │ │ ├── ezDebug.ml │ │ └── ezLwtSys.ml │ ├── url.ml │ └── virtual │ │ ├── dune │ │ ├── ezDebug.mli │ │ └── ezLwtSys.mli ├── encoding │ ├── dune │ ├── ezEncoding.ml │ ├── ezEncoding.mli │ ├── js │ │ ├── dune │ │ ├── ezjsonm_interface.ml │ │ └── js_json.ml │ ├── unix │ │ ├── dune │ │ └── ezjsonm_interface.ml │ └── virtual │ │ ├── dune │ │ └── ezjsonm_interface.mli ├── ppx │ ├── README.md │ ├── dune │ ├── ppx.ml │ ├── ppx_client.ml │ ├── ppx_common.ml │ ├── ppx_deriving_err_case.ml │ ├── ppx_req.ml │ └── ppx_server.ml ├── request │ ├── dune │ ├── ezCohttp_base.ml │ ├── ezRequest.ml │ ├── ezRequest.mli │ ├── ezRequest_lwt.ml │ ├── ezRequest_lwt.mli │ ├── js │ │ ├── coxhr │ │ │ ├── dune │ │ │ ├── ezCoXhr.ml │ │ │ ├── ezCoXhr_lwt.ml │ │ │ ├── ezReq.ml │ │ │ └── ezReq_lwt.ml │ │ ├── fetch │ │ │ ├── dune │ │ │ ├── ezFetch.ml │ │ │ ├── ezFetch_lwt.ml │ │ │ ├── ezReq.ml │ │ │ └── ezReq_lwt.ml │ │ ├── nodejs │ │ │ ├── dune │ │ │ ├── ezNodeJS.ml │ │ │ ├── ezNodeJS_lwt.ml │ │ │ ├── ezReq.ml │ │ │ ├── ezReq_lwt.ml │ │ │ └── nodejs_common.ml │ │ └── xhr │ │ │ ├── dune │ │ │ ├── ezReq.ml │ │ │ ├── ezReq_lwt.ml │ │ │ ├── ezXhr.ml │ │ │ └── ezXhr_lwt.ml │ ├── unix │ │ ├── cohttp │ │ │ ├── dune │ │ │ ├── ezCohttp.ml │ │ │ ├── ezCohttp_lwt.ml │ │ │ ├── ezReq.ml │ │ │ └── ezReq_lwt.ml │ │ ├── curl │ │ │ ├── dune │ │ │ ├── ezCurl.ml │ │ │ ├── ezCurl_common.ml │ │ │ ├── ezCurl_lwt.ml │ │ │ ├── ezReq.ml │ │ │ └── ezReq_lwt.ml │ │ ├── default │ │ │ ├── dune │ │ │ ├── ezReq.curl.ml │ │ │ ├── ezReq.dummy.ml │ │ │ ├── ezReq_lwt.cohttp.ml │ │ │ ├── ezReq_lwt.curl.ml │ │ │ ├── ezReq_lwt.dummy.ml │ │ │ └── ezReq_lwt.httpun.ml │ │ └── httpun │ │ │ ├── dune │ │ │ ├── ezHttpun_lwt.ml │ │ │ ├── ezReq_lwt.ml │ │ │ ├── httpun_client.ml │ │ │ ├── httpun_tls.both.ml │ │ │ ├── httpun_tls.none.ml │ │ │ ├── httpun_tls.ssl.ml │ │ │ └── httpun_tls.tls.ml │ ├── verbose.ml │ └── virtual │ │ ├── cb │ │ ├── dune │ │ └── ezReq.mli │ │ ├── lwt │ │ ├── dune │ │ └── ezReq_lwt.mli │ │ └── s │ │ ├── dune │ │ ├── ezReq_S.mli │ │ └── ezReq_lwt_S.mli ├── server │ ├── answer.ml │ ├── cohttp │ │ ├── dune │ │ ├── ezAPIServerCohttp.ml │ │ └── ezServer.ml │ ├── default │ │ ├── dune │ │ ├── ezServer.cohttp.ml │ │ ├── ezServer.dummy.ml │ │ ├── ezServer.httpaf.ml │ │ └── ezServer.httpun.ml │ ├── directory.ml │ ├── dune │ ├── ezAPIServer.ml │ ├── ezAPIServerUtils.ml │ ├── ezOpenAPI.ml │ ├── file.ml │ ├── gMTime.ml │ ├── httpaf │ │ ├── dune │ │ ├── ezAPIServerHttpAf.ml │ │ └── ezServer.ml │ ├── httpun │ │ ├── dune │ │ ├── ezAPIServerHttpun.ml │ │ └── ezServer.ml │ ├── ip.dummy.ml │ ├── ip.geoip.ml │ ├── rlimit_no_file.c │ ├── server_common.ml │ ├── timings.ml │ ├── virtual │ │ ├── dune │ │ └── ezServer.mli │ ├── websocket │ │ ├── cohttp │ │ │ ├── dune │ │ │ ├── wsCohttp.dummy.ml │ │ │ ├── wsCohttp.real.ml │ │ │ └── wsCommon.ml │ │ ├── httpaf │ │ │ ├── dune │ │ │ └── wsHttpaf.dummy.ml │ │ └── httpun │ │ │ ├── dune │ │ │ ├── wsHttpun.dummy.ml │ │ │ └── wsHttpun.real.ml │ └── yaml │ │ ├── dune │ │ ├── ezYaml.dummy.ml │ │ └── ezYaml.yaml.ml ├── session │ ├── auth_apis │ │ ├── dune │ │ ├── facebook.ml │ │ └── google.ml │ ├── blake2s │ │ ├── dune │ │ └── ezHash.ml │ ├── dune │ ├── ezCookieServer.cohttp.ml │ ├── ezCookieServer.dummy.ml │ ├── ezCookieServer.mli │ ├── ezHash.ml │ ├── ezSession.ml │ ├── ezSessionClient.ml │ ├── ezSessionClient.mli │ ├── ezSessionServer.ml │ ├── ezSessionServer.mli │ ├── md5 │ │ ├── dune │ │ └── ezHash.ml │ ├── sha2 │ │ ├── dune │ │ └── ezHash.ml │ ├── sha3 │ │ ├── dune │ │ └── ezHash.ml │ └── virtual │ │ ├── dune │ │ └── ezHash.mli ├── tools │ ├── loads │ │ ├── dune │ │ ├── ezLoads.ml │ │ └── ezLoads_offset.ml │ ├── recaptcha │ │ ├── dune │ │ └── ezRecaptcha.ml │ └── sendgrid │ │ ├── dune │ │ ├── ezSendgrid.ml │ │ ├── ezSendgrid_encoding.ml │ │ ├── ezSendgrid_services.ml │ │ └── ezSendgrid_types.ml └── websocket │ ├── dune │ ├── ezWsCommon.ml │ ├── js │ ├── dune │ └── ezWs.ml │ ├── unix │ ├── cohttp │ │ ├── dune │ │ └── ezWs.ml │ ├── default │ │ ├── dune │ │ ├── ezWs.cohttp.ml │ │ ├── ezWs.dummy.ml │ │ └── ezWs.httpun.ml │ └── httpun │ │ ├── dune │ │ └── ezWs.ml │ └── virtual │ ├── dune │ └── ezWs.mli └── test ├── dune ├── loads ├── dune ├── test_loads.ml ├── test_loads_lib.ml └── test_loads_server.ml ├── main_cohttp.ml ├── main_curl.ml ├── ppx ├── dune ├── test_ppx_client.ml ├── test_ppx_err_case.ml ├── test_ppx_lib.ml └── test_ppx_server.ml ├── session ├── Makefile ├── dune ├── index.html ├── test_cookie_client.dummy.ml ├── test_cookie_client.real.ml ├── test_cookie_server.ml └── test_session_lib.ml ├── test.ml ├── test_ws.html ├── test_ws.js ├── test_ws.ml └── websocket ├── dune ├── test_ws_client.ml ├── test_ws_lib.ml └── test_ws_server.ml /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | push: 8 | branches: 9 | - master 10 | - next 11 | 12 | jobs: 13 | build: 14 | strategy: 15 | fail-fast: false 16 | matrix: 17 | os: 18 | - ubuntu-latest 19 | # - macos-latest 20 | ocaml-compiler: 21 | - 4 22 | 23 | runs-on: ${{ matrix.os }} 24 | 25 | steps: 26 | - name: Checkout code 27 | uses: actions/checkout@v4 28 | 29 | - name: Use OCaml ${{ matrix.ocaml-compiler }} 30 | uses: ocaml/setup-ocaml@v3 31 | with: 32 | ocaml-compiler: ${{ matrix.ocaml-compiler }} 33 | 34 | - name: Install system packages required by opam packages 35 | run: opam depext --update geoip ocurl tls 36 | 37 | - name: Install opam packages 38 | run: | 39 | opam install $(opam show -f depopts: . | sed -e 's/{.*}//g' -e 's/"//g') 40 | opam install . --deps-only --with-doc --with-test 41 | 42 | - name: Run build 43 | run: opam exec -- make build 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _opam 2 | _build 3 | _local 4 | *~ 5 | *.merlin 6 | *.install 7 | *.exe 8 | .ocamlformat 9 | test/session/*.js -------------------------------------------------------------------------------- /CHANGES.md: -------------------------------------------------------------------------------- 1 | ## [2.1.0](https://github.com/ocamlpro/ez_api/compare/v2.0.0...2.1.0) (2024-07-08) 2 | 3 | * revamp registration of services (register/hide) 4 | * fixes: 5 | * allow different methods with same path 6 | * 404 instead of 405 if the path has no services 7 | * improvements: 8 | * extension syntax instead of attributes for ppx 9 | * allow multipart in curl common 10 | * use http code defined in error cases in the server 11 | * remove deprecated curl_multi 12 | 13 | ## [2.0.0](https://github.com/ocamlpro/ez_api/compare/1.2.0...v2.0.0) (2023-02-06) 14 | 15 | * fixes: 16 | * capital method names 17 | * curl callback 18 | * improvements: 19 | * export session services 20 | * cookie support 21 | 22 | ## [1.2.0](https://github.com/ocamlpro/ez_api/compare/1.1.0...1.2.0) (2022-06-27) 23 | 24 | * release dependencies constraints 25 | * better result errors 26 | 27 | ## [1.1.0](https://github.com/ocamlpro/ez_api/compare/v1.0.0...1.1.0) (2022-04-11) 28 | 29 | * allow collision of static and dynamic path in server 30 | * update js_of_ocaml, cohttp, ppx_deriving_encoding deps 31 | 32 | ## [1.0.0](https://github.com/ocamlpro/ez_api/compare/0.1.0...v1.0.0) (2021-12-01) 33 | 34 | * better optional dependencies 35 | * various fixes 36 | 37 | ## 0.1.0 (2021-31-03) 38 | 39 | First release 40 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all build dev install clean doc deps opt-deps remove-opt-deps 2 | 3 | all: build 4 | 5 | build: 6 | @dune build src 7 | 8 | dev: 9 | @dune build 10 | 11 | install: 12 | @dune install 13 | 14 | clean: 15 | @dune clean 16 | 17 | doc: 18 | @dune build @doc 19 | @rsync -ru _build/default/_doc/_html/* docs/ 20 | 21 | deps: 22 | @opam install --deps-only . 23 | 24 | opt-deps: deps 25 | @opam pin -n add websocket-httpaf.~dev https://github.com/anmonteiro/websocket-httpaf.git 26 | @opam pin -n add websocket-httpaf-lwt.~dev https://github.com/anmonteiro/websocket-httpaf.git 27 | @opam install $(shell opam show -f depopts . | sed -e 's/{.*}//g' -e 's/"//g') 28 | 29 | remove-opt-deps: 30 | @opam remove $(opam show -f depopts: . | sed -e 's/{.*}//g' -e 's/"//g') 31 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman 2 | -------------------------------------------------------------------------------- /docs/ez-api/EzAPI/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI/Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | Error_codes (ez-api.EzAPI.Error_codes)

Module EzAPI.Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIJS/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIJS/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIJS/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPIJS (ez-api.EzAPIJS)

Module EzAPIJS

-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerCohttp__/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerCohttp__/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerCohttp__/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPIServerCohttp__ (ez-api.EzAPIServerCohttp__)

Module EzAPIServerCohttp__

module Ws : sig ... end
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerCohttp__Ws/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerCohttp__Ws/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerHttpAf/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerHttpAf/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils/Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez-api.EzAPIServerUtils.Directory.Step)

Module Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils/Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ip (ez-api.EzAPIServerUtils.Ip)

Module EzAPIServerUtils.Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__/Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez-api.EzAPIServerUtils__.Directory.Step)

Module Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__/Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ip (ez-api.EzAPIServerUtils__.Ip)

Module EzAPIServerUtils__.Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Answer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__Answer/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Directory/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__Directory/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez-api.EzAPIServerUtils__Directory.Step)

Module EzAPIServerUtils__Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__File/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__File/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__GMTime/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__GMTime/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Ip/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__Ip/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPIServerUtils__Ip (ez-api.EzAPIServerUtils__Ip)

Module EzAPIServerUtils__Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez-api/EzAPIServerUtils__Timings/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPIServerUtils__Timings/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI_/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI_/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI_/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPI_ (ez-api.EzAPI_)

Module EzAPI_

-------------------------------------------------------------------------------- /docs/ez-api/EzAPI__/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__/Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | Error_codes (ez-api.EzAPI__.Error_codes)

Module EzAPI__.Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Arg/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Arg/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Doc/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Doc/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Err/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Err/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Error_codes/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Error_codes/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPI__Error_codes (ez-api.EzAPI__Error_codes)

Module EzAPI__Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Meth/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Meth/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Mime/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Mime/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Param/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Param/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Path/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Path/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Req/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Req/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Security/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Security/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Service/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Service/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzAPI__Url/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzAPI__Url/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCoXhr/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCoXhr/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCoXhr_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCoXhr_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCohttp_base/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCohttp_base/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCohttp_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCohttp_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCookieServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCookieServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCurl/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCurl/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCurl_common/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCurl_common/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzCurl_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzCurl_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzDebug/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzDebug/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzDebug/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzDebug (ez-api.EzDebug)

Module EzDebug

val printf : ('a, unit, string, unit) Stdlib.format4 -> 'a
val log : string -> unit
-------------------------------------------------------------------------------- /docs/ez-api/EzEncoding/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzEncoding/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzEncoding/Ezjsonm/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ezjsonm (ez-api.EzEncoding.Ezjsonm)

Module EzEncoding.Ezjsonm

val from_string : string -> Json_repr.ezjsonm
val to_string : ?⁠minify:bool -> Json_repr.ezjsonm -> string
-------------------------------------------------------------------------------- /docs/ez-api/EzEncodingJS/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzEncodingJS/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzEncodingJS/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzEncodingJS (ez-api.EzEncodingJS)

Module EzEncodingJS

-------------------------------------------------------------------------------- /docs/ez-api/EzFetch/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzFetch/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzFetch_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzFetch_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzLwtSys/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzLwtSys/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzLwtSys/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzLwtSys (ez-api.EzLwtSys)

Module EzLwtSys

val run : (unit -> unit Lwt.t) -> unit
val sleep : float -> unit Lwt.t
-------------------------------------------------------------------------------- /docs/ez-api/EzOpenAPI/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzOpenAPI/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzRecaptcha/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzRecaptcha/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzRecaptcha/Encoding/index.html: -------------------------------------------------------------------------------- 1 | 2 | Encoding (ez-api.EzRecaptcha.Encoding)

Module EzRecaptcha.Encoding

val tsp : CalendarLib.Printer.Calendar.t Json_encoding.encoding
val captcha : recaptcha Json_encoding.encoding
-------------------------------------------------------------------------------- /docs/ez-api/EzReq/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzReq/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzReq_S/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzReq_S/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzReq_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzReq_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzReq_lwt_S/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzReq_lwt_S/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzRequest/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzRequest/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzRequest_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzRequest_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSendgrid/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSendgrid/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSendgrid_encoding/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSendgrid_encoding/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSendgrid_services/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSendgrid_services/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSendgrid_types/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSendgrid_types/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzServer/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzServer (ez-api.EzServer)

Module EzServer

val server : ?⁠catch:(string -> exn -> string EzAPIServerUtils.Answer.t Lwt.t) -> (int * EzAPIServerUtils.server_kind) list -> unit Lwt.t
val set_debug : unit -> unit
-------------------------------------------------------------------------------- /docs/ez-api/EzSession/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSession/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSessionClient/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSessionClient/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzSessionClient/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzSessionClient (ez-api.EzSessionClient)

Module EzSessionClient

module Make : functor (S : EzSession.TYPES.SessionArg) -> sig ... end
-------------------------------------------------------------------------------- /docs/ez-api/EzSessionServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzSessionServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzWs/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzWs/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzWsCommon/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzWsCommon/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzXhr/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzXhr/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/EzXhr_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/EzXhr_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ezjsonm_interface/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Ezjsonm_interface/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ezjsonm_interface/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ezjsonm_interface (ez-api.Ezjsonm_interface)

Module Ezjsonm_interface

val from_string : string -> Json_repr.ezjsonm
val to_string : ?⁠minify:bool -> Json_repr.ezjsonm -> string
-------------------------------------------------------------------------------- /docs/ez-api/Facebook/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Facebook/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Facebook/Encoding/index.html: -------------------------------------------------------------------------------- 1 | 2 | Encoding (ez-api.Facebook.Encoding)

Module Facebook.Encoding

val picture_encoding : string Json_encoding.encoding
val encoding : Types.info Json_encoding.encoding
val profile : Types.profile Json_encoding.encoding
-------------------------------------------------------------------------------- /docs/ez-api/Google/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Google/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Js_json/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Js_json/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Js_json/JSON_to_Js/index.html: -------------------------------------------------------------------------------- 1 | 2 | JSON_to_Js (ez-api.Js_json.JSON_to_Js)

Module Js_json.JSON_to_Js

val convert : ('a JSON_to_Js_Converter._fromJSON_to_Js_Converter._to) zip list -> JSON_to_Js_Converter._to
-------------------------------------------------------------------------------- /docs/ez-api/Js_json/Js_to_JSON/index.html: -------------------------------------------------------------------------------- 1 | 2 | Js_to_JSON (ez-api.Js_json.Js_to_JSON)

Module Js_json.Js_to_JSON

val convert : ('a Js_to_JSON_Converter._fromJs_to_JSON_Converter._to) zip list -> Js_to_JSON_Converter._to
-------------------------------------------------------------------------------- /docs/ez-api/Js_json/Make_Conv/index.html: -------------------------------------------------------------------------------- 1 | 2 | Make_Conv (ez-api.Js_json.Make_Conv)

Module Js_json.Make_Conv

Parameters

Signature

val convert : ('a C._fromC._to) zip list -> C._to
-------------------------------------------------------------------------------- /docs/ez-api/Ppx/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Ppx/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ppx/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx (ez-api.Ppx)

Module Ppx

-------------------------------------------------------------------------------- /docs/ez-api/Ppx_client/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Ppx_client/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ppx_client/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx_client (ez-api.Ppx_client)

Module Ppx_client

-------------------------------------------------------------------------------- /docs/ez-api/Ppx_common/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Ppx_common/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ppx_server/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/Ppx_server/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/Ppx_server/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx_server (ez-api.Ppx_server)

Module Ppx_server

-------------------------------------------------------------------------------- /docs/ez-api/WsCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/WsCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/WsCommon/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/WsCommon/.dune-keep -------------------------------------------------------------------------------- /docs/ez-api/WsHttpaf/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez-api/WsHttpaf/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI/Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | Error_codes (ez_api.EzAPI.Error_codes)

Module EzAPI.Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIJS/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIJS/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIJS/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPIJS (ez_api.EzAPIJS)

Module EzAPIJS

-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerHttpAf/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerHttpAf/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils/Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez_api.EzAPIServerUtils.Directory.Step)

Module Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils/Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ip (ez_api.EzAPIServerUtils.Ip)

Module EzAPIServerUtils.Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__/Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez_api.EzAPIServerUtils__.Directory.Step)

Module Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__/Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ip (ez_api.EzAPIServerUtils__.Ip)

Module EzAPIServerUtils__.Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Answer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__Answer/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Directory/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__Directory/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Directory/Step/index.html: -------------------------------------------------------------------------------- 1 | 2 | Step (ez_api.EzAPIServerUtils__Directory.Step)

Module EzAPIServerUtils__Directory.Step

type t =
| Static of string
| Dynamic of EzAPI.Arg.descr
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__File/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__File/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__GMTime/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__GMTime/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Ip/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__Ip/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Ip/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPIServerUtils__Ip (ez_api.EzAPIServerUtils__Ip)

Module EzAPIServerUtils__Ip

val req_ips : (string, EzAPI.TYPES.ip_info) Stdlib.Hashtbl.t
val register : float -> string -> unit
-------------------------------------------------------------------------------- /docs/ez_api/EzAPIServerUtils__Timings/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPIServerUtils__Timings/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__/Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | Error_codes (ez_api.EzAPI__.Error_codes)

Module EzAPI__.Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Arg/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Arg/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Doc/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Doc/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Err/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Err/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Error_codes/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Error_codes/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Error_codes/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzAPI__Error_codes (ez_api.EzAPI__Error_codes)

Module EzAPI__Error_codes

val codes : string $t
val error : $key -> string option
val code : string -> $key option
-------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Meth/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Meth/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Mime/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Mime/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Param/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Param/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Path/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Path/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Req/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Req/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Security/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Security/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Service/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Service/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzAPI__Url/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzAPI__Url/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCoXhr/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCoXhr/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCoXhr_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCoXhr_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCohttp_base/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCohttp_base/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCohttp_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCohttp_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCookieServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCookieServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCurl/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCurl/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCurl_common/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCurl_common/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzCurl_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzCurl_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzDebug/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzDebug/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzDebug/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzDebug (ez_api.EzDebug)

Module EzDebug

val printf : ('a, unit, string, unit) Stdlib.format4 -> 'a
val log : string -> unit
-------------------------------------------------------------------------------- /docs/ez_api/EzEncoding/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzEncoding/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzEncoding/Ezjsonm/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ezjsonm (ez_api.EzEncoding.Ezjsonm)

Module EzEncoding.Ezjsonm

val from_string : string -> Json_repr.ezjsonm
val to_string : ?⁠minify:bool -> Json_repr.ezjsonm -> string
-------------------------------------------------------------------------------- /docs/ez_api/EzEncodingJS/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzEncodingJS/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzEncodingJS/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzEncodingJS (ez_api.EzEncodingJS)

Module EzEncodingJS

-------------------------------------------------------------------------------- /docs/ez_api/EzFetch/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzFetch/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzFetch_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzFetch_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzHash/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzHash/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzHash/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzHash (ez_api.EzHash)

Module EzHash

val hash : string -> string
-------------------------------------------------------------------------------- /docs/ez_api/EzLoads/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzLoads/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzLoads_offset/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzLoads_offset/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzLwtSys/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzLwtSys/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzLwtSys/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzLwtSys (ez_api.EzLwtSys)

Module EzLwtSys

val run : (unit -> unit Lwt.t) -> unit
val sleep : float -> unit Lwt.t
-------------------------------------------------------------------------------- /docs/ez_api/EzOpenAPI/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzOpenAPI/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzRecaptcha/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzRecaptcha/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzRecaptcha/Encoding/index.html: -------------------------------------------------------------------------------- 1 | 2 | Encoding (ez_api.EzRecaptcha.Encoding)

Module EzRecaptcha.Encoding

val tsp : CalendarLib.Printer.Calendar.t Json_encoding.encoding
val captcha : recaptcha Json_encoding.encoding
-------------------------------------------------------------------------------- /docs/ez_api/EzReq/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzReq/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzReq_S/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzReq_S/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzReq_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzReq_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzReq_lwt_S/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzReq_lwt_S/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzRequest/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzRequest/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzRequest_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzRequest_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSendgrid/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSendgrid/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSendgrid_encoding/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSendgrid_encoding/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSendgrid_services/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSendgrid_services/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSendgrid_types/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSendgrid_types/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzServer/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzServer (ez_api.EzServer)

Module EzServer

val server : ?⁠catch:(string -> exn -> string EzAPIServerUtils.Answer.t Lwt.t) -> (int * EzAPIServerUtils.server_kind) list -> unit Lwt.t
val set_debug : unit -> unit
-------------------------------------------------------------------------------- /docs/ez_api/EzSession/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSession/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSessionClient/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSessionClient/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzSessionClient/index.html: -------------------------------------------------------------------------------- 1 | 2 | EzSessionClient (ez_api.EzSessionClient)

Module EzSessionClient

module Make : functor (S : EzSession.TYPES.SessionArg) -> sig ... end
-------------------------------------------------------------------------------- /docs/ez_api/EzSessionServer/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzSessionServer/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzWs/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzWs/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzWsCommon/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzWsCommon/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzXhr/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzXhr/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/EzXhr_lwt/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/EzXhr_lwt/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ezjsonm_interface/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ezjsonm_interface/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ezjsonm_interface/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ezjsonm_interface (ez_api.Ezjsonm_interface)

Module Ezjsonm_interface

val from_string : string -> Json_repr.ezjsonm
val to_string : ?⁠minify:bool -> Json_repr.ezjsonm -> string
-------------------------------------------------------------------------------- /docs/ez_api/Facebook/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Facebook/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Facebook/Encoding/index.html: -------------------------------------------------------------------------------- 1 | 2 | Encoding (ez_api.Facebook.Encoding)

Module Facebook.Encoding

val picture_encoding : string Json_encoding.encoding
val encoding : Types.info Json_encoding.encoding
val profile : Types.profile Json_encoding.encoding
-------------------------------------------------------------------------------- /docs/ez_api/Google/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Google/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Js_json/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Js_json/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Js_json/JSON_to_Js/index.html: -------------------------------------------------------------------------------- 1 | 2 | JSON_to_Js (ez_api.Js_json.JSON_to_Js)

Module Js_json.JSON_to_Js

val convert : ('a JSON_to_Js_Converter._fromJSON_to_Js_Converter._to) zip list -> JSON_to_Js_Converter._to
-------------------------------------------------------------------------------- /docs/ez_api/Js_json/Js_to_JSON/index.html: -------------------------------------------------------------------------------- 1 | 2 | Js_to_JSON (ez_api.Js_json.Js_to_JSON)

Module Js_json.Js_to_JSON

val convert : ('a Js_to_JSON_Converter._fromJs_to_JSON_Converter._to) zip list -> Js_to_JSON_Converter._to
-------------------------------------------------------------------------------- /docs/ez_api/Js_json/Make_Conv/index.html: -------------------------------------------------------------------------------- 1 | 2 | Make_Conv (ez_api.Js_json.Make_Conv)

Module Js_json.Make_Conv

Parameters

Signature

val convert : ('a C._fromC._to) zip list -> C._to
-------------------------------------------------------------------------------- /docs/ez_api/Ppx/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ppx/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ppx/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx (ez_api.Ppx)

Module Ppx

-------------------------------------------------------------------------------- /docs/ez_api/Ppx_client/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ppx_client/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ppx_client/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx_client (ez_api.Ppx_client)

Module Ppx_client

-------------------------------------------------------------------------------- /docs/ez_api/Ppx_common/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ppx_common/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ppx_compat/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ppx_compat/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ppx_compat/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx_compat (ez_api.Ppx_compat)

Module Ppx_compat

val string_literal : Ppxlib.constant -> string option
-------------------------------------------------------------------------------- /docs/ez_api/Ppx_server/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/Ppx_server/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/Ppx_server/index.html: -------------------------------------------------------------------------------- 1 | 2 | Ppx_server (ez_api.Ppx_server)

Module Ppx_server

-------------------------------------------------------------------------------- /docs/ez_api/WsCohttp/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/WsCohttp/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/WsCommon/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/WsCommon/.dune-keep -------------------------------------------------------------------------------- /docs/ez_api/WsHttpaf/.dune-keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OCamlPro/ez_api/dc156904113f323016ad8cce8e7ea5bdbe4d0bad/docs/ez_api/WsHttpaf/.dune-keep -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | index 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |

OCaml package documentation

13 |
    14 |
  1. ez_api
  2. 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /dune: -------------------------------------------------------------------------------- 1 | (dirs :standard) 2 | (env 3 | (_ 4 | (flags (:standard -w +a-4-41-42-44-45-48-70 -warn-error -a)))) 5 | -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 2.8) 2 | (generate_opam_files true) 3 | (name ez_api) 4 | (version 2.0.0) 5 | (source (github ocamlpro/ez_api)) 6 | (license LGPL-2.1-only) 7 | (authors 8 | "Cagdas Bozman " 9 | "Michael Laporte " 10 | "Fabrice Le Fessant " 11 | "Maxime Levillain " 12 | "Alain Mebsout ") 13 | (maintainers "Fabrice Le Fessant ") 14 | 15 | (package 16 | (name ez_api) 17 | (synopsis "Easy API library and tools") 18 | (documentation "https://ocpmax.github.io/ez_api/ez_api/index.html") 19 | (depends 20 | (ocaml (>= 4.08)) 21 | (json-data-encoding (>= 1.0.1)) 22 | (lwt (>= 4.0.0)) 23 | (ezjsonm (>= 1.1.0)) 24 | uuidm) 25 | (depopts 26 | geoip 27 | js_of_ocaml-lwt 28 | calendar 29 | cohttp-lwt-unix 30 | cohttp-lwt-jsoo 31 | httpaf-lwt-unix 32 | ocurl 33 | ezjs_fetch 34 | websocket-lwt-unix 35 | ppx_deriving_encoding 36 | digestif 37 | yaml 38 | httpun-lwt-unix 39 | httpun-ws-lwt-unix 40 | ) 41 | (conflicts 42 | (js_of_ocaml-lwt (< 6.0.0)) 43 | (cohttp-lwt-unix (< 5.0.0)) 44 | (cohttp-lwt-jsoo (< 5.0.0)) 45 | (calendar (< 2.03.0)) 46 | (httpaf-lwt-unix (< 0.6.0)) 47 | (ezjs_fetch (< 0.2)) 48 | (ocurl (< 0.8.0)) 49 | (digestif (< 1.0.0)) 50 | (ppx_deriving_encoding (< 0.4.0)) 51 | )) 52 | -------------------------------------------------------------------------------- /src/common/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezAPI) 3 | (public_name ez_api) 4 | (modules arg param req path mime meth err security service doc url error_codes multipart ezAPI) 5 | (libraries lwt ezEncoding ezDebug ezLwtSys uuidm)) 6 | 7 | (library 8 | (name ezAPIJS) 9 | (public_name ez_api.js) 10 | (optional) 11 | (modules) 12 | (libraries ezAPI ezjsonm_js ezDebug_js ezLwtSys_js)) 13 | -------------------------------------------------------------------------------- /src/common/js/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezDebug_js) 3 | (public_name ez_api.debug_js) 4 | (optional) 5 | (modules ezDebug) 6 | (preprocess (pps js_of_ocaml-ppx)) 7 | (implements ezDebug)) 8 | 9 | (library 10 | (name ezLwtSys_js) 11 | (public_name ez_api.lwt_js) 12 | (optional) 13 | (modules ezLwtSys) 14 | (implements ezLwtSys) 15 | (libraries js_of_ocaml)) 16 | -------------------------------------------------------------------------------- /src/common/js/ezDebug.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | open Js_of_ocaml 12 | 13 | let printf fmt = Printf.kprintf (fun s -> Console.console##debug (Js.string s)) fmt 14 | let log s = Console.console##log (Js.string s) 15 | -------------------------------------------------------------------------------- /src/common/js/ezLwtSys.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let run = Lwt.async 12 | let sleep d = 13 | let t, w = Lwt.task () in 14 | let id = Js_of_ocaml.Dom_html.setTimeout (Lwt.wakeup w) (d *. 1000.) in 15 | Lwt.on_cancel t (fun () -> Js_of_ocaml.Dom_html.clearTimeout id); 16 | t 17 | -------------------------------------------------------------------------------- /src/common/unix/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezDebug_unix) 3 | (public_name ez_api.debug_unix) 4 | (modules ezDebug) 5 | (implements ezDebug)) 6 | 7 | (library 8 | (name ezLwtSys_unix) 9 | (public_name ez_api.lwt_unix) 10 | (optional) 11 | (modules ezLwtSys) 12 | (implements ezLwtSys) 13 | (libraries lwt.unix)) 14 | -------------------------------------------------------------------------------- /src/common/unix/ezDebug.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let printf fmt = Printf.kprintf (fun s -> Format.eprintf "%s@." s) fmt 12 | let log = prerr_endline 13 | -------------------------------------------------------------------------------- /src/common/unix/ezLwtSys.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let run f = Lwt_main.run @@ f () 12 | let sleep f = Lwt_unix.sleep f 13 | -------------------------------------------------------------------------------- /src/common/virtual/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezDebug) 3 | (public_name ez_api.debug) 4 | (virtual_modules ezDebug) 5 | (modules ezDebug) 6 | (default_implementation ezDebug_unix)) 7 | 8 | (library 9 | (name ezLwtSys) 10 | (public_name ez_api.lwt_sys) 11 | (virtual_modules ezLwtSys) 12 | (modules ezLwtSys) 13 | (default_implementation ezLwtSys_unix) 14 | (libraries lwt)) 15 | -------------------------------------------------------------------------------- /src/common/virtual/ezDebug.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | val printf : ('a, unit, string, unit) format4 -> 'a 12 | val log : string -> unit 13 | -------------------------------------------------------------------------------- /src/common/virtual/ezLwtSys.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | val run : (unit -> unit Lwt.t) -> unit 12 | val sleep : float -> unit Lwt.t 13 | -------------------------------------------------------------------------------- /src/encoding/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezEncoding) 3 | (public_name ez_api.encoding) 4 | (modules ezEncoding) 5 | (libraries json-data-encoding ezjsonm_interface hex uutf)) 6 | 7 | (library 8 | (name ezEncodingJS) 9 | (public_name ez_api.encoding_js) 10 | (optional) 11 | (modules) 12 | (libraries ezEncoding ezjsonm_js)) 13 | -------------------------------------------------------------------------------- /src/encoding/js/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (public_name ez_api.js_json) 3 | (name js_json) 4 | (optional) 5 | (preprocess (pps js_of_ocaml-ppx)) 6 | (modules js_json) 7 | (libraries json-data-encoding js_of_ocaml)) 8 | 9 | (library 10 | (public_name ez_api.ezjsonm_js) 11 | (name ezjsonm_js) 12 | (optional) 13 | (implements ezjsonm_interface) 14 | (preprocess (pps js_of_ocaml-ppx)) 15 | (modules ezjsonm_interface) 16 | (libraries js_json)) 17 | -------------------------------------------------------------------------------- /src/encoding/unix/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (public_name ez_api.ezjsonm_unix) 3 | (name ezjsonm_unix) 4 | (implements ezjsonm_interface) 5 | (modules ezjsonm_interface) 6 | (libraries ezjsonm)) 7 | -------------------------------------------------------------------------------- /src/encoding/unix/ezjsonm_interface.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let from_string = Ezjsonm.value_from_string 12 | let to_string = Ezjsonm.value_to_string 13 | -------------------------------------------------------------------------------- /src/encoding/virtual/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (public_name ez_api.ezjsonm) 3 | (name ezjsonm_interface) 4 | (virtual_modules ezjsonm_interface) 5 | (libraries json-data-encoding) 6 | (default_implementation ezjsonm_unix)) 7 | -------------------------------------------------------------------------------- /src/encoding/virtual/ezjsonm_interface.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | val from_string : string -> Json_repr.ezjsonm 12 | val to_string : ?minify:bool -> Json_repr.ezjsonm -> string 13 | -------------------------------------------------------------------------------- /src/ppx/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ppx_common) 3 | (public_name ez_api.ppx_common) 4 | (optional) 5 | (modules ppx_common) 6 | (preprocess (pps ppxlib.metaquot)) 7 | (libraries ppx_deriving_encoding.lib)) 8 | 9 | (library 10 | (name ppx_client) 11 | (public_name ez_api.ppx_client) 12 | (optional) 13 | (modules ppx_client) 14 | (kind ppx_rewriter) 15 | (libraries ppx_common) 16 | (ppx_runtime_libraries ezAPI)) 17 | 18 | (library 19 | (name ppx) 20 | (public_name ez_api.ppx) 21 | (optional) 22 | (modules ppx) 23 | (kind ppx_rewriter) 24 | (libraries ppx_common) 25 | (ppx_runtime_libraries ezAPIServerUtils)) 26 | 27 | (library 28 | (name ppx_server) 29 | (public_name ez_api.ppx_server) 30 | (optional) 31 | (modules ppx_server) 32 | (kind ppx_rewriter) 33 | (libraries ppx_common) 34 | (ppx_runtime_libraries ezAPIServer)) 35 | 36 | (library 37 | (name ppx_req) 38 | (public_name ez_api.ppx_req) 39 | (optional) 40 | (modules ppx_req) 41 | (kind ppx_rewriter) 42 | (libraries ppx_common) 43 | (ppx_runtime_libraries ezReq_lwt)) 44 | 45 | (library 46 | (name ppx_deriving_err_case) 47 | (public_name ez_api.ppx_err_case) 48 | (optional) 49 | (modules ppx_deriving_err_case) 50 | (preprocess (pps ppxlib.metaquot)) 51 | (kind ppx_rewriter) 52 | (ppx_runtime_libraries ez_api) 53 | (libraries ppx_deriving_encoding.lib ez_api)) 54 | -------------------------------------------------------------------------------- /src/ppx/ppx.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let () = 12 | Ppxlib.Driver.register_transformation "ez_api" ~impl:Ppx_common.impl; 13 | Ppx_common.derivers None; 14 | Ppx_common.global_deriver None 15 | -------------------------------------------------------------------------------- /src/ppx/ppx_client.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let () = 12 | let kind = Some `client in 13 | Ppxlib.Driver.register_transformation "ez_api_client" ~impl:(Ppx_common.impl ?kind); 14 | Ppx_common.derivers kind; 15 | Ppx_common.global_deriver kind 16 | -------------------------------------------------------------------------------- /src/ppx/ppx_req.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let () = 12 | let kind = Some `request in 13 | Ppxlib.Driver.register_transformation "ez_api_req" ~impl:(Ppx_common.impl ?kind); 14 | Ppx_common.derivers kind; 15 | Ppx_common.global_deriver kind 16 | -------------------------------------------------------------------------------- /src/ppx/ppx_server.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let () = 12 | let kind = Some `server in 13 | Ppxlib.Driver.register_transformation "ez_api_server" ~impl:(Ppx_common.impl ?kind); 14 | Ppx_common.derivers kind; 15 | Ppx_common.global_deriver kind 16 | -------------------------------------------------------------------------------- /src/request/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name verbose) 3 | (public_name ez_api.request_verbose) 4 | (modules verbose)) 5 | 6 | (library 7 | (name ezRequest) 8 | (public_name ez_api.request) 9 | (modules ezRequest) 10 | (libraries ezReq_S)) 11 | 12 | (library 13 | (name ezRequest_lwt) 14 | (public_name ez_api.request_lwt) 15 | (modules ezRequest_lwt) 16 | (libraries ezReq_lwt_S)) 17 | 18 | (library 19 | (name ezCohttp_base) 20 | (public_name ez_api.cohttp_base) 21 | (optional) 22 | (modules ezCohttp_base) 23 | (libraries verbose ezAPI cohttp-lwt)) 24 | -------------------------------------------------------------------------------- /src/request/ezRequest.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | (* If the code is > 0, it is an HTTP reply code. Otherwise, it is an 12 | internal error (-1 connection, -2 decoding) *) 13 | 14 | val request_reply_hook : (unit -> unit) ref 15 | 16 | (* Engine independent implementation. Beware: if you use these calls, 17 | you must initialize an engine independantly.*) 18 | 19 | module type S = EzReq_S.S 20 | module type Interface = EzReq_S.Interface 21 | 22 | module ANY : S 23 | 24 | module Make(_ : Interface) : S 25 | -------------------------------------------------------------------------------- /src/request/ezRequest_lwt.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | val request_reply_hook : (unit -> unit) ref 12 | 13 | module type S = EzReq_lwt_S.S 14 | module type Interface = EzReq_lwt_S.Interface 15 | 16 | (* Engine independent implementation. Beware: if you use these calls, 17 | you must initialize an engine independantly.*) 18 | module ANY : S 19 | 20 | module Make(_ : Interface) : S 21 | -------------------------------------------------------------------------------- /src/request/js/coxhr/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezCoXhr) 3 | (public_name ez_api.coxhr) 4 | (optional) 5 | (modules ezCoXhr) 6 | (preprocess (pps js_of_ocaml-ppx)) 7 | (libraries ezRequest ezCohttp_base cohttp-lwt-jsoo ezAPIJS) 8 | (modes byte)) 9 | 10 | (library 11 | (name ezCoXhr_i) 12 | (public_name ez_api.icoxhr) 13 | (optional) 14 | (modules ezReq) 15 | (implements ezReq) 16 | (libraries ezCoXhr) 17 | (modes byte)) 18 | 19 | (library 20 | (name ezCoXhr_lwt) 21 | (public_name ez_api.coxhr_lwt) 22 | (optional) 23 | (modules ezCoXhr_lwt) 24 | (preprocess (pps js_of_ocaml-ppx)) 25 | (libraries ezRequest_lwt ezCohttp_base cohttp-lwt-jsoo ezAPIJS) 26 | (modes byte)) 27 | 28 | (library 29 | (name ezCoXhr_lwt_i) 30 | (public_name ez_api.icoxhr_lwt) 31 | (optional) 32 | (modules ezReq_lwt) 33 | (implements ezReq_lwt) 34 | (libraries ezCoXhr_lwt) 35 | (modes byte)) 36 | -------------------------------------------------------------------------------- /src/request/js/coxhr/ezCoXhr.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | open Lwt.Infix 12 | open EzRequest 13 | 14 | module Base = EzCohttp_base.Make(Cohttp_lwt_jsoo.Client) 15 | 16 | module Interface = struct 17 | let get ?meth ?headers ?msg url f = 18 | Lwt.async @@ fun () -> 19 | Base.get ?meth ?headers ?msg url >|= f 20 | 21 | let post ?meth ?content_type ?content ?headers ?msg url f = 22 | Lwt.async @@ fun () -> 23 | Base.post ?meth ?content_type ?content ?headers ?msg url >|= f 24 | end 25 | 26 | include Make(Interface) 27 | 28 | let () = 29 | Js_of_ocaml.Js.Unsafe.global##.set_verbose_ := Js_of_ocaml.Js.wrap_callback Verbose.set_verbose; 30 | EzDebug.log "ezCoXhr Loaded" 31 | -------------------------------------------------------------------------------- /src/request/js/coxhr/ezCoXhr_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Base = EzCohttp_base.Make(Cohttp_lwt_jsoo.Client) 12 | 13 | module Interface = struct 14 | let get ?meth ?headers ?msg url = 15 | Base.get ?meth ?headers ?msg url 16 | 17 | let post ?meth ?content_type ?content ?headers ?msg url = 18 | Base.post ?meth ?content_type ?content ?headers ?msg url 19 | end 20 | 21 | include EzRequest_lwt.Make(Interface) 22 | 23 | let () = 24 | Js_of_ocaml.Js.Unsafe.global##.set_verbose_ := Js_of_ocaml.Js.wrap_callback Verbose.set_verbose; 25 | EzDebug.log "ezCoXhr Loaded" 26 | -------------------------------------------------------------------------------- /src/request/js/coxhr/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCoXhr 12 | -------------------------------------------------------------------------------- /src/request/js/coxhr/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCoXhr_lwt 12 | -------------------------------------------------------------------------------- /src/request/js/fetch/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezFetch) 3 | (public_name ez_api.fetch) 4 | (optional) 5 | (modules ezFetch) 6 | (preprocess (pps js_of_ocaml-ppx)) 7 | (libraries verbose ezRequest ezjs_fetch ezAPIJS) 8 | (modes byte)) 9 | 10 | (library 11 | (name ezFetch_i) 12 | (public_name ez_api.ifetch) 13 | (optional) 14 | (modules ezReq) 15 | (implements ezReq) 16 | (libraries ezFetch) 17 | (modes byte)) 18 | 19 | (library 20 | (name ezFetch_lwt) 21 | (public_name ez_api.fetch_lwt) 22 | (optional) 23 | (modules ezFetch_lwt) 24 | (preprocess (pps js_of_ocaml-ppx)) 25 | (libraries verbose ezRequest_lwt ezjs_fetch.lwt ezAPIJS) 26 | (modes byte)) 27 | 28 | (library 29 | (name ezFetch_lwt_i) 30 | (public_name ez_api.ifetch_lwt) 31 | (optional) 32 | (modules ezReq_lwt) 33 | (implements ezReq_lwt) 34 | (libraries ezFetch_lwt) 35 | (modes byte)) 36 | -------------------------------------------------------------------------------- /src/request/js/fetch/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzFetch 12 | -------------------------------------------------------------------------------- /src/request/js/fetch/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzFetch_lwt 12 | -------------------------------------------------------------------------------- /src/request/js/nodejs/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name nodejs_common) 3 | (package ez_api) 4 | (optional) 5 | (modules nodejs_common) 6 | (preprocess (pps ppx_deriving_jsoo)) 7 | (libraries verbose ezAPIJS) 8 | (modes byte)) 9 | 10 | (library 11 | (name ezNodeJS) 12 | (public_name ez_api.node_js) 13 | (optional) 14 | (modules ezNodeJS) 15 | (libraries ezRequest nodejs_common) 16 | (modes byte)) 17 | 18 | (library 19 | (name ezNodeJS_i) 20 | (public_name ez_api.inode_js) 21 | (optional) 22 | (modules ezReq) 23 | (implements ezReq) 24 | (libraries ezNodeJS) 25 | (modes byte)) 26 | 27 | (library 28 | (name ezNodeJS_lwt) 29 | (public_name ez_api.node_js_lwt) 30 | (optional) 31 | (modules ezNodeJS_lwt) 32 | (libraries ezRequest_lwt nodejs_common) 33 | (modes byte)) 34 | 35 | (library 36 | (name ezNodeJS_lwt_i) 37 | (public_name ez_api.inode_js_lwt) 38 | (optional) 39 | (modules ezReq_lwt) 40 | (implements ezReq_lwt) 41 | (libraries ezNodeJS_lwt) 42 | (modes byte)) 43 | -------------------------------------------------------------------------------- /src/request/js/nodejs/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzNodeJS 12 | -------------------------------------------------------------------------------- /src/request/js/nodejs/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzNodeJS_lwt 12 | -------------------------------------------------------------------------------- /src/request/js/xhr/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezXhr) 3 | (public_name ez_api.xhr) 4 | (optional) 5 | (modules ezXhr) 6 | (preprocess (pps js_of_ocaml-ppx)) 7 | (libraries verbose ezRequest ezAPIJS) 8 | (modes byte)) 9 | 10 | (library 11 | (name ezXhr_i) 12 | (public_name ez_api.ixhr) 13 | (optional) 14 | (modules ezReq) 15 | (implements ezReq) 16 | (libraries ezXhr) 17 | (modes byte)) 18 | 19 | (library 20 | (name ezXhr_lwt) 21 | (public_name ez_api.xhr_lwt) 22 | (optional) 23 | (modules ezXhr_lwt) 24 | (preprocess (pps js_of_ocaml-ppx)) 25 | (libraries verbose ezRequest_lwt ezAPIJS js_of_ocaml-lwt) 26 | (modes byte)) 27 | 28 | (library 29 | (name ezXhr_lwt_i) 30 | (public_name ez_api.ixhr_lwt) 31 | (optional) 32 | (modules ezReq_lwt) 33 | (implements ezReq_lwt) 34 | (libraries ezXhr_lwt) 35 | (modes byte)) 36 | -------------------------------------------------------------------------------- /src/request/js/xhr/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzXhr 12 | -------------------------------------------------------------------------------- /src/request/js/xhr/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzXhr_lwt 12 | -------------------------------------------------------------------------------- /src/request/unix/cohttp/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezCohttp) 3 | (public_name ez_api.cohttp) 4 | (optional) 5 | (modules ezCohttp) 6 | (libraries cohttp-lwt-unix ezRequest ezCohttp_base)) 7 | 8 | (library 9 | (name ezCohttp_i) 10 | (public_name ez_api.icohttp) 11 | (optional) 12 | (modules ezReq) 13 | (implements ezReq) 14 | (libraries ezCohttp)) 15 | 16 | (library 17 | (name ezCohttp_lwt) 18 | (public_name ez_api.cohttp_lwt) 19 | (optional) 20 | (modules ezCohttp_lwt) 21 | (libraries cohttp-lwt-unix ezRequest_lwt ezCohttp_base)) 22 | 23 | (library 24 | (name ezCohttp_lwt_i) 25 | (public_name ez_api.icohttp_lwt) 26 | (optional) 27 | (modules EzReq_lwt) 28 | (implements ezReq_lwt) 29 | (libraries ezCohttp_lwt)) 30 | -------------------------------------------------------------------------------- /src/request/unix/cohttp/ezCohttp.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Base = EzCohttp_base.Make(Cohttp_lwt_unix.Client) 12 | 13 | let () = 14 | let cb v = if v land 4 <> 0 then Cohttp_lwt_unix.Debug.activate_debug () in 15 | Verbose.callback := cb; 16 | cb !Verbose.v 17 | 18 | module Interface = struct 19 | 20 | let get ?meth ?headers ?msg url f = 21 | Lwt.async @@ fun () -> 22 | Lwt.map f (Base.get ?meth ?headers ?msg url) 23 | 24 | let post ?meth ?content_type ?content ?headers ?msg url f = 25 | Lwt.async @@ fun () -> 26 | Lwt.map f (Base.post ?meth ?content_type ?content ?headers ?msg url) 27 | 28 | end 29 | 30 | include EzRequest.Make(Interface) 31 | -------------------------------------------------------------------------------- /src/request/unix/cohttp/ezCohttp_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Base = EzCohttp_base.Make(Cohttp_lwt_unix.Client) 12 | 13 | let () = 14 | let cb v = if v land 4 <> 0 then Cohttp_lwt_unix.Debug.activate_debug () in 15 | Verbose.callback := cb; 16 | cb !Verbose.v 17 | 18 | module Interface = struct 19 | 20 | let get ?meth ?headers ?msg url = 21 | Base.get ?meth ?headers ?msg url 22 | 23 | let post ?meth ?content_type ?content ?headers ?msg url = 24 | Base.post ?meth ?content_type ?content ?headers ?msg url 25 | 26 | end 27 | 28 | include EzRequest_lwt.Make(Interface) 29 | -------------------------------------------------------------------------------- /src/request/unix/cohttp/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCohttp 12 | -------------------------------------------------------------------------------- /src/request/unix/cohttp/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCohttp_lwt 12 | -------------------------------------------------------------------------------- /src/request/unix/curl/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezCurl_common) 3 | (public_name ez_api.curl_common) 4 | (optional) 5 | (modules ezCurl_common) 6 | (libraries verbose curl)) 7 | 8 | (library 9 | (name ezCurl) 10 | (public_name ez_api.curl) 11 | (optional) 12 | (modules ezCurl) 13 | (libraries ezCurl_common ezRequest)) 14 | 15 | (library 16 | (name ezCurl_i) 17 | (public_name ez_api.icurl) 18 | (optional) 19 | (modules ezReq) 20 | (implements ezReq) 21 | (libraries ezCurl)) 22 | 23 | (library 24 | (name ezCurl_lwt) 25 | (public_name ez_api.curl_lwt) 26 | (optional) 27 | (modules ezCurl_lwt) 28 | (libraries verbose curl.lwt ezCurl_common ezRequest_lwt)) 29 | 30 | (library 31 | (name ezCurl_lwt_i) 32 | (public_name ez_api.icurl_lwt) 33 | (optional) 34 | (modules ezReq_lwt) 35 | (implements ezReq_lwt) 36 | (libraries ezCurl_lwt)) 37 | -------------------------------------------------------------------------------- /src/request/unix/curl/ezReq.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCurl 12 | -------------------------------------------------------------------------------- /src/request/unix/curl/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCurl_lwt 12 | -------------------------------------------------------------------------------- /src/request/unix/default/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezReq_default) 3 | (public_name ez_api.req_default) 4 | (implements ezReq) 5 | (modules ezReq) 6 | (libraries ezRequest 7 | (select ezReq.ml from 8 | (ezCurl -> ezReq.curl.ml) 9 | (-> ezReq.dummy.ml)))) 10 | 11 | (library 12 | (name ezReq_lwt_default) 13 | (public_name ez_api.req_lwt_default) 14 | (implements ezReq_lwt) 15 | (modules ezReq_lwt) 16 | (libraries ezRequest_lwt 17 | (select ezReq_lwt.ml from 18 | (ezHttpun_lwt -> ezReq_lwt.httpun.ml) 19 | (ezCohttp_lwt -> ezReq_lwt.cohttp.ml) 20 | (ezCurl_lwt -> ezReq_lwt.curl.ml) 21 | (-> ezReq_lwt.dummy.ml)))) 22 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq.curl.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCurl 12 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Interface = struct 12 | 13 | let get ?meth:_ ?headers:_ ?msg:_ _url f = 14 | f @@ Error (-2, Some "No http client loaded") 15 | 16 | let post ?meth:_ ?content_type:_ ?content:_ ?headers:_ ?msg:_ _url f = 17 | f @@ Error (-2, Some "No http client loaded") 18 | 19 | end 20 | 21 | include EzRequest.Make(Interface) 22 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq_lwt.cohttp.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCohttp_lwt 12 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq_lwt.curl.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzCurl_lwt 12 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq_lwt.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Interface = struct 12 | let get ?meth:_ ?headers:_ ?msg:_ _url = 13 | Lwt.return @@ Error (-2, Some "No http client loaded") 14 | 15 | let post ?meth:_ ?content_type:_ ?content:_ ?headers:_ ?msg:_ _url = 16 | Lwt.return @@ Error (-2, Some "No http client loaded") 17 | end 18 | 19 | include EzRequest_lwt.Make(Interface) 20 | -------------------------------------------------------------------------------- /src/request/unix/default/ezReq_lwt.httpun.ml: -------------------------------------------------------------------------------- 1 | include EzHttpun_lwt 2 | -------------------------------------------------------------------------------- /src/request/unix/httpun/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name httpun_tls) 3 | (public_name ez_api.httpun_tls) 4 | (optional) 5 | (modules httpun_tls) 6 | (libraries httpun-lwt-unix 7 | (select httpun_tls.ml from 8 | (tls-lwt lwt_ssl -> httpun_tls.both.ml) 9 | (tls-lwt -> httpun_tls.tls.ml) 10 | (lwt_ssl -> httpun_tls.ssl.ml) 11 | (-> httpun_tls.none.ml)))) 12 | 13 | (library 14 | (name httpun_client) 15 | (public_name ez_api.httpun_client) 16 | (optional) 17 | (modules httpun_client) 18 | (libraries verbose ez_api httpun_tls)) 19 | 20 | (library 21 | (name ezHttpun_lwt) 22 | (public_name ez_api.httpun_lwt) 23 | (optional) 24 | (modules ezHttpun_lwt) 25 | (libraries httpun_client ez_api.request_lwt)) 26 | 27 | (library 28 | (name ezHttpun_lwt_i) 29 | (public_name ez_api.ihttpun_lwt) 30 | (optional) 31 | (modules ezReq_lwt) 32 | (implements ez_api.req_lwt) 33 | (libraries ezHttpun_lwt)) 34 | -------------------------------------------------------------------------------- /src/request/unix/httpun/ezHttpun_lwt.ml: -------------------------------------------------------------------------------- 1 | let wrap_error e = 2 | let aux () = Format.asprintf "%a" Httpun_client.pp_error e in 3 | match e with 4 | | `http (code, content) -> code, Some content 5 | | `timeout _ -> 408, Some (aux ()) 6 | | `invalid_url _ -> 400, Some (aux ()) 7 | | _ -> -1, Some (aux ()) 8 | 9 | module Interface = struct 10 | let get ?(meth="GET") ?headers ?msg:_ url = 11 | let meth = EzAPI.Meth.of_string meth in 12 | Lwt.map (Result.map_error wrap_error) @@ Httpun_client.call ~meth ?headers url 13 | 14 | let post ?(meth="POST") ?(content_type="application/json") ?(content="{}") ?headers 15 | ?msg:_ url = 16 | let meth = EzAPI.Meth.of_string meth in 17 | Lwt.map (Result.map_error wrap_error) @@ 18 | Httpun_client.call ~meth ?headers ~content ~content_type url 19 | end 20 | 21 | include EzRequest_lwt.Make(Interface) 22 | -------------------------------------------------------------------------------- /src/request/unix/httpun/ezReq_lwt.ml: -------------------------------------------------------------------------------- 1 | include EzHttpun_lwt 2 | -------------------------------------------------------------------------------- /src/request/unix/httpun/httpun_tls.none.ml: -------------------------------------------------------------------------------- 1 | let request ?alpn_protocols:_ ~hostname:_ ~socket:_ ~error_handler:_ ~response_handler:_ _req = 2 | Lwt.return_error (`msg "no tls engine installed: `opam install tls-lwt` or `opam install lwt_ssl`") 3 | -------------------------------------------------------------------------------- /src/request/unix/httpun/httpun_tls.ssl.ml: -------------------------------------------------------------------------------- 1 | let request ?(alpn_protocols=["http/1.1"]) ~hostname ~socket ~error_handler ~response_handler req = 2 | let client_ctx = Ssl.create_context Ssl.TLSv1_3 Ssl.Client_context in 3 | Ssl.honor_cipher_order client_ctx; 4 | Ssl.set_context_alpn_protos client_ctx alpn_protocols; 5 | let uninitialized_socket = Lwt_ssl.embed_uninitialized_socket socket client_ctx in 6 | let ssl_socket = Lwt_ssl.ssl_socket_of_uninitialized_socket uninitialized_socket in 7 | Ssl.set_client_SNI_hostname ssl_socket hostname; 8 | Ssl.set_host ssl_socket hostname; 9 | Lwt.bind (Lwt_ssl.ssl_perform_handshake uninitialized_socket) @@ fun ssl_client -> 10 | Lwt.bind (Httpun_lwt_unix.Client.SSL.create_connection ssl_client) @@ fun connection -> 11 | Lwt.return_ok @@ Httpun_lwt_unix.Client.SSL.request connection req ~error_handler ~response_handler 12 | -------------------------------------------------------------------------------- /src/request/unix/httpun/httpun_tls.tls.ml: -------------------------------------------------------------------------------- 1 | let request ?(alpn_protocols=["http/1.1"]) ~hostname ~socket ~error_handler ~response_handler req = 2 | let authenticator ?ip:_ ~host:_ _ = Ok None in 3 | let peer_name = Domain_name.(host_exn (of_string_exn hostname)) in 4 | let config = Result.get_ok @@ Tls.Config.client ~alpn_protocols ~authenticator ~peer_name () in 5 | Lwt.bind (Tls_lwt.Unix.client_of_fd config socket) @@ fun tls_client -> 6 | Lwt.bind (Httpun_lwt_unix.Client.TLS.create_connection tls_client) @@ fun connection -> 7 | Lwt.return_ok @@ Httpun_lwt_unix.Client.TLS.request connection req ~error_handler ~response_handler 8 | -------------------------------------------------------------------------------- /src/request/verbose.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | (* 12 | verbose binary flag 13 | 1: string received over http 14 | 2: string sent over http 15 | 4: library logs 16 | *) 17 | 18 | let v = match Sys.getenv_opt "EZAPICLIENT" with 19 | | Some "true" -> ref 7 20 | | Some x -> 21 | begin match int_of_string_opt x with 22 | | None -> ref 0 23 | | Some i -> ref i 24 | end 25 | | _ -> ref 0 26 | 27 | let callback = ref (fun (_ : int) -> ()) 28 | 29 | let set_verbose i = 30 | v := i; 31 | !callback i 32 | -------------------------------------------------------------------------------- /src/request/virtual/cb/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezReq) 3 | (public_name ez_api.req) 4 | (virtual_modules ezReq) 5 | (libraries ezReq_S) 6 | (default_implementation ezReq_default)) 7 | -------------------------------------------------------------------------------- /src/request/virtual/cb/ezReq.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Interface : EzReq_S.Interface 12 | include EzReq_S.S 13 | -------------------------------------------------------------------------------- /src/request/virtual/lwt/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezReq_lwt) 3 | (public_name ez_api.req_lwt) 4 | (virtual_modules ezReq_lwt) 5 | (libraries ezReq_lwt_S) 6 | (default_implementation ezReq_lwt_default)) 7 | -------------------------------------------------------------------------------- /src/request/virtual/lwt/ezReq_lwt.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2022 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | module Interface : EzReq_lwt_S.Interface 12 | include EzReq_lwt_S.S 13 | -------------------------------------------------------------------------------- /src/request/virtual/s/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezReq_S) 3 | (public_name ez_api.req_s) 4 | (modules_without_implementation ezReq_S) 5 | (modules ezReq_S) 6 | (libraries ezAPI)) 7 | 8 | (library 9 | (name ezReq_lwt_S) 10 | (public_name ez_api.req_lwt_s) 11 | (modules_without_implementation ezReq_lwt_S) 12 | (modules ezReq_lwt_S) 13 | (libraries ezAPI)) 14 | -------------------------------------------------------------------------------- /src/server/cohttp/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezAPIServerCohttp) 3 | (public_name ez_api.server_cohttp) 4 | (optional) 5 | (modules ezAPIServerCohttp) 6 | (libraries cohttp-lwt-unix wsCohttp)) 7 | 8 | (library 9 | (name ezServerCohttp) 10 | (public_name ez_api.iserver_cohttp) 11 | (optional) 12 | (implements ezServer) 13 | (modules ezServer) 14 | (libraries ezAPIServerCohttp)) 15 | -------------------------------------------------------------------------------- /src/server/cohttp/ezServer.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerCohttp 12 | -------------------------------------------------------------------------------- /src/server/default/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezServerDefault) 3 | (public_name ez_api.iserver_default) 4 | (implements ezServer) 5 | (modules ezServer) 6 | (libraries 7 | (select ezServer.ml from 8 | (ezAPIServerHttpun -> ezServer.httpun.ml) 9 | (ezAPIServerHttpAf -> ezServer.httpaf.ml) 10 | (ezAPIServerCohttp -> ezServer.cohttp.ml) 11 | (-> ezServer.dummy.ml)))) 12 | -------------------------------------------------------------------------------- /src/server/default/ezServer.cohttp.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerCohttp 12 | -------------------------------------------------------------------------------- /src/server/default/ezServer.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let server ?catch:_ ?allow_origin:_ ?allow_headers:_ ?allow_methods:_ ?allow_credentials:_ ?footer:_ _ = 12 | Format.eprintf 13 | "Cohttp or Httpaf server implementation not availble\n\ 14 | Try: `opam install cohttp-lwt-unix`\n\ 15 | or: `opam install httpaf-lwt-unix`@."; 16 | Lwt.return_unit 17 | 18 | let set_debug () = () 19 | -------------------------------------------------------------------------------- /src/server/default/ezServer.httpaf.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerHttpAf 12 | -------------------------------------------------------------------------------- /src/server/default/ezServer.httpun.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerHttpun 12 | -------------------------------------------------------------------------------- /src/server/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezAPIServerUtils) 3 | (public_name ez_api.server_utils) 4 | (modules answer directory gMTime timings file ip ezAPIServerUtils) 5 | (libraries ezAPI 6 | (select ip.ml from 7 | (geoip -> ip.geoip.ml) 8 | (-> ip.dummy.ml)))) 9 | 10 | (library 11 | (name server_common) 12 | (modules server_common) 13 | (optional) 14 | (package ez_api) 15 | (libraries ezAPIServerUtils lwt.unix bigstringaf) 16 | (foreign_stubs (language c) (names rlimit_no_file))) 17 | 18 | (library 19 | (name ezOpenAPI) 20 | (public_name ez_api.openAPI) 21 | (modules ezOpenAPI) 22 | (libraries ezAPI ezYaml ezjsonm)) 23 | 24 | (library 25 | (name ezAPIServer) 26 | (public_name ez_api.server) 27 | (modules ezAPIServer) 28 | (libraries ezServer)) 29 | -------------------------------------------------------------------------------- /src/server/ezAPIServer.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzServer 12 | include EzAPIServerUtils 13 | -------------------------------------------------------------------------------- /src/server/httpaf/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezAPIServerHttpAf) 3 | (public_name ez_api.server_httpaf) 4 | (optional) 5 | (modules ezAPIServerHttpAf) 6 | (libraries httpaf-lwt-unix wsHttpaf server_common)) 7 | 8 | (library 9 | (name ezServerHttpaf) 10 | (public_name ez_api.iserver_httpaf) 11 | (optional) 12 | (implements ezServer) 13 | (modules ezServer) 14 | (libraries ezAPIServerHttpAf)) 15 | -------------------------------------------------------------------------------- /src/server/httpaf/ezServer.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerHttpAf 12 | -------------------------------------------------------------------------------- /src/server/httpun/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezAPIServerHttpun) 3 | (public_name ez_api.server_httpun) 4 | (optional) 5 | (modules ezAPIServerHttpun) 6 | (libraries server_common httpun-lwt-unix wsHttpun)) 7 | 8 | (library 9 | (name ezServerHttpun) 10 | (public_name ez_api.iserver_httpun) 11 | (optional) 12 | (implements ezServer) 13 | (modules ezServer) 14 | (libraries ezAPIServerHttpun)) 15 | -------------------------------------------------------------------------------- /src/server/httpun/ezServer.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzAPIServerHttpun 12 | -------------------------------------------------------------------------------- /src/server/ip.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let req_ips : (string, EzAPI.ip_info) Hashtbl.t = Hashtbl.create 1111 12 | 13 | let register : float -> string -> unit = 14 | let first = ref true in 15 | fun _ _ -> 16 | if !first then ( 17 | first := false; 18 | Format.eprintf 19 | "\027[0;33mwarning: geoip not installed\027[0m\n\ 20 | If you need ip information try: `opam install geoip`@.") 21 | -------------------------------------------------------------------------------- /src/server/rlimit_no_file.c: -------------------------------------------------------------------------------- 1 | #define CAML_NAME_SPACE 2 | #include 3 | #include 4 | 5 | CAMLprim value rlimit_no_file_c() { 6 | struct rlimit rlmt; 7 | getrlimit(RLIMIT_NOFILE, &rlmt); 8 | return Val_int(rlmt.rlim_cur); 9 | } 10 | -------------------------------------------------------------------------------- /src/server/virtual/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezServer) 3 | (public_name ez_api.server_s) 4 | (virtual_modules ezServer) 5 | (default_implementation ezServerDefault) 6 | (libraries ezAPIServerUtils)) 7 | -------------------------------------------------------------------------------- /src/server/virtual/ezServer.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | open EzAPIServerUtils 12 | 13 | val server : ?catch:(string -> exn -> string Answer.t Lwt.t) -> 14 | ?allow_origin:[ allow_kind | `origin ] -> ?allow_headers:allow_kind -> 15 | ?allow_methods:allow_kind -> ?allow_credentials:bool -> ?footer:string -> 16 | (int * server_kind) list -> unit Lwt.t 17 | 18 | val set_debug : unit -> unit 19 | -------------------------------------------------------------------------------- /src/server/websocket/cohttp/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name wsCommon) 3 | (public_name ez_api.ws_server_utils) 4 | (optional) 5 | (modules wsCommon) 6 | (libraries websocket ezAPIServerUtils calendar)) 7 | 8 | (library 9 | (name wsCohttp) 10 | (public_name ez_api.ws_server_cohttp) 11 | (optional) 12 | (modules wsCohttp) 13 | (libraries 14 | (select wsCohttp.ml from 15 | (websocket-lwt-unix.cohttp wsCommon -> wsCohttp.real.ml) 16 | (ezAPIServerUtils -> wsCohttp.dummy.ml)))) 17 | -------------------------------------------------------------------------------- /src/server/websocket/cohttp/wsCohttp.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let first = ref true 12 | 13 | let ws _req ?onclose:_ ?step:_ ?body:_ ~react:_ ~bg:_ _id = 14 | (if !first then ( 15 | first := false; 16 | Format.eprintf 17 | "\027[0;31merror: websocket-lwt-unix not installed\027[0m\n\ 18 | try: `opam install calendar websocket-lwt-unix`@.")); 19 | Lwt.return_error `no_ws_library 20 | -------------------------------------------------------------------------------- /src/server/websocket/httpaf/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name wsHttpaf) 3 | (public_name ez_api.ws_server_httpaf) 4 | (optional) 5 | (modules wsHttpaf) 6 | (libraries 7 | (select wsHttpaf.ml from 8 | (ezAPIServerUtils -> wsHttpaf.dummy.ml)))) 9 | -------------------------------------------------------------------------------- /src/server/websocket/httpaf/wsHttpaf.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let first = ref true 12 | 13 | let ws _fd _req ?onclose:_ ?step:_ ?body:_ ~react:_ ~bg:_ _id = 14 | (if !first then ( 15 | first := false; 16 | Format.eprintf 17 | "\027[0;31merror: websocket-httpaf-lwt not installed\027[0m\n\ 18 | try: `opam install calendar`\n\ 19 | `opam pin add websocket-httpaf.~dev https://github.com/anmonteiro/websocket-httpaf.git`\n\ 20 | `opam pin add websocket-httpaf-lwt.~dev https://github.com/anmonteiro/websocket-httpaf.git`@.")); 21 | Lwt.return_error `no_ws_library 22 | -------------------------------------------------------------------------------- /src/server/websocket/httpun/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name wsHttpun) 3 | (public_name ez_api.ws_server_httpun) 4 | (optional) 5 | (modules wsHttpun) 6 | (libraries ezAPIServerUtils 7 | (select wsHttpun.ml from 8 | (httpun-ws digestif calendar -> wsHttpun.real.ml) 9 | (-> wsHttpun.dummy.ml)))) 10 | -------------------------------------------------------------------------------- /src/server/websocket/httpun/wsHttpun.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let first = ref true 12 | 13 | let ws _fd _req ?onclose:_ ?step:_ ?body:_ ~react:_ ~bg:_ _id = 14 | (if !first then ( 15 | first := false; 16 | Format.eprintf "\027[0;31merror: websocket are not yet implemented for httpup@.")); 17 | Lwt.return_error `no_ws_library 18 | -------------------------------------------------------------------------------- /src/server/yaml/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezYaml) 3 | (package ez_api) 4 | (modules ezYaml) 5 | (libraries 6 | (select ezYaml.ml from 7 | (yaml -> ezYaml.yaml.ml) 8 | (-> ezYaml.dummy.ml)))) 9 | -------------------------------------------------------------------------------- /src/server/yaml/ezYaml.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let to_string _ = Error ( 12 | `Msg "\027[0;33merror: yaml not installed\027[0m\n\ 13 | If you need to output yaml try: `opam install yaml`@.") 14 | -------------------------------------------------------------------------------- /src/server/yaml/ezYaml.yaml.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let to_string = Yaml.to_string 12 | -------------------------------------------------------------------------------- /src/session/auth_apis/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name google) 3 | (public_name ez_api.google_auth) 4 | (optional) 5 | (modules google) 6 | (libraries ezReq_lwt)) 7 | 8 | (library 9 | (name facebook) 10 | (public_name ez_api.facebook_auth) 11 | (optional) 12 | (modules facebook) 13 | (libraries ezReq_lwt)) 14 | -------------------------------------------------------------------------------- /src/session/blake2s/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezHash_blake2s) 3 | (public_name ez_api.blake2s) 4 | (optional) 5 | (modules ezHash) 6 | (implements ezHash) 7 | (libraries digestif.ocaml)) 8 | -------------------------------------------------------------------------------- /src/session/blake2s/ezHash.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let hash s = Digestif.BLAKE2S.(to_raw_string @@ digest_string s) 12 | -------------------------------------------------------------------------------- /src/session/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezSession) 3 | (public_name ez_api.session) 4 | (modules ezSession) 5 | (libraries ezAPI ezHash)) 6 | 7 | (library 8 | (name ezSessionClient) 9 | (public_name ez_api.session_client) 10 | (modules ezSessionClient) 11 | (libraries ezReq ezSession)) 12 | 13 | (library 14 | (name ezSessionServer) 15 | (public_name ez_api.server_session) 16 | (wrapped false) 17 | (modules ezCookieServer ezSessionServer) 18 | (libraries ezSession ezAPIServerUtils 19 | (select ezCookieServer.ml from 20 | (cohttp -> ezCookieServer.cohttp.ml) 21 | (-> ezCookieServer.dummy.ml)))) 22 | -------------------------------------------------------------------------------- /src/session/ezCookieServer.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | open EzAPIServerUtils 12 | 13 | let get ( _req : Req.t ) = 14 | Format.eprintf "Dummy implementation of cookie server, to install:\n`opam install cohttp`@."; 15 | StringMap.empty 16 | 17 | let set ?secure:_ ?http_only:_ ?expiration:_ ~name ~value () = 18 | Format.eprintf "Dummy implementation of cookie server, to install:\n`opam install cohttp`@."; 19 | (name, value) 20 | 21 | let clear ~name () = (name, "") 22 | -------------------------------------------------------------------------------- /src/session/ezCookieServer.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | open EzAPIServerUtils 12 | 13 | (** Looks up request headers and returns map of cookies (cookie_name->cokie_value) *) 14 | val get : Req.t -> string StringMap.t 15 | 16 | (** Discards cookie in the 'Set-Cookie' header by setting its value to empty string and 17 | its max-age to 0*) 18 | val clear : name:string -> unit -> (string * string) 19 | 20 | (** Creates 'Set-Cokie' header with cookie whose name, value and some parameters are 21 | specified. *) 22 | val set : 23 | ?secure:bool -> 24 | ?http_only:bool -> 25 | ?expiration:int64 -> 26 | name:string -> value:string -> unit -> (string * string) 27 | -------------------------------------------------------------------------------- /src/session/ezHash.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | -------------------------------------------------------------------------------- /src/session/md5/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezHash_md5) 3 | (public_name ez_api.md5) 4 | (modules ezHash) 5 | (implements ezHash)) 6 | -------------------------------------------------------------------------------- /src/session/md5/ezHash.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let hash = Digest.string 12 | -------------------------------------------------------------------------------- /src/session/sha2/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezHash_sha2) 3 | (public_name ez_api.sha2) 4 | (optional) 5 | (modules ezHash) 6 | (implements ezHash) 7 | (libraries digestif.ocaml)) 8 | -------------------------------------------------------------------------------- /src/session/sha2/ezHash.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let hash s = Digestif.SHA256.(to_raw_string @@ digest_string s) 12 | -------------------------------------------------------------------------------- /src/session/sha3/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezHash_sha3) 3 | (public_name ez_api.sha3) 4 | (optional) 5 | (modules ezHash) 6 | (implements ezHash) 7 | (libraries digestif.ocaml)) 8 | -------------------------------------------------------------------------------- /src/session/sha3/ezHash.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let hash s = Digestif.SHA3_256.(to_raw_string @@ digest_string s) 12 | -------------------------------------------------------------------------------- /src/session/virtual/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezHash) 3 | (public_name ez_api.hash) 4 | (virtual_modules ezHash) 5 | (modules ezHash) 6 | (default_implementation ezHash_md5)) 7 | -------------------------------------------------------------------------------- /src/session/virtual/ezHash.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | (** Hash function implementation depending, on imported library. Currently supported ones: 12 | md5, sha2, sha3 and blake2s. *) 13 | 14 | val hash : string -> string 15 | -------------------------------------------------------------------------------- /src/tools/loads/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezLoads) 3 | (public_name ez_api.loads) 4 | (optional) 5 | (modules ezLoads) 6 | (preprocess (pps ppx_deriving_encoding)) 7 | (libraries ez_api.req_lwt str)) 8 | 9 | (library 10 | (name ezLoads_offset) 11 | (public_name ez_api.loads_offset) 12 | (optional) 13 | (modules ezLoads_offset) 14 | (preprocess (pps ppx))) 15 | -------------------------------------------------------------------------------- /src/tools/loads/ezLoads_offset.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | let section = EzAPI.Doc.section "EzLoads" 12 | 13 | let service_offset : (float * float, exn, EzAPI.no_security) EzAPI.service0 = 14 | EzAPI.service ~section ~output:Json_encoding.(tup2 float float) 15 | EzAPI.Path.(root // "ezloads_offset") 16 | 17 | let handler_offset req _ () = 18 | EzAPIServerUtils.return_ok (req.EzAPI.Req.req_time, Unix.gettimeofday ()) 19 | 20 | let register dir = 21 | EzAPIServerUtils.register service_offset handler_offset dir 22 | -------------------------------------------------------------------------------- /src/tools/recaptcha/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezRecaptcha) 3 | (public_name ez_api.recaptcha) 4 | (optional) 5 | (modules ezRecaptcha) 6 | (libraries ezReq_lwt calendar)) 7 | -------------------------------------------------------------------------------- /src/tools/sendgrid/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezSendgrid_encoding) 3 | (public_name ez_api.sendgrid_encoding) 4 | (wrapped false) 5 | (optional) 6 | (modules ezSendgrid_types ezSendgrid_encoding) 7 | (libraries ezEncoding)) 8 | 9 | (library 10 | (name ezSendgrid_services) 11 | (public_name ez_api.sendgrid_services) 12 | (optional) 13 | (modules ezSendgrid_services) 14 | (libraries ezAPI ezSendgrid_encoding)) 15 | 16 | (library 17 | (name ezSendgrid) 18 | (public_name ez_api.sendgrid) 19 | (optional) 20 | (modules ezSendgrid) 21 | (libraries ezReq_lwt calendar ezSendgrid_services)) 22 | -------------------------------------------------------------------------------- /src/websocket/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWsCommon) 3 | (public_name ez_api.ws_types) 4 | (modules ezWsCommon) 5 | (libraries lwt ezDebug ezEncoding)) 6 | -------------------------------------------------------------------------------- /src/websocket/js/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWs_js) 3 | (public_name ez_api.ws_js) 4 | (optional) 5 | (modules ezWs) 6 | (preprocess (pps js_of_ocaml-ppx)) 7 | (implements ezWs) 8 | (libraries ezAPIJS)) 9 | -------------------------------------------------------------------------------- /src/websocket/unix/cohttp/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWs_cohttp) 3 | (public_name ez_api.ws_cohttp) 4 | (optional) 5 | (modules ezWs) 6 | (implements ezWs) 7 | (libraries websocket-lwt-unix)) 8 | -------------------------------------------------------------------------------- /src/websocket/unix/default/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWs_default) 3 | (public_name ez_api.ws_default) 4 | (modules ezWs) 5 | (implements ezWs) 6 | (libraries 7 | (select ezWs.ml from 8 | (httpun-ws-lwt-unix -> ezWs.httpun.ml) 9 | (websocket-lwt-unix -> ezWs.cohttp.ml) 10 | (-> ezWs.dummy.ml)))) 11 | -------------------------------------------------------------------------------- /src/websocket/unix/default/ezWs.cohttp.ml: -------------------------------------------------------------------------------- 1 | ../cohttp/ezWs.ml -------------------------------------------------------------------------------- /src/websocket/unix/default/ezWs.dummy.ml: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2025 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzWsCommon.Types 12 | 13 | let err = "ezWs not implemented, either install httpun-ws-lwt-unix or websocket-lwt-unix" 14 | 15 | let connect ?msg:_ ?protocols:_ ?error:_ ~react:_ _url = Lwt.return_error err 16 | 17 | let connect0 ?msg:_ ?protocols:_ ?error:_ ~react:_ _base _service = Lwt.return_error err 18 | -------------------------------------------------------------------------------- /src/websocket/unix/default/ezWs.httpun.ml: -------------------------------------------------------------------------------- 1 | ../httpun/ezWs.ml -------------------------------------------------------------------------------- /src/websocket/unix/httpun/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWs_httpun) 3 | (public_name ez_api.ws_httpun) 4 | (optional) 5 | (modules ezWs) 6 | (implements ezWs) 7 | (libraries httpun-ws-lwt-unix)) 8 | -------------------------------------------------------------------------------- /src/websocket/virtual/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name ezWs) 3 | (public_name ez_api.ws) 4 | (optional) 5 | (virtual_modules ezWs) 6 | (libraries ezWsCommon ezAPI) 7 | (default_implementation ezWs_default)) 8 | -------------------------------------------------------------------------------- /src/websocket/virtual/ezWs.mli: -------------------------------------------------------------------------------- 1 | (**************************************************************************) 2 | (* *) 3 | (* Copyright 2018-2023 OCamlPro *) 4 | (* *) 5 | (* All rights reserved. This file is distributed under the terms of the *) 6 | (* GNU Lesser General Public License version 2.1, with the special *) 7 | (* exception on linking described in the file LICENSE. *) 8 | (* *) 9 | (**************************************************************************) 10 | 11 | include EzWsCommon.S 12 | 13 | val connect : 14 | ?msg:string -> 15 | ?protocols:string list -> 16 | ?error:(string action -> string -> unit) -> 17 | react:(string action -> string -> unit rp) -> 18 | string -> 19 | string ws rp 20 | 21 | val connect0 : 22 | ?msg:string -> 23 | ?protocols:string list -> 24 | ?error:(string action -> string -> unit) -> 25 | react:('input action -> ('output, 'error) result -> unit rp) -> 26 | EzAPI.base_url -> 27 | ('input, 'output, 'error, _) EzAPI.ws_service0 -> 28 | 'input ws rp 29 | -------------------------------------------------------------------------------- /test/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name test) 3 | (modules test) 4 | (optional) 5 | (libraries ez_api.request ez_api.server ez_api.server_session ez_api.session_client)) 6 | 7 | (executable 8 | (name main_cohttp) 9 | (modules main_cohttp) 10 | (optional) 11 | (libraries test ezCohttp)) 12 | 13 | (executable 14 | (name main_curl) 15 | (modules main_curl) 16 | (optional) 17 | (libraries test ezCurl)) 18 | 19 | (executable 20 | (name test_ws) 21 | (modules test_ws) 22 | (optional) 23 | (libraries ez_api.ws_cohttp)) 24 | -------------------------------------------------------------------------------- /test/loads/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name test_loads_lib) 3 | (modules test_loads_lib) 4 | (preprocess (pps ez_api.ppx)) 5 | (libraries ez_api.loads_offset)) 6 | 7 | (executable 8 | (name test_loads_server) 9 | (modules test_loads_server) 10 | (preprocess (pps ez_api.ppx_server)) 11 | (libraries test_loads_lib)) 12 | 13 | (executable 14 | (name test_loads) 15 | (modules test_loads) 16 | (libraries test_loads_lib ez_api.loads ez_api.icurl_lwt)) 17 | -------------------------------------------------------------------------------- /test/loads/test_loads.ml: -------------------------------------------------------------------------------- 1 | let () = 2 | EzLoads.execute [ Test_loads_lib.section; EzLoads_offset.section ] 3 | -------------------------------------------------------------------------------- /test/loads/test_loads_lib.ml: -------------------------------------------------------------------------------- 1 | let output = Json_encoding.(obj1 (req "success" (constant "true"))) 2 | let section = EzAPI.Doc.section "main" 3 | let arg = EzAPI.Arg.string ~example:"machin" "id" 4 | let params = [ EzAPI.Param.string "foo" ] 5 | 6 | let h _s = 7 | EzAPIServerUtils.return_ok () 8 | [@@get {path="/test/{arg}"; output; section; params}] 9 | 10 | let ppx_dir = EzLoads_offset.register ppx_dir 11 | -------------------------------------------------------------------------------- /test/loads/test_loads_server.ml: -------------------------------------------------------------------------------- 1 | open Test_loads_lib 2 | 3 | [%%server 8080] 4 | -------------------------------------------------------------------------------- /test/main_cohttp.ml: -------------------------------------------------------------------------------- 1 | 2 | let () = 3 | EzCohttp.init (); (* Use Cohttp implementation for Xhr *) 4 | Test.main () 5 | -------------------------------------------------------------------------------- /test/main_curl.ml: -------------------------------------------------------------------------------- 1 | 2 | let () = 3 | EzCurl.init (); (* Use Curl implementation for Xhr *) 4 | (* EzXhr.init (); (* Use Javascript implementation for Xhr *) *) 5 | Test.main () 6 | -------------------------------------------------------------------------------- /test/ppx/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name test_ppx_lib) 3 | (modules test_ppx_lib) 4 | (preprocess (pps ppx_deriving_encoding ez_api.ppx_req))) 5 | 6 | (executable 7 | (name test_ppx_server) 8 | (modules test_ppx_server) 9 | (preprocess (pps ez_api.ppx_server)) 10 | (libraries test_ppx_lib)) 11 | 12 | (executable 13 | (name test_ppx_client) 14 | (modules test_ppx_client) 15 | (libraries test_ppx_lib ez_api.ixhr_lwt) 16 | (modes js)) 17 | 18 | (library 19 | (name test_ppx_err_case) 20 | (modules test_ppx_err_case) 21 | (preprocess (pps ez_api.ppx ez_api.ppx_err_case))) 22 | -------------------------------------------------------------------------------- /test/ppx/test_ppx_client.ml: -------------------------------------------------------------------------------- 1 | open Test_ppx_lib 2 | open Lwt.Infix 3 | 4 | let () = 5 | EzLwtSys.run @@ fun () -> 6 | EzReq_lwt.post0 (EzAPI.BASE "http://localhost:8080") echo_input ~input:"bla" >|= function 7 | | Error (EzReq_lwt_S.UnknownError {code; msg}) -> 8 | EzDebug.printf "error %d %s" code (Option.value ~default:"none" msg) 9 | | Error _ -> EzDebug.printf "error" 10 | | Ok s -> EzDebug.printf "ok %s" s 11 | -------------------------------------------------------------------------------- /test/ppx/test_ppx_err_case.ml: -------------------------------------------------------------------------------- 1 | type error = .. [@@deriving err_case] 2 | 3 | type error += 4 | | NotFound of string [@code 404] 5 | | Unauthorized of string [@code 401] 6 | | Error1 7 | | Error2 8 | [@@deriving err_case {code=400}] 9 | 10 | let%err_case generic_case : error EzAPI.Err.case = 400 11 | -------------------------------------------------------------------------------- /test/ppx/test_ppx_lib.ml: -------------------------------------------------------------------------------- 1 | 2 | type error = { 3 | name: string; 4 | msg: string; 5 | } [@@deriving encoding] 6 | 7 | let%secu bearer = `Bearer {EzAPI.Security.bearer_name="Bearer"; format=None} 8 | 9 | let%service errors = [ 10 | EzAPI.Err.make ~code:400 ~name:"Error" ~encoding:error_enc ~select:Option.some ~deselect:Fun.id 11 | ] 12 | and security : [ EzAPI.Security.none | EzAPI.Security.bearer ] list = [ bearer ] 13 | and base = "http://localhost:8080" 14 | 15 | type test_derive = { 16 | foo: string; 17 | bar: int; 18 | } [@@get {path="/test/getter/{id: string}/{numb: int}"; name="bla"}] 19 | 20 | type foo = [ `foo | `bar ] [@@deriving encoding {assoc}] 21 | 22 | let%param foo : foo = {assoc; required} 23 | 24 | let%post echo_input = { 25 | path="/echo_input"; raw_input=["text/plain"]; 26 | output=Json_encoding.(obj1 (req "test" string)); 27 | params=[foo]; security 28 | } 29 | -------------------------------------------------------------------------------- /test/ppx/test_ppx_server.ml: -------------------------------------------------------------------------------- 1 | let%param foo = () 2 | 3 | let echo ([%req], s) () = 4 | Format.eprintf "foo: %s@." @@ Option.value ~default:"none" req#foo; 5 | EzAPIServer.return_ok @@ "echo arg: " ^ s 6 | [@@get {path="/echo/{arg : string}"; raw_output=[]; params=[foo]}] 7 | 8 | let echo_input s = 9 | EzAPIServer.return_ok @@ "echo input: " ^ s 10 | [@@service {service=Test_ppx_lib.echo_input} ] 11 | 12 | let rec react s = 13 | Lwt.return_ok @@ "ws echo: " ^ s 14 | and bg r sec send = 15 | send (Ok "Hey!"); 16 | Lwt.bind (EzLwtSys.sleep 30.) (fun () -> bg r sec send) 17 | and onclose _ = 18 | Lwt.return_unit 19 | [@@websocket {path="/ws"; input=Json_encoding.string; output=Json_encoding.string}] 20 | 21 | [%%server 8080] 22 | -------------------------------------------------------------------------------- /test/session/Makefile: -------------------------------------------------------------------------------- 1 | 2 | CLIENT_BIN_PATH=../../_build/default/test/session/test_cookie_client.bc.js 3 | SERVER_BIN_PATH=../../_build/default/test/session/test_cookie_server.exe 4 | 5 | all: build website api-server 6 | 7 | build: 8 | dune build --profile release 9 | 10 | website: $(CLIENT_BIN_PATH) 11 | cp -f $(CLIENT_BIN_PATH) client.js 12 | 13 | api-server: $(SERVER_BIN_PATH) 14 | cp -f $(SERVER_BIN_PATH) server.exe 15 | 16 | run-web: website 17 | php -S localhost:8885 18 | 19 | run-api: api-server 20 | ./server.exe 21 | -------------------------------------------------------------------------------- /test/session/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name test_session_lib) 3 | (modules test_session_lib) 4 | (libraries ez_api.session)) 5 | 6 | (executable 7 | (name test_cookie_client) 8 | (modules test_cookie_client) 9 | (preprocess (pps js_of_ocaml-ppx)) 10 | (libraries test_session_lib ez_api.session_client 11 | (select test_cookie_client.ml from 12 | (ez_api.coxhr -> test_cookie_client.real.ml) 13 | (-> test_cookie_client.dummy.ml))) 14 | (modes js) 15 | (js_of_ocaml (flags (:standard --no-sourcemap)))) 16 | 17 | (executable 18 | (name test_cookie_server) 19 | (modules test_cookie_server) 20 | (libraries test_session_lib ez_api.server_session ez_api.server)) 21 | -------------------------------------------------------------------------------- /test/session/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test cookie session 5 | 6 | 7 | 8 | 9 |
10 |
11 |

Connection status

12 | 13 |

14 |
15 |
16 |

Api services to check (check console for results)

17 |

Without authentication

18 |
19 | 20 | 21 | 22 | 23 | 24 |
25 |

With authentication

26 |
27 | 28 |
29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /test/session/test_cookie_client.dummy.ml: -------------------------------------------------------------------------------- 1 | let () = 2 | EzDebug.printf 3 | "test_cookie_client requires the libraries `digestif` and `js_of_ocaml`:\n\ 4 | `opam install digestif js_of_ocaml`" 5 | -------------------------------------------------------------------------------- /test/test_ws.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/test_ws.ml: -------------------------------------------------------------------------------- 1 | open Lwt.Infix 2 | 3 | let () = 4 | Cohttp_lwt_unix.Debug.activate_debug (); 5 | EzLwtSys.run @@ fun () -> 6 | EzWs.connect ~msg:"test" ~react:(fun _send s -> 7 | EzDebug.printf "message received %s" s; Lwt.return_ok ()) 8 | "ws://localhost:9000" >>= function 9 | | Ok {EzWs.action = {EzWs.send; _}; conn; _} -> 10 | EzLwtSys.sleep 10. >>= fun () -> 11 | send "message" >>= begin function 12 | | Ok _ -> 13 | EzDebug.printf "message sent"; 14 | conn >>= fun _ -> 15 | Lwt.return @@ EzDebug.printf "loop error" 16 | | Error s -> 17 | Lwt.return @@ EzDebug.printf "message error %s" s 18 | end 19 | | Error s -> 20 | Lwt.return @@ EzDebug.printf "cannot connect %s" s 21 | -------------------------------------------------------------------------------- /test/websocket/dune: -------------------------------------------------------------------------------- 1 | (library 2 | (name test_ws_lib) 3 | (modules test_ws_lib) 4 | (libraries ez_api)) 5 | 6 | (executable 7 | (name test_ws_server) 8 | (modules test_ws_server) 9 | (libraries test_ws_lib ez_api.server)) 10 | 11 | (executable 12 | (name test_ws_client) 13 | (modules test_ws_client) 14 | (libraries test_ws_lib ez_api.ws)) 15 | -------------------------------------------------------------------------------- /test/websocket/test_ws_client.ml: -------------------------------------------------------------------------------- 1 | open EzWs 2 | open Lwt.Infix 3 | 4 | let react _send = function 5 | | Ok s -> 6 | EzDebug.printf "client react: %s" s; 7 | Lwt.return_ok () 8 | | Error exn -> 9 | EzDebug.printf "client react to error: %s" (Printexc.to_string exn); 10 | Lwt.return_ok () 11 | 12 | let error content = 13 | Lwt.return @@ EzDebug.printf "client error %s" content 14 | 15 | let handle {conn; action = {send; close}} = 16 | let rec loop i = 17 | EzDebug.printf "client loop step %d" i; 18 | send @@ "client send " ^ string_of_int i >>= function 19 | | Error _ -> close None 20 | | Ok () -> Lwt.bind (EzLwtSys.sleep 11.) (fun () -> loop (i+1)) in 21 | Lwt.choose [ conn; loop 0 ] 22 | 23 | let main () = 24 | connect0 ~msg:"ws" ~react (EzAPI.BASE "http://localhost:8080") Test_ws_lib.service >>= function 25 | | Error e -> error e 26 | | Ok con -> handle con >>= function 27 | | Error e -> error e 28 | | Ok () -> 29 | EzDebug.printf "client connection ended properly"; 30 | Lwt.return_unit 31 | 32 | let () = 33 | EzLwtSys.run main 34 | -------------------------------------------------------------------------------- /test/websocket/test_ws_lib.ml: -------------------------------------------------------------------------------- 1 | open EzAPI 2 | 3 | let service : (string, string, exn, no_security) ws_service0 = 4 | ws_service 5 | ~input:(Json Json_encoding.string) 6 | ~output:(Json Json_encoding.string) 7 | Path.root 8 | -------------------------------------------------------------------------------- /test/websocket/test_ws_server.ml: -------------------------------------------------------------------------------- 1 | open EzAPIServer 2 | open Lwt.Infix 3 | 4 | module ReqSet = Set.Make(Uuidm) 5 | 6 | let on = ref ReqSet.empty 7 | 8 | (* react handler *) 9 | let react req _sec s = 10 | on := ReqSet.add req.EzAPI.Req.req_id !on; 11 | EzDebug.printf "server react: %s" s; 12 | Lwt.return_ok @@ "server echo: " ^ s 13 | 14 | (* background loop handler *) 15 | let bg req _sec send = 16 | on := ReqSet.add req.EzAPI.Req.req_id !on; 17 | let rec aux i = 18 | EzDebug.printf "server loop step %d" i; 19 | send @@ Ok ("server send " ^ string_of_int i); 20 | EzLwtSys.sleep 10. >>= fun () -> 21 | if ReqSet.mem req.EzAPI.Req.req_id !on then aux (i+1) 22 | else Lwt.return_unit in 23 | aux 0 24 | 25 | let onclose req = 26 | on := ReqSet.remove req.EzAPI.Req.req_id !on; 27 | EzDebug.printf "server close"; 28 | Lwt.return_unit 29 | 30 | (* server services *) 31 | let services = register_ws Test_ws_lib.service ~onclose ~react ~bg empty 32 | 33 | let main () = server [ 8080, API services ] 34 | 35 | let () = 36 | EzLwtSys.run main 37 | --------------------------------------------------------------------------------