private function getParameters(Request $request) { $uri = $request->getUri(); $queryParamStr = parse_url($uri, PHP_URL_QUERY) ?? ''; parse_str($queryParamStr, $queryParams); $body = $request->getBody() ?? ''; parse_str($body, $bodyParams); return array_merge($queryParams, $bodyParams); }
public static function fromRequest(Request $request) { $commandLines = []; $commandLines[] = "curl -i"; $commandLines[] = "-X " . $request->getMethod() . ""; //curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource $headers = $request->getAllHeaders(); foreach ($headers as $name => $values) { foreach ($values as $value) { $commandLines[] = sprintf('-H "%s: %s"', $name, $value); } } $body = $request->getBody(); if ($body !== null) { $commandLines[] = '-d "' . addslashes($body) . '"'; } $commandLines[] = $request->getUri(); return implode(" \\\n", $commandLines); }
/** * Decide whether the post fields should be added to the Oauth BaseString. * Flickr incorrectly add the post fields when the content type is 'multipart/form-data'. They should only be added when the content type is 'application/x-www-form-urlencoded' * * @param $request * @return bool Whether the post fields should be signed or not */ public function shouldPostFieldsBeSigned(Request $request) { $returnValue = false; if ($request->hasHeader('Content-Type')) { $contentType = $request->getHeader('Content-Type'); //TODO - not safe if ($contentType === 'application/x-www-form-urlencoded' || $contentType === 'multipart/form-data') { $returnValue = true; } } // Don't sign POST fields if the request uses POST fields and no files $body = $request->getBody(); if ($body instanceof \Amp\Artax\FormBody) { if ($body == 0) { $returnValue = false; } } return $returnValue; }
private function normalizeRequestBodyHeaders(Request $request, array $options) { if ($request->hasHeader('Content-Length')) { // If the user manually assigned a Content-Length we don't need to do anything here. return; } $body = $request->getBody(); $method = $request->getMethod(); if (empty($body) && $body !== '0' && in_array($method, ['POST', 'PUT', 'PATCH'])) { $request->setHeader('Content-Length', '0'); $request->removeHeader('Transfer-Encoding'); } elseif (is_scalar($body) && $body !== '') { $body = (string) $body; $request->setBody($body); $request->setHeader('Content-Length', strlen($body)); $request->removeHeader('Transfer-Encoding'); } elseif ($body instanceof \Iterator) { $request->removeHeader('Content-Length'); $request->setHeader('Transfer-Encoding', 'chunked'); $chunkedBody = new ChunkingIterator($body); $request->setBody($chunkedBody); } elseif ($body !== null) { throw new \InvalidArgumentException('Request entity body must be a scalar or Iterator'); } if ($body && $options[self::OP_EXPECT_CONTINUE] && !$request->hasHeader('Expect')) { $request->setHeader('Expect', '100-continue'); } if ($method === 'TRACE' || $method === 'HEAD' || $method === 'OPTIONS') { $request->setBody(null); } }