diff --git a/src/TwitterOAuth.php b/src/TwitterOAuth.php index 3d4f3708..ff7f1314 100644 --- a/src/TwitterOAuth.php +++ b/src/TwitterOAuth.php @@ -275,7 +275,7 @@ public function put( array $parameters = [], bool $json = false ) { - return $this->http('PUT', self::API_HOST, $path, $parameters, false); + return $this->http('PUT', self::API_HOST, $path, $parameters, $json); } /** @@ -671,21 +671,22 @@ private function request( break; case 'POST': $options[CURLOPT_POST] = true; - if ($json) { - $options[CURLOPT_HTTPHEADER][] = - 'Content-type: application/json'; - $options[CURLOPT_POSTFIELDS] = json_encode($postfields); - } else { - $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery( - $postfields, - ); - } + $options = $this->setPostfieldsOptions( + $options, + $postfields, + $json, + ); break; case 'DELETE': $options[CURLOPT_CUSTOMREQUEST] = 'DELETE'; break; case 'PUT': $options[CURLOPT_CUSTOMREQUEST] = 'PUT'; + $options = $this->setPostfieldsOptions( + $options, + $postfields, + $json, + ); break; } @@ -765,4 +766,28 @@ private function curlCaOpt(string $path): int { return is_dir($path) ? CURLOPT_CAPATH : CURLOPT_CAINFO; } + + /** + * Set options for JSON Requests + * + * @param array $options + * @param array $postfields + * @param bool $json + * + * @return array + */ + private function setPostfieldsOptions( + array $options, + array $postfields, + bool $json + ): array { + if ($json) { + $options[CURLOPT_HTTPHEADER][] = 'Content-type: application/json'; + $options[CURLOPT_POSTFIELDS] = json_encode($postfields); + } else { + $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery($postfields); + } + + return $options; + } }