code: public function put($url, $data = null, $len = null, $method = "PUT")
    {
      return $this->request([
        CURLOPT_PUT => true,
        CURLOPT_CUSTOMREQUEST => $method ?: "PUT",
        CURLOPT_URL => "$url",
        CURLOPT_INFILE => $data,
        CURLOPT_INFILESIZE => $len,
      ]);
    }
docs: HTTP PUT-like method caller
  
  Performs HTTP request on a given `$url`.
  
  Returns response body, if applicable.
  
  The request body is read from stream resource `$data` for `$len` bytes of content.
  
  Upon successful(*) request, the basic status block is populated.
  
  (*)The definition of success depends on cURL handle settings.
  
  @param string $url An URL to access.
  @param resource $data The stream resource to read data from.
  @param int $len Length of `$data` to read.
  @param ?string $method The request method, defaults to PUT.
  @return string Response body.