Skip to content

Commit a503fa7

Browse files
committed
Expose the underlying record type and add fieldslib getters/setters
For mirage#38
1 parent abf8e70 commit a503fa7

File tree

4 files changed

+21
-51
lines changed

4 files changed

+21
-51
lines changed

cohttp/request.ml

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,12 @@
1616
*)
1717

1818
type t = {
19-
headers: Header.t;
20-
meth: Code.meth;
21-
uri: Uri.t;
22-
version: Code.version;
23-
encoding: Transfer.encoding;
24-
}
25-
26-
let headers r = r.headers
27-
let meth r = r.meth
28-
let uri r = r.uri
29-
let version r = r.version
30-
let encoding r = r.encoding
19+
mutable headers: Header.t;
20+
mutable meth: Code.meth;
21+
mutable uri: Uri.t;
22+
mutable version: Code.version;
23+
mutable encoding: Transfer.encoding;
24+
} with fields
3125

3226
let make ?(meth=`GET) ?(version=`HTTP_1_1) ?encoding ?headers uri =
3327
let headers =
@@ -58,36 +52,6 @@ let make_for_client ?headers ?(chunked=true) ?(body_length=0) meth uri =
5852
in
5953
make ~meth ~encoding ?headers uri
6054

61-
module type T = sig
62-
val headers : t -> Header.t
63-
val meth : t -> Code.meth
64-
(** Retrieve full HTTP request uri *)
65-
val uri : t -> Uri.t
66-
67-
(** Retrieve HTTP version, usually 1.1 *)
68-
val version : t -> Code.version
69-
70-
(** Retrieve the transfer encoding of this HTTP request *)
71-
val encoding : t -> Transfer.encoding
72-
73-
(** TODO *)
74-
val params : t -> (string * string list) list
75-
76-
(** TODO *)
77-
val get_param : t -> string -> string option
78-
79-
val make : ?meth:Code.meth -> ?version:Code.version ->
80-
?encoding:Transfer.encoding -> ?headers:Header.t ->
81-
Uri.t -> t
82-
83-
val make_for_client:
84-
?headers:Header.t ->
85-
?chunked:bool ->
86-
?body_length:int ->
87-
Code.meth -> Uri.t -> t
88-
end
89-
90-
9155
module type S = sig
9256
module IO : IO.S
9357

cohttp/request.mli

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@
2121
the {!headers}, {!version}, {!meth} and {!uri}. The body is handled by
2222
the separate {!S} module type, as it is dependent on the IO
2323
implementation. *)
24-
type t
24+
type t = {
25+
mutable headers: Header.t;
26+
mutable meth: Code.meth;
27+
mutable uri: Uri.t;
28+
mutable version: Code.version;
29+
mutable encoding: Transfer.encoding;
30+
} with fields
2531

2632
(** Retrieve the HTTP request headers *)
2733
val headers : t -> Header.t

cohttp/response.ml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(*
2-
* Copyright (c) 2012 Anil Madhavapeddy <[email protected]>
2+
* Copyright (c) 2012-2013 Anil Madhavapeddy <[email protected]>
33
*
44
* Permission to use, copy, modify, and distribute this software for any
55
* purpose with or without fee is hereby granted, provided that the above
@@ -20,12 +20,7 @@ type t = {
2020
headers: Header.t;
2121
version: Code.version;
2222
status: Code.status_code;
23-
}
24-
25-
let headers r = r.headers
26-
let encoding r = r.encoding
27-
let version r = r.version
28-
let status r = r.status
23+
} with fields
2924

3025
let make ?(version=`HTTP_1_1) ?(status=`OK) ?(encoding=Transfer.Chunked) ?headers () =
3126
let headers = match headers with None -> Header.init () |Some h -> h in

cohttp/response.mli

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515
*
1616
*)
1717

18-
type t
18+
type t = {
19+
encoding: Transfer.encoding;
20+
headers: Header.t;
21+
version: Code.version;
22+
status: Code.status_code;
23+
} with fields
1924

2025
(** Retrieve response HTTP headers *)
2126
val headers : t -> Header.t

0 commit comments

Comments
 (0)