/** * @param Request $request * @param \Exception|null $previous */ public function __construct(Request $request, \Exception $previous = null) { $this->request = $request; if (null !== $previous && is_a($previous, 'GuzzleHttp\\Exception\\RequestException')) { $message = sprintf('The request to path "%s" with query parameters "%s" failed to return a valid response. The previous exception reported "%s" at "%s:%d".', $request->getPath(), json_encode($request->getParameters()->all()), $previous->getMessage(), $previous->getFile(), $previous->getLine()); } else { $message = sprintf('The request to path "%s" with query parameters "%s" failed to return a valid response.', $request->getPath(), json_encode($request->getParameters()->all())); } parent::__construct($message, 0, $previous); }
/** * {@inheritDoc} */ public function head(Request $request) { $response = null; try { $response = $this->client->head($request->getPath(), $this->getConfiguration($request)); } catch (RequestException $e) { $this->handleRequestException($request, $e); } return $this->createResponse($response); }
/** * Get the expected request that will deliver a response * * @param $path * @param array $parameters * @param string $method * @param array $headers * @param null $body * @return Request */ protected function getRequest($path, $parameters = [], $method = 'GET', $headers = [], $body = null) { if ($method == 'POST' || $method == 'PUT' || $method == 'PATCH' || $method == 'DELETE') { $headers['Content-Type'] = 'application/json'; } $parameters['api_key'] = 'abcdef'; $headers['Accept'] = 'application/json'; $headers['User-Agent'] = sprintf('wtfzdotnet/php-tmdb-api (v%s)', Client::VERSION); $request = new Request($path, $method, new ParameterBag($parameters), new ParameterBag($headers)); $request->setOptions(new ParameterBag(['token' => new ApiToken('abcdef'), 'secure' => true, 'cache' => ['enabled' => true, 'handler' => new FilesystemCache(sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'php-tmdb-api'), 'path' => sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'php-tmdb-api', 'subscriber' => null], 'log' => ['enabled' => false, 'level' => 'debug', 'handler' => null, 'path' => sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'php-tmdb-api.log', 'subscriber' => null], 'adapter' => $this->getMock('Tmdb\\HttpClient\\Adapter\\AdapterInterface'), 'host' => 'api.themoviedb.org/3/', 'base_url' => 'https://api.themoviedb.org/3/', 'session_token' => null, 'event_dispatcher' => $this->eventDispatcher])); if ($body !== null) { $request->setBody(is_array($body) ? json_encode($body) : $body); } return $request; }
/** * Create the request object * * @param $path * @param $method * @param array $parameters * @param array $headers * @param $body * @return Request */ private function createRequest($path, $method, $parameters = [], $headers = [], $body) { $request = new Request(); $request->setPath($path)->setMethod($method)->setParameters(new ParameterBag((array) $parameters))->setHeaders(new ParameterBag((array) $headers))->setBody($body)->setOptions(new ParameterBag((array) $this->options)); return $this->lastRequest = $request; }
/** * @return null */ public function getBody() { return $this->request->getBody(); }
/** * @test */ public function doesSetGetBody() { $request = new Request(); $request->setBody('ab'); $this->assertEquals('ab', $request->getBody()); }