protected function installAddon($addon, $version) { $addon = lcfirst($addon); $url = "{$this->repo}/addons/{$addon}/{$version}"; try { $client = new Sabel_Http_Client($url); $this->_installAddon($addon, $client->request()->getContent()); } catch (Exception $e) { $this->warning($e->getMessage()); } }
/** * Send request to the proxy server * * @param string $method * @param Zend_Uri_Http $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 = '') { // If no proxy is set, fall back to default Socket adapter if (!$this->config["proxy_host"]) { return parent::write($method, $uri, $http_ver, $headers, $body); } // Make sure we're properly connected if (!$this->socket) { $message = __METHOD__ . "() Trying to write but we are not connected."; throw new Sabel_Exception_Runtime($message); } $host = $this->config["proxy_host"]; $port = $this->config["proxy_port"]; if ($this->connected_to[0] != "tcp://{$host}" || $this->connected_to[1] != $port) { $message = __METHOD__ . "() Trying to write but we are connected to the wrong proxy server."; throw new Sabel_Exception_Runtime($message); } // Add Proxy-Authorization header if ($this->config["proxy_user"] && !isset($headers["proxy-authorization"])) { $headers["proxy-authorization"] = Sabel_Http_Client::encodeAuthHeader($this->config["proxy_user"], $this->config["proxy_pass"], $this->config["proxy_auth"]); } // if we are proxying HTTPS, preform CONNECT handshake with the proxy if ($uri->scheme === "https" && !$this->negotiated) { $this->connectHandshake($uri->host, $uri->port, $http_ver, $headers); $this->negotiated = true; } // Save request method for later $this->method = $method; // Build request headers if ($this->negotiated) { $path = $uri->path; if ($uri->query) { $path .= "?" . $uri->getQuery(); } $request = "{$method} {$path} HTTP/{$http_ver}\r\n"; } else { $request = "{$method} {$uri} HTTP/{$http_ver}\r\n"; } // Add all headers to the request string foreach ($headers as $k => $v) { if (is_string($k)) { $v = "{$k}: {$v}"; } $request .= "{$v}\r\n"; } // Add the request body $request .= "\r\n" . $body; // Send the request if (!@fwrite($this->socket, $request)) { $message = __METHOD__ . "() Error writing request to proxy server."; throw new Sabel_Exception_Runtime($message); } return $request; }