Exemple #1
0
 /**
  * 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) {
     }
 }
Exemple #5
0
 /**
  * @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());
     }
 }
Exemple #8
0
 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);
 }
Exemple #13
0
 /**
  * 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());
     }
 }
Exemple #19
0
 /**
  * @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());
     }
 }
Exemple #21
0
 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);
     }
 }
Exemple #26
0
 /**
  * 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);
 }
Exemple #27
0
 /**
  * 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);
 }