Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 protected function sendInternalRequest(InternalRequestInterface $internalRequest)
 {
     $request = new Request();
     foreach ($this->prepareHeaders($internalRequest) as $name => $value) {
         $request->header($name, $value);
     }
     $request->method($internalRequest->getMethod());
     $request->body($this->prepareBody($internalRequest));
     $request->url($uri = (string) $internalRequest->getUri());
     $request->version($this->getConfiguration()->getProtocolVersion());
     try {
         $response = $this->client->send($request, array('timeout' => $this->getConfiguration()->getTimeout(), 'redirect' => false));
     } catch (\Exception $e) {
         throw HttpAdapterException::cannotFetchUri($uri, $this->getName(), $e->getMessage());
     }
     return $this->getConfiguration()->getMessageFactory()->createResponse((int) $response->statusCode(), $response->version(), $response->headers(), $response->body());
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function sendRequest(RequestInterface $request)
 {
     $cakeRequest = new Request();
     $cakeRequest->method($request->getMethod());
     $cakeRequest->url((string) $request->getUri());
     $cakeRequest->version($request->getProtocolVersion());
     $cakeRequest->body($request->getBody()->getContents());
     foreach ($request->getHeaders() as $header => $values) {
         $cakeRequest->header($header, $request->getHeaderLine($header));
     }
     if (null === $cakeRequest->header('Content-Type')) {
         $cakeRequest->header('Content-Type', 'application/x-www-form-urlencoded');
     }
     try {
         $cakeResponse = $this->client->send($cakeRequest, $this->client->config());
     } catch (Exception $exception) {
         throw new NetworkException('Failed to send request', $request, $exception);
     }
     return $this->responseFactory->createResponse($cakeResponse->statusCode(), null, $cakeResponse->headers(), $cakeResponse->body(), $cakeResponse->version());
 }
Ejemplo n.º 3
0
 /**
  * Generate the header Authorization
  *
  * @param \Cake\Network\Http\Request $request The request object.
  * @param array $credentials Authentication credentials.
  * @return string
  */
 protected function _generateHeader(Request $request, $credentials)
 {
     $path = parse_url($request->url(), PHP_URL_PATH);
     $a1 = md5($credentials['username'] . ':' . $credentials['realm'] . ':' . $credentials['password']);
     $a2 = md5($request->method() . ':' . $path);
     if (empty($credentials['qop'])) {
         $response = md5($a1 . ':' . $credentials['nonce'] . ':' . $a2);
     } else {
         $credentials['cnonce'] = uniqid();
         $nc = sprintf('%08x', $credentials['nc']++);
         $response = md5($a1 . ':' . $credentials['nonce'] . ':' . $nc . ':' . $credentials['cnonce'] . ':auth:' . $a2);
     }
     $authHeader = 'Digest ';
     $authHeader .= 'username="******"'], ['\\\\', '\\"'], $credentials['username']) . '", ';
     $authHeader .= 'realm="' . $credentials['realm'] . '", ';
     $authHeader .= 'nonce="' . $credentials['nonce'] . '", ';
     $authHeader .= 'uri="' . $path . '", ';
     $authHeader .= 'response="' . $response . '"';
     if (!empty($credentials['opaque'])) {
         $authHeader .= ', opaque="' . $credentials['opaque'] . '"';
     }
     if (!empty($credentials['qop'])) {
         $authHeader .= ', qop="auth", nc=' . $nc . ', cnonce="' . $credentials['cnonce'] . '"';
     }
     return $authHeader;
 }
Ejemplo n.º 4
0
 /**
  * Build miscellaneous options for the request.
  *
  * @param \Cake\Network\Http\Request $request The request being sent.
  * @param array $options Array of options to use.
  * @return void
  */
 protected function _buildOptions(Request $request, $options)
 {
     $this->_contextOptions['method'] = $request->method();
     $this->_contextOptions['protocol_version'] = $request->version();
     $this->_contextOptions['ignore_errors'] = true;
     if (isset($options['timeout'])) {
         $this->_contextOptions['timeout'] = $options['timeout'];
     }
     if (isset($options['redirect'])) {
         $this->_contextOptions['max_redirects'] = (int) $options['redirect'];
     }
 }
Ejemplo n.º 5
0
 /**
  * Creates a new request object based on the parameters.
  *
  * @param string $method HTTP method name.
  * @param string $url The url including query string.
  * @param mixed $data The request body.
  * @param array $options The options to use. Contains auth, proxy etc.
  * @return \Cake\Network\Http\Request
  */
 protected function _createRequest($method, $url, $data, $options)
 {
     $request = new Request();
     $request->method($method)->url($url)->body($data);
     if (isset($options['type'])) {
         $request->header($this->_typeHeaders($options['type']));
     }
     if (isset($options['headers'])) {
         $request->header($options['headers']);
     }
     $request->cookie($this->_cookies->get($url));
     if (isset($options['cookies'])) {
         $request->cookie($options['cookies']);
     }
     if (isset($options['auth'])) {
         $this->_addAuthentication($request, $options);
     }
     if (isset($options['proxy'])) {
         $this->_addProxy($request, $options);
     }
     return $request;
 }
Ejemplo n.º 6
0
    /**
     * Generate the Oauth basestring
     *
     * - Querystring, request data and oauth_* parameters are combined.
     * - Values are sorted by name and then value.
     * - Request values are concatenated and urlencoded.
     * - The request URL (without querystring) is normalized.
     * - The HTTP method, URL and request parameters are concatenated and returned.
     *
     * @param \Cake\Network\Http\Request $request The request object.
     * @param array $oauthValues Oauth values.
     * @return string
     */
    public function baseString($request, $oauthValues)
    {
        $parts = [
            $request->method(),
            $this->_normalizedUrl($request->url()),
            $this->_normalizedParams($request, $oauthValues),
        ];
        $parts = array_map([$this, '_encode'], $parts);

        return implode('&', $parts);
    }
Ejemplo n.º 7
0
 /**
  * Creates a new request object based on the parameters.
  *
  * @param string $method HTTP method name.
  * @param string $url The url including query string.
  * @param mixed $data The request body.
  * @param array $options The options to use. Contains auth, proxy etc.
  * @return \Cake\Network\Http\Request
  */
 protected function _createRequest($method, $url, $data, $options)
 {
     $request = new Request();
     $request->method($method)->url($url)->body($data);
     if (isset($options['type'])) {
         $request->header($this->_typeHeaders($options['type']));
     }
     if (isset($options['headers'])) {
         $request->header($options['headers']);
     }
     if (is_string($data) && !$request->header('content-type')) {
         $request->header('Content-Type', 'application/x-www-form-urlencoded');
     }
     $request->cookie($this->_cookies->get($url));
     if (isset($options['cookies'])) {
         $request->cookie($options['cookies']);
     }
     if (isset($options['auth'])) {
         $this->_addAuthentication($request, $options);
     }
     if (isset($options['proxy'])) {
         $this->_addProxy($request, $options);
     }
     return $request;
 }
Ejemplo n.º 8
0
 /**
  * test invalid method.
  *
  * @expectedException \Cake\Core\Exception\Exception
  * @return void
  */
 public function testMethodInvalid()
 {
     $request = new Request();
     $request->method('set on fire');
 }