コード例 #1
0
ファイル: Access.php プロジェクト: stunti/zf2
 /**
  * Cast to HTTP query string
  * 
  * @param  mixed $url 
  * @param  Zend\OAuth\Config $config 
  * @param  null|array $params 
  * @return string
  */
 public function toQueryString($url, Config $config, array $params = null)
 {
     $uri = new URI\URL($url);
     if (!$uri->isValid() || !in_array($uri->getScheme(), array('http', 'https'))) {
         throw new OAuth\Exception('\'' . $url . '\' is not a valid URI');
     }
     $params = $this->_httpUtility->assembleParams($url, $config, $params);
     return $this->_httpUtility->toEncodedQueryString($params);
 }
コード例 #2
0
ファイル: UrlTest.php プロジェクト: alab1001101/zf2
 public function testAllParts()
 {
     $url = new URL('http://*****:*****@www.zend.com:8080/path/to/file?a=1&b=2#top');
     $this->assertEquals('http', $url->getScheme());
     $this->assertEquals('andi', $url->getUsername());
     $this->assertEquals('password', $url->getPassword());
     $this->assertEquals('www.zend.com', $url->getHost());
     $this->assertEquals('8080', $url->getPort());
     $this->assertEquals('/path/to/file', $url->getPath());
     $this->assertEquals('a=1&b=2', $url->getQuery());
     $this->assertEquals('top', $url->getFragment());
     $this->assertTrue($url->isValid());
 }
コード例 #3
0
ファイル: FeedSet.php プロジェクト: bradley-holt/zf2
 /**
  *  Attempt to turn a relative URI into an absolute URI
  */
 protected function _absolutiseUri($link, $uri = null)
 {
     if (!URI\URL::validate($link)) {
         if (!is_null($uri)) {
             $uri = new URI\URL($uri);
             if ($link[0] !== '/') {
                 $link = $uri->getPath() . '/' . $link;
             }
             $link = $uri->getScheme() . '://' . $uri->getHost() . '/' . $this->_canonicalizePath($link);
             if (!URI\Zend\Uri\Uri::check($link)) {
                 $link = null;
             }
         }
     }
     return $link;
 }
コード例 #4
0
ファイル: Socket.php プロジェクト: bradley-holt/zf2
 /**
  * Send request to the remote server
  *
  * @param string        $method
  * @param \Zend\URI\URL $uri
  * @param string        $http_ver
  * @param array         $headers
  * @param string        $body
  * @return string Request as string
  */
 public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
 {
     // Make sure we're properly connected
     if (!$this->socket) {
         throw new Exception('Trying to write but we are not connected');
     }
     $host = $uri->getHost();
     $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
     if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
         throw new Exception('Trying to write but we are connected to the wrong host');
     }
     // Save request method for later
     $this->method = $method;
     // Build request headers
     $path = $uri->getPath();
     if ($uri->getQuery()) {
         $path .= '?' . $uri->getQuery();
     }
     $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
     foreach ($headers as $k => $v) {
         if (is_string($k)) {
             $v = ucfirst($k) . ": {$v}";
         }
         $request .= "{$v}\r\n";
     }
     if (is_resource($body)) {
         $request .= "\r\n";
     } else {
         // Add the request body
         $request .= "\r\n" . $body;
     }
     // Send the request
     if (!@fwrite($this->socket, $request)) {
         throw new Exception('Error writing request to server');
     }
     if (is_resource($body)) {
         if (stream_copy_to_stream($body, $this->socket) == 0) {
             throw new Exception('Error writing request to server');
         }
     }
     return $request;
 }
コード例 #5
0
ファイル: Cookie.php プロジェクト: alab1001101/zf2
 /**
  * Checks whether the cookie should be sent or not in a specific scenario
  *
  * @param string|\Zend\URI\URL $uri URI to check against (secure, domain, path)
  * @param boolean $matchSessionCookies Whether to send session cookies
  * @param int $now Override the current time when checking for expiry time
  * @return boolean
  */
 public function match($uri, $matchSessionCookies = true, $now = null)
 {
     if (is_string($uri)) {
         $uri = new URI\URL($uri);
     }
     // Make sure we have a valid Zend_Uri_Http object
     if (!($uri->isValid() && ($uri->getScheme() == 'http' || $uri->getScheme() == 'https'))) {
         throw new Exception('Passed URI is not a valid HTTP or HTTPS URI');
     }
     // Check that the cookie is secure (if required) and not expired
     if ($this->secure && $uri->getScheme() != 'https') {
         return false;
     }
     if ($this->isExpired($now)) {
         return false;
     }
     if ($this->isSessionCookie() && !$matchSessionCookies) {
         return false;
     }
     // Check if the domain matches
     if (!self::matchCookieDomain($this->getDomain(), $uri->getHost())) {
         return false;
     }
     // Check that path matches using prefix match
     if (!self::matchCookiePath($this->getPath(), $uri->getPath())) {
         return false;
     }
     // If we didn't die until now, return true.
     return true;
 }
コード例 #6
0
ファイル: Test.php プロジェクト: bradley-holt/zf2
 /**
  * Send request to the remote server
  *
  * @param string        $method
  * @param \Zend\URI\URL $uri
  * @param string        $http_ver
  * @param array         $headers
  * @param string        $body
  * @return string Request as string
  */
 public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
 {
     $host = $uri->getHost();
     $host = strtolower($uri->getScheme()) == 'https' ? 'sslv2://' . $host : $host;
     // Build request headers
     $path = $uri->getPath();
     if ($uri->getQuery()) {
         $path .= '?' . $uri->getQuery();
     }
     $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
     foreach ($headers as $k => $v) {
         if (is_string($k)) {
             $v = ucfirst($k) . ": {$v}";
         }
         $request .= "{$v}\r\n";
     }
     // Add the request body
     $request .= "\r\n" . $body;
     // Do nothing - just return the request as string
     return $request;
 }
コード例 #7
0
ファイル: StandardConfig.php プロジェクト: stunti/zf2
 /**
  * Determine if a given URL is valid
  * 
  * @param  string $url 
  * @return void
  * @throws Zend\OAuth\Exception
  */
 protected function _validateUrl($url)
 {
     $uri = new URI\URL($url);
     if (!$uri->isValid()) {
         throw new OAuth\Exception(sprintf("'%s' is not a valid URI", $url));
     } elseif (!in_array($uri->getScheme(), array('http', 'https'))) {
         throw new OAuth\Exception(sprintf("'%s' is not a valid URI", $url));
     }
 }
コード例 #8
0
ファイル: Client.php プロジェクト: bradley-holt/zf2
 /**
  * Prepare the request headers
  *
  * @return array
  */
 protected function _prepareHeaders()
 {
     $headers = array();
     // Set the host header
     if (!isset($this->headers['host'])) {
         $host = $this->uri->getHost();
         // If the port is not default, add it
         if (!($this->uri->getScheme() == 'http' && $this->uri->getPort() == 80 || $this->uri->getScheme() == 'https' && $this->uri->getPort() == 443)) {
             $host .= ':' . $this->uri->getPort();
         }
         $headers[] = "Host: {$host}";
     }
     // Set the connection header
     if (!isset($this->headers['connection'])) {
         if (!$this->config['keepalive']) {
             $headers[] = "Connection: close";
         }
     }
     // Set the Accept-encoding header if not set - depending on whether
     // zlib is available or not.
     if (!isset($this->headers['accept-encoding'])) {
         if (function_exists('gzinflate')) {
             $headers[] = 'Accept-encoding: gzip, deflate';
         } else {
             $headers[] = 'Accept-encoding: identity';
         }
     }
     // Set the Content-Type header
     if ($this->method == self::POST && (!isset($this->headers[strtolower(self::CONTENT_TYPE)]) && isset($this->enctype))) {
         $headers[] = self::CONTENT_TYPE . ': ' . $this->enctype;
     }
     // Set the user agent header
     if (!isset($this->headers['user-agent']) && isset($this->config['useragent'])) {
         $headers[] = "User-Agent: {$this->config['useragent']}";
     }
     // Set HTTP authentication if needed
     if (is_array($this->auth)) {
         $auth = self::encodeAuthHeader($this->auth['user'], $this->auth['password'], $this->auth['type']);
         $headers[] = "Authorization: {$auth}";
     }
     // Load cookies from cookie jar
     if (isset($this->cookiejar)) {
         $cookstr = $this->cookiejar->getMatchingCookies($this->uri, true, HTTP\CookieJar::COOKIE_STRING_CONCAT);
         if ($cookstr) {
             $headers[] = "Cookie: {$cookstr}";
         }
     }
     // Add all other user defined headers
     foreach ($this->headers as $header) {
         list($name, $value) = $header;
         if (is_array($value)) {
             $value = implode(', ', $value);
         }
         $headers[] = "{$name}: {$value}";
     }
     return $headers;
 }