예제 #1
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);
 }
예제 #2
0
 /**
  * @param  RokUpdater_Uri $fromUri
  * @param  RokUpdater_Uri $toUri
  * @param      array<RokUpdater_Uri_Components>
  *
  * @return RokUpdater_Uri
  */
 private static function copySpecificComponents(RokUpdater_Uri $fromUri, RokUpdater_Uri $toUri, array $components)
 {
     foreach ($components as $component) {
         switch ($component) {
             case RokUpdater_Uri_Components::SCHEME:
                 $toUri->setScheme($fromUri->getScheme());
                 break;
             case RokUpdater_Uri_Components::USERINFO:
                 $toUri->setUserInfo($fromUri->getUserInfo());
                 break;
             case RokUpdater_Uri_Components::HOST:
                 $toUri->setHost($fromUri->getHost());
                 break;
             case RokUpdater_Uri_Components::PORT:
                 $toUri->setPort($fromUri->getPort());
                 break;
             case RokUpdater_Uri_Components::PATH:
                 $toUri->setPath($fromUri->getPath());
                 break;
             case RokUpdater_Uri_Components::QUERY:
                 $toUri->setQuery($fromUri->getQuery());
                 break;
             case RokUpdater_Uri_Components::FRAGMENT:
                 $toUri->setFragment($fromUri->getFragment());
                 break;
         }
     }
     return $toUri;
 }