package ez_api
Easy API library and tools
Install
Dune Dependency
github.com
Readme
LGPL-2.1-only WITH OCaml-LGPL-linking-exception License
Edit opam file
Versions (6)
Authors
Maintainers
Sources
v1.0.0.tar.gz
md5=d4dcb8a0be9cf87fca6471cecf083d9a
sha512=452a5de00bf0b51926d9c4c5c9062981c372ebce9ccfd0586b1e1b9b42c96721035dc7cd405e4bdd936ae0a7e69f442e4063713756b7cdac246319198fb89e2c
doc/src/ez_api/ezAPI.ml.html
Source file ezAPI.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
module Arg = Arg module Url = Url module Security = Security module Param = Param module Err = Err module Meth = Meth module Service = Service module Mime = Mime module Path = Path module Doc = Doc module Error_codes = Error_codes module Req = Req module IO = Service.IO module TYPES = struct include Url.TYPES type param_value = | I of int | S of string | B of bool | LS of string list type ip_info = { ip_ip : string; mutable ip_last : float; mutable ip_nb : int; ip_country : string * string; } end include TYPES type no_security = Security.none type 'b io = 'b IO.io = | Empty : unit io | Json : 'a Json_encoding.encoding -> 'a io | Raw : Mime.t list -> string io type ('args, 'input, 'output, 'error, 'security) service = { s : ('args, 'input, 'output, 'error, 'security) Service.t; doc : Doc.t; } type ('output, 'error, 'security) service0 = (Req.t, unit, 'output, 'error, 'security) service type ('arg, 'output, 'error, 'security) service1 = (Req.t * 'arg, unit, 'output, 'error, 'security) service type ('arg1, 'arg2, 'output, 'error, 'security) service2 = ((Req.t * 'arg1) * 'arg2, unit, 'output, 'error, 'security) service type ('input, 'output, 'error, 'security) post_service0 = (Req.t, 'input, 'output, 'error, 'security) service type ('arg,'input,'output, 'error, 'security) post_service1 = ((Req.t * 'arg), 'input, 'output, 'error, 'security) service type ('arg1, 'arg2,'input,'output, 'error, 'security) post_service2 = ((Req.t * 'arg1) * 'arg2, 'input, 'output, 'error, 'security) service type ('input, 'output, 'error, 'security) ws_service0 = (Req.t, 'input, 'output, 'error, 'security) service type ('arg, 'input, 'output, 'error, 'security) ws_service1 = (Req.t * 'arg, 'input, 'output, 'error, 'security) service type ('arg1, 'arg2, 'input, 'output, 'error, 'security) ws_service2 = ((Req.t * 'arg1) * 'arg2, 'input, 'output, 'error, 'security) service let warnings = ref [] let warning s = warnings := s :: !warnings let warnings f = List.iter f (List.rev !warnings); warnings := [] let encode_params s params = let open Param in let params = List.map (fun (param, v) -> if not (List.exists (fun p -> p.param_id = param.param_id) (Service.params s)) then Printf.kprintf warning "unknown argument %S" param.param_id; match v with | I n -> param.param_id, [string_of_int n] | S s -> param.param_id, [s] | B b -> param.param_id, [string_of_bool b] | LS s -> (param.param_id, s) ) params in Url.encode_args params let forge url s args params = let parts = String.concat "/" @@ Path.forge (Service.path s.s) args in let params = match params with | [] -> "" | params -> Printf.sprintf "?%s" (encode_params s.s params) in Url.assemble url parts params let forge0 url s params = forge url s Req.dummy params let forge1 url s arg1 params = forge url s (Req.dummy, arg1) params let forge2 url s arg1 arg2 params = forge url s ((Req.dummy, arg1), arg2) params let raw_service : type i. ?section:Doc.section -> ?name:string -> ?descr:string -> ?meth:Meth.t -> input:i io -> output:'o io -> ?errors:'e Err.case list -> ?params:Param.t list -> ?security:'s list -> ?register:bool -> ?input_example:i -> ?output_example:'o -> (Req.t, 'a) Path.t -> ('a, i, 'o, 'e, 's) service = fun ?section ?name ?descr ?meth ~input ~output ?(errors=[]) ?(params=[]) ?(security=[]) ?register ?input_example ?output_example path -> let meth = match meth, input with | None, Empty -> `GET | None, _ -> `POST | Some m, _ -> m in let s = Service.make ~meth ~input ~output ~errors ~params ~security path in let doc = Doc.make ?name ?descr ?register ?section ?input_example ?output_example s in { s; doc } let post_service ?section ?name ?descr ?(meth=`POST) ~input ~output ?errors ?params ?security ?register ?input_example ?output_example path = raw_service ?section ?name ?descr ~input:(Json input) ~output:(Json output) ?errors ~meth ?params ?security ?register ?input_example ?output_example path let service ?section ?name ?descr ?(meth=`GET) ~output ?errors ?params ?security ?register ?output_example path = raw_service ?section ?name ?descr ~input:Empty ~output:(Json output) ?errors ~meth ?params ?security ?register ?output_example path let ws_service ?section ?name ?descr ~input ~output ?errors ?params ?security ?register ?output_example path = raw_service ?section ?name ?descr ~input ~output ?errors ~meth:`GET ?params ?security ?register ?output_example path let register service = service.doc.Doc.doc_registered <- true; service.s let id s = s.doc.Doc.doc_id module Legacy = struct type nonrec ('args2, 'args, 'input, 'output) service = ('args, 'input, 'output, Security.uninhabited, Security.none) service type 'output service0 = (unit, Req.t, unit, 'output) service type ('arg, 'output) service1 = (unit * 'arg, Req.t * 'arg, unit, 'output) service type ('arg1, 'arg2, 'output) service2 = ((unit * 'arg1) * 'arg2, (Req.t * 'arg1) * 'arg2, unit, 'output) service type ('input, 'output) post_service0 = (unit, Req.t, 'input, 'output) service type ('arg, 'input,'output) post_service1 = (unit * 'arg, Req.t * 'arg, 'input, 'output) service type ('arg1, 'arg2, 'input, 'output) post_service2 = ((unit * 'arg1) * 'arg2, (Req.t * 'arg1) * 'arg2, 'input, 'output) service let post_service ?section ?name ?descr ?meth ~input ~output ?params arg = post_service ?section ?name ?descr ?meth ~input ~output ?params arg let service ?section ?name ?descr ?meth ~output ?params arg = service ?section ?name ?descr ?meth ~output ?params arg end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>