Skip to content

Commit 08e27b4

Browse files
committed
eio(client): add get,head,delete,post,put and patch
1 parent 4389948 commit 08e27b4

File tree

2 files changed

+81
-6
lines changed

2 files changed

+81
-6
lines changed

cohttp-eio/src/client.ml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ let response reader =
4141
commit reader;
4242
Http.Response.make ~version ~status ~headers ()
4343

44-
let connect ?(version = `HTTP_1_1) ?(headers = Http.Header.init ())
45-
?(body = Body.Empty) env sw stream meth uri =
44+
let connect ?(meth = `GET) ?(version = `HTTP_1_1)
45+
?(headers = Http.Header.init ()) ?(body = Body.Empty) env sw stream uri =
4646
let sock = Net.connect ~sw (Stdenv.net env) stream in
4747
let writer = Writer.create (sock :> Flow.sink) in
4848
Fiber.fork ~sw (fun () -> Writer.run writer);
@@ -52,3 +52,21 @@ let connect ?(version = `HTTP_1_1) ?(headers = Http.Header.init ())
5252
let reader = Reader.create 0x1000 (sock :> Flow.source) in
5353
let response = response reader in
5454
(response, reader)
55+
56+
let get ?version ?headers env sw stream uri =
57+
connect ~meth:`GET ?version ?headers env sw stream uri
58+
59+
let head ?version ?headers env sw stream uri =
60+
connect ~meth:`HEAD ?version ?headers env sw stream uri
61+
62+
let delete ?version ?headers env sw stream uri =
63+
connect ~meth:`DELETE ?version ?headers env sw stream uri
64+
65+
let post ?version ?headers ?body env sw stream uri =
66+
connect ~meth:`POST ?version ?headers ?body env sw stream uri
67+
68+
let put ?version ?headers ?body env sw stream uri =
69+
connect ~meth:`PUT ?version ?headers ?body env sw stream uri
70+
71+
let patch ?version ?headers ?body env sw stream uri =
72+
connect ~meth:`PATCH ?version ?headers ?body env sw stream uri

cohttp-eio/src/cohttp_eio.mli

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ module Server : sig
113113
(** [read_chunked request chunk_handler] is [updated_headers] if
114114
"Transfer-Encoding" header value is "chunked" in [headers] and all chunks
115115
in [reader] are read successfully. [updated_headers] is the updated
116-
headers as specified by the chunked encoding algorithm in
117-
https://datatracker.ietf.org/doc/html/rfc7230#section-4.1.3. Otherwise it
118-
is [Error err] where [err] is the error text.
116+
headers as specified by the chunked encoding algorithm in https:
117+
//datatracker.ietf.org/doc/html/rfc7230#section-4.1.3. Otherwise it is
118+
[Error err] where [err] is the error text.
119119
120120
@raise Invalid_argument
121121
if [Transfer-Encoding] header in [headers] is not specified as "chunked" *)
@@ -158,14 +158,71 @@ end
158158
module Client : sig
159159
type response = Http.Response.t * Reader.t
160160

161+
val get :
162+
?version:Http.Version.t ->
163+
?headers:Http.Header.t ->
164+
Eio.Stdenv.t ->
165+
Eio.Switch.t ->
166+
Eio.Net.Sockaddr.stream ->
167+
Uri.t ->
168+
response
169+
170+
val head :
171+
?version:Http.Version.t ->
172+
?headers:Http.Header.t ->
173+
Eio.Stdenv.t ->
174+
Eio.Switch.t ->
175+
Eio.Net.Sockaddr.stream ->
176+
Uri.t ->
177+
response
178+
179+
val delete :
180+
?version:Http.Version.t ->
181+
?headers:Http.Header.t ->
182+
Eio.Stdenv.t ->
183+
Eio.Switch.t ->
184+
Eio.Net.Sockaddr.stream ->
185+
Uri.t ->
186+
response
187+
188+
val post :
189+
?version:Http.Version.t ->
190+
?headers:Http.Header.t ->
191+
?body:Body.t ->
192+
Eio.Stdenv.t ->
193+
Eio.Switch.t ->
194+
Eio.Net.Sockaddr.stream ->
195+
Uri.t ->
196+
response
197+
198+
val put :
199+
?version:Http.Version.t ->
200+
?headers:Http.Header.t ->
201+
?body:Body.t ->
202+
Eio.Stdenv.t ->
203+
Eio.Switch.t ->
204+
Eio.Net.Sockaddr.stream ->
205+
Uri.t ->
206+
response
207+
208+
val patch :
209+
?version:Http.Version.t ->
210+
?headers:Http.Header.t ->
211+
?body:Body.t ->
212+
Eio.Stdenv.t ->
213+
Eio.Switch.t ->
214+
Eio.Net.Sockaddr.stream ->
215+
Uri.t ->
216+
response
217+
161218
val connect :
219+
?meth:Http.Method.t ->
162220
?version:Http.Version.t ->
163221
?headers:Http.Header.t ->
164222
?body:Body.t ->
165223
Eio.Stdenv.t ->
166224
Eio.Switch.t ->
167225
Eio.Net.Sockaddr.stream ->
168-
Http.Method.t ->
169226
Uri.t ->
170227
response
171228
end

0 commit comments

Comments
 (0)