/** * Populates a response object. * * @param resource $curl A cURL resource * @param string $raw The raw response string * @param MessageInterface $response The response object */ protected static function populateResponse($curl, $raw, MessageInterface $response) { $curlResourceId = static::getResourceId($curl); $headers = self::$wipHeaders[$curlResourceId]; $response->setHeaders($headers->getLastRedirectionDataList()); $response->setContent(strlen($raw) > $headers->getSize() ? substr($raw, $headers->getSize()) : ''); }
function it_parses_properly(MessageInterface $messageInterface) { $messageInterface->getContent()->willReturn(<<<JSON [{ \t"command": "settings", \t"settings": { \t\t"basePath": "\\/", \t\t"pathPrefix": "ca\\/", \t\t"ajaxPageState": { \t\t\t"theme": "bicing", \t\t\t"theme_token": "NngnJfQN6FaHhoz6tHcHih5kFdxcm0b7EeWdAgd492M" \t\t} \t}, \t"merge": true }, { \t"command": "insert", \t"method": null, \t"selector": null, \t"data": "[{\\u0022StationID\\u0022:\\u00221\\u0022,\\u0022StationName\\u0022:\\u002201 - C\\\\/ GRAN VIA CORTS CATALANES 760\\u0022,\\u0022DisctrictCode\\u0022:\\u00222\\u0022,\\u0022AddressGmapsLongitude\\u0022:\\u00222.180042000000000000\\u0022,\\u0022AddressGmapsLatitude\\u0022:\\u002241.39795200000000000\\u0022,\\u0022StationAvailableBikes\\u0022:\\u002217\\u0022,\\u0022StationFreeSlot\\u0022:\\u00222\\u0022,\\u0022AddressZipCode\\u0022:\\u002208013\\u0022,\\u0022AddressStreet1\\u0022:\\u0022Gran Via Corts Catalanes\\u0022,\\u0022AddressNumber\\u0022:\\u0022760\\u0022,\\u0022NearbyStationList\\u0022:\\u002224,369,387,426\\u0022,\\u0022StationStatusCode\\u0022:\\u0022OPN\\u0022}]", \t"settings": null }, { \t"command": "insert", \t"method": "prepend", \t"selector": null, \t"data": "", \t"settings": null }] JSON ); $this->browser->post(BicingApi::BICING_URL)->willReturn($messageInterface); $this->getSnapshot()->shouldHaveCount(1); }
/** * {@inheritDoc} */ public function getResponseContent(HttpMessageInterface $rawResponse) { $content = $rawResponse->getContent(); if (preg_match('/^callback\\((.+)\\);$/', $content, $matches)) { $rawResponse->setContent(trim($matches[1])); } return parent::getResponseContent($rawResponse); }
public function send(RequestInterface $request, MessageInterface $response) { try { $this->client->forceAuthentication(); $response->setContent(serialize($_SESSION['phpCAS'])); } catch (\CAS_AuthenticationException $e) { } }
/** * @see ClientInterface */ public function send(RequestInterface $request, MessageInterface $response) { if (!($queued = $this->receiveFromQueue())) { throw new \LogicException('There are no queued responses.'); } $response->setHeaders($queued->getHeaders()); $response->setContent($queued->getContent()); }
/** * Processes Set-Cookie headers from a request/response pair. * * @param RequestInterface $request A request object * @param MessageInterface $response A response object */ public function processSetCookieHeaders(RequestInterface $request, MessageInterface $response) { foreach ($response->getHeader('Set-Cookie', false) as $header) { $cookie = new Cookie(); $cookie->fromSetCookieHeader($header, parse_url($request->getHost(), PHP_URL_HOST)); $this->addCookie($cookie); } }
/** * {@inheritDoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { /** @var $response \Dynect\HttpClient\Message\Response */ if ($response->isClientError() || $response->isServerError()) { $content = $response->getContent(); $message = array_shift($content['msgs']); throw new RuntimeException($message['INFO'], $response->getStatusCode()); } }
public function send(RequestInterface $request, MessageInterface $response) { $result = $this->callWithFixtures('send', func_get_args(), $resultArguments); /** @var MessageInterface $resultResponse */ $resultResponse = $resultArguments[1]; $response->setHeaders($resultResponse->getHeaders()); $response->setContent($resultResponse->getContent()); return $result; }
public function send(BuzzRequest $buzzRequest, BuzzResponse $buzzResponse) { $session = session_id(); $request = Request::create($buzzRequest->getUrl(), $buzzRequest->getMethod()); $response = static::$kernel->handle($request); $buzzResponse->setContent($response->getContent()); // kernel handling set session_id to empty string session_id($session); }
/** * {@inheritDoc} * @param Response $response */ public function postSend(RequestInterface $request, MessageInterface $response) { if ($response->isClientError() || $response->isServerError() || $response->getHeader('X-Curl-Error-Result')) { if ($this->client instanceof BatchClientInterface) { $this->failedMessages[] = [$request, $response]; return; } throw new RequestFailedException($request, $response); } }
/** * Populates a response object. * * @param resource $curl A cURL resource * @param string $raw The raw response string * @param MessageInterface $response The response object */ protected static function populateResponse($curl, $raw, MessageInterface $response) { // fixes bug https://sourceforge.net/p/curl/bugs/1204/ $version = curl_version(); if (version_compare($version['version'], '7.30.0', '<')) { $pos = strlen($raw) - curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD); } else { $pos = curl_getinfo($curl, CURLINFO_HEADER_SIZE); } $response->setHeaders(static::getLastHeaders(rtrim(substr($raw, 0, $pos)))); $response->setContent(strlen($raw) > $pos ? substr($raw, $pos) : ''); }
public function postSend(RequestInterface $request, MessageInterface $response) { $raw = $response->getContent(); $content = json_decode($raw, true); if ($response->getStatusCode() === 404) { throw new NotFoundHttpException(sprintf('%s %s: %s', $response->getStatusCode(), $response->getReasonPhrase(), $content['message'])); } if (!($response->isInformational() || $response->isSuccessful())) { throw new \Exception(sprintf('%s %s: %s', $response->getStatusCode(), $response->getReasonPhrase(), $content['message'])); } $response->setContent($content); }
/** * Populates the supplied response with the response for the supplied request. * * @param RequestInterface $request A request object. * @param MessageInterface $response A response object. * * @return void */ public function send(RequestInterface $request, MessageInterface $response) { if (!isset($this->fixture['status'])) { $this->fixture['status'] = 200; } $response->addHeader('HTTP ' . $this->fixture['status'] . ' null'); if (!empty($this->fixture['headers'])) { $response->addHeaders($this->fixture['headers']); } if (!empty($this->fixture['body'])) { $response->setContent($this->fixture['body']); } }
public function it_returns_its_issues(Api $client, Issues $issuesApi, PullRequests $mergesApi, MessageInterface $response) { $client->api('Repositories\\Issues')->willReturn($issuesApi); $client->api('Repositories\\PullRequests')->willReturn($mergesApi); $response->getContent()->shouldBeCalled()->willReturn('{ "issues":[{"status" : "open"},{ "status" : "closed"}], "values":[{"status" : "open"},{ "status" : "closed"}] }'); $issuesApi->all('foo', 'bar', ['state' => 'OPEN'])->shouldBeCalled()->willReturn($response); $mergesApi->all('foo', 'bar', ['state' => 'OPEN'])->shouldBeCalled()->willReturn($response); $result = $this->getIssues(); $result->shouldHaveCount(2); $result[0]->shouldHaveType('Rs\\Issues\\Bitbucket\\BitbucketIssue'); $result[0]->getType()->shouldBe('issue'); $result[1]->shouldHaveType('Rs\\Issues\\Bitbucket\\BitbucketIssue'); $result[1]->getType()->shouldBe('pull'); }
/** * Populates the supplied response with the response for the supplied request. * * @param RequestInterface $request A request object * @param MessageInterface $response A response object */ public function send(RequestInterface $request, MessageInterface $response) { $cacheKey = $this->generateCacheKeyForRequest($request); if ($this->cache->contains($cacheKey)) { $this->hits++; $cachedResponse = unserialize($this->cache->fetch($cacheKey)); /* @var $cachedResponse \Buzz\Message\Response */ $response->setContent($cachedResponse->getContent()); $response->setHeaders($cachedResponse->getHeaders()); return; } $this->misses++; $this->client->send($request, $response); $this->cache->save($cacheKey, serialize($response), $this->lifetime); }
/** * {@inheritDoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { $header = $response->getHeader('Link'); if (empty($header)) { return null; } $pagination = array(); foreach (explode(',', $header) as $link) { preg_match('/<(.*)>; rel="(.*)"/i', trim($link, ','), $match); if (3 === count($match)) { $pagination[$match[2]] = $match[1]; } } $response->setPagination($pagination); }
/** * @see ClientInterface * * @throws ClientException If file_get_contents() fires an error */ public function send(RequestInterface $request, MessageInterface $response) { $context = stream_context_create($this->getStreamContextArray($request)); $url = $request->getHost() . $request->getResource(); $level = error_reporting(0); $content = file_get_contents($url, 0, $context); error_reporting($level); if (false === $content) { $error = error_get_last(); $e = new RequestException($error['message']); $e->setRequest($request); throw $e; } $response->setHeaders($this->filterHeaders((array) $http_response_header)); $response->setContent($content); }
/** * {@inheritDoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { $content = $response->getArrayContent(); if (is_array($content) && isset($content['state']) && $content['state'] !== '200') { throw new RuntimeException($content['statemsg'], (int) $content['state']); } /** @var $response \Nic\HttpClient\Message\Response */ if ($response->isClientError() || $response->isServerError()) { $content = $response->getContent(); if (is_array($content) && isset($content['message'])) { if (400 == $response->getStatusCode()) { throw new ErrorException($content['message'], 400); } } $errorMessage = null; if (isset($content['error'])) { $errorMessage = implode("\n", $content['error']); } elseif (isset($content['message'])) { $errorMessage = $content['message']; } else { $errorMessage = $content; } throw new RuntimeException($errorMessage, $response->getStatusCode()); } }
/** * @see ClientInterface * * @throws RuntimeException If file_get_contents() fires an error */ public function send(RequestInterface $request, MessageInterface $response) { if ($cookieJar = $this->getCookieJar()) { $cookieJar->clearExpiredCookies(); $cookieJar->addCookieHeaders($request); } $context = stream_context_create($this->getStreamContextArray($request)); $url = $request->getHost() . $request->getResource(); $level = error_reporting(0); $content = file_get_contents($url, 0, $context); error_reporting($level); if (false === $content) { $error = error_get_last(); throw new \RuntimeException($error['message']); } $response->setHeaders($this->filterHeaders((array) $http_response_header)); $response->setContent($content); if ($cookieJar) { $cookieJar->processSetCookieHeaders($request, $response); } }
/** * @param \Buzz\Message\RequestInterface $oRequest * @param \Buzz\Message\MessageInterface $oResponse * @throws \GitlabCI\Exception\ErrorException * @throws \GitlabCI\Exception\RuntimeException */ public function postSend(\Buzz\Message\RequestInterface $oRequest, \Buzz\Message\MessageInterface $oResponse) { if ($oResponse->isClientError() || $oResponse->isServerError()) { $aContent = $oResponse->getContent(); if (is_array($aContent) && isset($aContent['message'])) { if (400 == $oResponse->getStatusCode()) { throw new \GitlabCI\Exception\ErrorException($aContent['message'], 400); } } $sErrorMessage = null; if (is_array($aContent)) { if (isset($aContent['error'])) { if (is_array($aContent['error'])) { $sErrorMessage = implode(PHP_EOL, $aContent['error']); } else { $sErrorMessage = $aContent['error']; } } elseif (isset($aContent['message'])) { $sErrorMessage = $aContent['message']; } else { $sErrorMessage = $aContent; } } else { $sErrorMessage = 'Unkown error'; } throw new \GitlabCI\Exception\RuntimeException($sErrorMessage, $oResponse->getStatusCode()); } }
public function postSend(RequestInterface $request, MessageInterface $response) { if ($this->disabled) { if (1 === $this->disabled) { $this->disabled = false; } return; } if (!$response->isSuccessful()) { $resultArray = json_decode($response->getContent(), true); if (isset($resultArray['error'])) { $errorMessage = $resultArray['error']['message']; } else { $errorMessage = []; $errorMessage[] = 'No message found. If you think this is a bug please report it to the Gush team.'; $errorMessage[] = 'WARNING! The Request contains confidential information such as password or token.'; $errorMessage[] = 'Raw request: ' . (string) $request . PHP_EOL . PHP_EOL; $errorMessage[] = 'Raw response: ' . (string) $response; $errorMessage = implode(PHP_EOL, $errorMessage); } throw new AdapterException($errorMessage); } }
/** * {@inheritDoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { /** @var $response \Github\HttpClient\Message\Response */ if ($response->isClientError() || $response->isServerError()) { $remaining = $response->getHeader('X-RateLimit-Remaining'); if (null !== $remaining && 1 > $remaining) { throw new ApiLimitExceedException($this->options['api_limit']); } $content = $response->getContent(); if (is_array($content) && isset($content['message'])) { if (400 == $response->getStatusCode()) { throw new ErrorException($content['message'], 400); } elseif (422 == $response->getStatusCode() && isset($content['errors'])) { $errors = array(); foreach ($content['errors'] as $error) { switch ($error['code']) { case 'missing': $errors[] = sprintf('Resource "%s" not exists anymore', $error['resource']); break; case 'missing_field': $errors[] = sprintf('Field "%s" is missing, for resource "%s"', $error['field'], $error['resource']); break; case 'invalid': $errors[] = sprintf('Field "%s" is invalid, for resource "%s"', $error['field'], $error['resource']); break; case 'already_exists': $errors[] = sprintf('Field "%s" already exists, for resource "%s"', $error['field'], $error['resource']); break; default: $errors[] = $error['message']; break; } } throw new ValidationFailedException('Validation Failed: ' . implode(', ', $errors), 422); } } throw new RuntimeException(isset($content['message']) ? $content['message'] : $content, $response->getStatusCode()); } }
/** * {@inheritDoc} */ public function postSend(RequestInterface $request, MessageInterface $response) { /** @var $response \GoSquared\HttpClient\Adapter\Buzz\Message\Response */ if ($response->isClientError() || $response->isServerError()) { $content = $response->getContent(); if (is_array($content) && isset($content['code'], $content['message'])) { switch ($content['code']) { case 4001: throw new AuthorizationException($content['message'], 403); break; case 4002: throw new ApiLimitException($content['message'], 403); break; default: throw new ErrorException(sprintf('%d: %s', $content['code'], $content['message']), $response->getStatusCode()); break; } } throw new ErrorException(isset($content['message']) ? $content['message'] : $content, $response->getStatusCode()); } }
/** * @param RequestInterface $request * @param MessageInterface $response * @throws ErrorException */ public function postSend(RequestInterface $request, MessageInterface $response) { if ($response->isClientError() || $response->isServerError()) { $content = $response->getContent(); if (is_array($content) && isset($content['message'])) { if (400 == $response->getStatusCode()) { $message = $this->parseMessage($content['message']); throw new ErrorException($message, 400); } } $errorMessage = null; if (isset($content['error'])) { $errorMessage = implode("\n", $content['error']); } elseif (isset($content['message'])) { $errorMessage = $this->parseMessage($content['message']); } else { $errorMessage = $content; } throw new RuntimeException($errorMessage, $response->getStatusCode()); } }
/** * @param MessageInterface $curlResponse * @param string $responseClass * * @return object * @throws RequestProcessException */ private function deserialize(MessageInterface $curlResponse, $responseClass) { try { return $this->serializer->fromJson($curlResponse->getContent(), $responseClass); } catch (SerializerException $exception) { throw new RequestProcessException(sprintf('Exception %s was thrown during deserialization. Message: "%s"', get_class($exception), $exception->getMessage()), $exception->getCode(), $exception); } }
/** * Populates a response object. * * @param resource $curl A cURL resource * @param string $raw The raw response string * @param MessageInterface $response The response object */ protected static function populateResponse($curl, $raw, MessageInterface $response) { list($header, $body) = preg_split("/\\R\\R/", $raw, 2); $response->setHeaders(static::getLastHeaders(rtrim($header))); $response->setContent($body); }
/** * Decode the response content from json * * @param MessageInterface $response The response we received * * @return \stdClass The decoded json response from the server */ protected function decode(MessageInterface $response) { return json_decode($response->getContent()); }
/** * Get the 'parsed' content based on the response headers. * * @param HttpMessageInterface $rawResponse * * @return array */ protected function getResponseContent(HttpMessageInterface $rawResponse) { // First check that content in response exists, due too bug: https://bugs.php.net/bug.php?id=54484 $content = $rawResponse->getContent(); if (!$content) { return array(); } $response = json_decode($content, true); if (JSON_ERROR_NONE !== json_last_error()) { parse_str($content, $response); } return $response; }
/** * Get the 'parsed' content based on the response headers. * * @param MessageInterface $rawResponse * * @return array */ protected function getResponseContent(MessageInterface $rawResponse) { $content = $rawResponse->getContent(); if (!$content) { return []; } return json_decode($content, true); }
/** * @param RequestInterface $request * @param MessageInterface $response */ public function buzzSendMock($request, $response) { $response->setContent($this->buzzResponse); $response->addHeader('HTTP/1.1 ' . $this->buzzResponseHttpCode . ' Some text'); $response->addHeader('Content-Type: ' . $this->buzzResponseContentType); }