Пример #1
0
 /**
  * Determine if the the passed url is external to the current running platform
  *
  * @param RokUpdater_Uri $uri
  *
  * @return mixed
  */
 public function isExternal($uri)
 {
     if (is_string($uri)) {
         $uri = new RokUpdater_Uri($uri);
     }
     if (@file_exists($uri->getComponents(RokUpdater_Uri_Components::PATH, RokUpdater_Uri_Builder::FORMAT_RAW))) {
         return false;
     }
     //if the url does not have a scheme must be internal
     if (is_null($uri->getHost())) {
         return false;
     }
     if ($uri->getHost() == $this->site_uri->getHost()) {
         if ($uri->getPort() === RokUpdater_Uri::PORT_UNDEFINED) {
             return false;
         }
         if ($uri->getPort() === $this->site_uri->getPort()) {
             return false;
         }
     }
     // if its a vfs url its a unit test and local
     if ($uri->getScheme() == 'vfs') {
         return false;
     }
     //the url has a host and it isn't internal
     return true;
 }
Пример #2
0
 /**
  * wrapper to send a request to the server and return a string with the response body.
  *
  * @param   RokUpdater_Uri $uri        The URI to the resource to request.
  * @param   string         $data       Either an associative array or a string to be sent with the request.
  * @param   array          $headers    An array of request headers to send with the request.
  * @param   integer        $timeout    Read timeout in seconds.
  * @param   string         $userAgent  The optional user agent string to send with the request.
  *
  * @throws ProtocolBuffers_Exception
  * @throws Exception
  * @return string
  */
 public function request(RokUpdater_Uri $uri, $data = null, array $headers = array(), $timeout = null, $userAgent = null)
 {
     JLog::add(sprintf('%s request called for %s', get_class($this), $uri->getAbsoluteUri()), JLog::DEBUG, 'rokupdater');
     JLog::add(sprintf('%s request data passed %s', get_class($this), $data), JLog::DEBUG, 'rokupdater');
     if ($uri->getScheme() == self::HTTPS_SCHEME && !$this->isSSLSupported() && array_key_exists('http_fallback', $this->options)) {
         JLog::add(sprintf('%s : SSL is not supported in cURL and fallback is set', get_class($this)), JLog::DEBUG, 'rokupdater');
         if ($this->options['http_fallback']) {
             $uri->setScheme(self::HTTP_SCHEME);
             if ((int) $uri->getPort() == self::HTTPS_PORT) {
                 $uri->setPort(self::HTTP_PORT);
             }
         } else {
             JLog::add('SSL is not supported in cURL and fallback not set', JLog::INFO, 'rokupdater');
             throw new ProtocolBuffers_Exception(sprintf('%s Transport implmentation does not support SSL', get_class($this)), ProtocolBuffers_TransportFactory::PROTOCOL_BUFFERS_ERROR_SSL_STREAM_NOT_REGISTERED);
         }
     }
     JLog::add(sprintf('%s sending request to %s', get_class($this), $uri->getAbsoluteUri()), JLog::INFO, 'rokupdater');
     return $this->transportRequest($uri, $data, $headers, $timeout, $userAgent);
 }
Пример #3
0
 /**
  * @param  RokUpdater_Uri   $uri
  * @param  array $components
  * @param  bool  $esc
  *
  * @return string
  */
 private static function getAbsoluteComponents(RokUpdater_Uri $uri, $components, $esc)
 {
     $result = '';
     if ($components & RokUpdater_Uri_Components::SCHEME) {
         $cmp = $uri->getScheme();
         if (!empty($cmp)) {
             $result .= "{$cmp}:";
         }
     }
     // AUTHORITY_START:
     if ($components & RokUpdater_Uri_Components::AUTHORITY_START) {
         $result .= "//";
     }
     //USER_INFO:
     if ($components & RokUpdater_Uri_Components::USERINFO) {
         $cmp = $uri->getUserInfo();
         if (!empty($cmp)) {
             if ($esc && strpos($cmp, ':') !== false) {
                 $parts = explode(':', $cmp, 2);
                 $result .= rawurlencode($parts[0]) . ':' . rawurlencode($parts[1]);
             } else {
                 if ($esc) {
                     $result .= rawurlencode($cmp);
                 } else {
                     $result .= $cmp;
                 }
             }
             $result .= '@';
         }
     }
     //HOST:
     if ($components & RokUpdater_Uri_Components::HOST) {
         $cmp = $uri->getHost();
         if (!empty($cmp)) {
             $result .= $cmp;
         }
     }
     //PORT:
     if ($components & RokUpdater_Uri_Components::STRONG_PORT || $components & RokUpdater_Uri_Components::PORT) {
         $cmp = $uri->getPort();
         if (!($cmp === -1 || $components & RokUpdater_Uri_Components::PORT && $uri->isDefaultPort())) {
             $result .= ":{$cmp}";
         }
     }
     return $result;
 }