···4848 ?title:string ->
4949 ?size_in_bytes:int64 ->
5050 ?duration_in_seconds:int ->
5151+ ?unknown:Unknown.t ->
5152 unit ->
5253 t
5353-(** [create ~url ~mime_type ?title ?size_in_bytes ?duration_in_seconds ()]
5454+(** [create ~url ~mime_type ?title ?size_in_bytes ?duration_in_seconds ?unknown ()]
5455 creates an attachment object.
55565657 @param url The location of the attachment (required)
···5960 of the same resource
6061 @param size_in_bytes The size of the attachment file in bytes
6162 @param duration_in_seconds The duration of the attachment in seconds (for audio/video)
6363+ @param unknown Unknown/custom fields for extensions (default: empty)
62646365 {b Examples:}
6466 {[
···7577 ~size_in_bytes:15_728_640L
7678 ~duration_in_seconds:1800 ()
7779 ]} *)
7878-7979-val make :
8080- url:string ->
8181- mime_type:string ->
8282- ?title:string ->
8383- ?size_in_bytes:int64 ->
8484- ?duration_in_seconds:int ->
8585- ?unknown:Unknown.t ->
8686- unit ->
8787- t
8888-(** [make] is like {!create} but allows setting unknown fields. *)
898090819182(** {1 Accessors} *)
+4-7
lib/author.ml
···1717 unknown : Unknown.t;
1818}
19192020-let make ?name ?url ?avatar ?(unknown = Unknown.empty) () =
2121- { name; url; avatar; unknown }
2222-2323-let create ?name ?url ?avatar () =
2020+let create ?name ?url ?avatar ?(unknown = Unknown.empty) () =
2421 if name = None && url = None && avatar = None then
2522 invalid_arg "Author.create: at least one field (name, url, or avatar) must be provided";
2626- make ?name ?url ?avatar ()
2323+ { name; url; avatar; unknown }
27242825let name t = t.name
2926let url t = t.url
···7067 map ~kind:"Unknown members" Jsont.json ~dec_empty ~dec_add ~dec_finish ~enc
7168 in
7269 (* Constructor that matches the jsont object map pattern *)
7373- let make_obj name url avatar unknown = make ?name ?url ?avatar ~unknown () in
7474- Jsont.Object.map ~kind ~doc make_obj
7070+ let create_obj name url avatar unknown = create ?name ?url ?avatar ~unknown () in
7171+ Jsont.Object.map ~kind ~doc create_obj
7572 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:name
7673 |> Jsont.Object.opt_mem "url" Jsont.string ~enc:url
7774 |> Jsont.Object.opt_mem "avatar" Jsont.string ~enc:avatar
+5-8
lib/author.mli
···42424343(** {1 Construction} *)
44444545-val create : ?name:string -> ?url:string -> ?avatar:string -> unit -> t
4646-(** [create ?name ?url ?avatar ()] creates an author.
4545+val create :
4646+ ?name:string -> ?url:string -> ?avatar:string ->
4747+ ?unknown:Unknown.t -> unit -> t
4848+(** [create ?name ?url ?avatar ?unknown ()] creates an author.
47494850 At least one of the optional parameters must be provided, otherwise
4951 the function will raise [Invalid_argument].
···5153 @param name The author's name
5254 @param url URL of the author's website or profile
5355 @param avatar URL of the author's avatar image (should be square, 512x512 or larger)
5656+ @param unknown Unknown/custom fields for extensions (default: empty)
54575558 {b Examples:}
5659 {[
···6164 ~url:"https://janedoe.com"
6265 ~avatar:"https://janedoe.com/avatar.png" ()
6366 ]} *)
6464-6565-val make :
6666- ?name:string -> ?url:string -> ?avatar:string ->
6767- ?unknown:Unknown.t -> unit -> t
6868-(** [make] is like {!create} but allows setting unknown fields.
6969- Useful when round-tripping JSON with custom extensions. *)
706771687269(** {1 Accessors} *)