Refactor: group PUT and PATCH together with conditional upload

Both methods need identical handling (customrequest + upload flag),
so combine them using pattern matching to reduce duplication.

Only set the upload flag when content is provided, matching the
behavior of POST and preventing curl from trying to read when
there's no content to upload.
This commit is contained in:
Simon Cruanes 2026-02-08 12:44:02 +00:00
parent 6662364103
commit aec132d37c

View file

@ -434,17 +434,14 @@ module Make (IO : IO) : S with type 'a io = 'a IO.t = struct
| POST [] when content <> None -> Curl.set_post self.curl true
| POST l -> Curl.set_httppost self.curl l
| GET -> Curl.set_httpget self.curl true
| PUT ->
Curl.set_customrequest self.curl "PUT";
Curl.set_upload self.curl true
| (PUT | PATCH) as meth ->
Curl.set_customrequest self.curl (string_of_meth meth);
if content <> None then Curl.set_upload self.curl true
| DELETE -> Curl.set_customrequest self.curl "DELETE"
| HEAD -> Curl.set_customrequest self.curl "HEAD"
| CONNECT -> Curl.set_customrequest self.curl "CONNECT"
| OPTIONS -> Curl.set_customrequest self.curl "OPTIONS"
| TRACE -> Curl.set_customrequest self.curl "TRACE"
| PATCH ->
Curl.set_customrequest self.curl "PATCH";
Curl.set_upload self.curl true);
| TRACE -> Curl.set_customrequest self.curl "TRACE");
_set_headers self !headers;
Curl.set_headerfunction self.curl (fun s0 ->