def parse_url(self, url): """ parse url and get host/port""" self.uri = urlparse.urlparse(url) if self.uri.scheme not in ('http', 'https'): raise InvalidUrl("None valid url") host, port = util.parse_netloc(self.uri) self.host = host self.port = port
def on_connect(self, req): proxy_auth = _get_proxy_auth() if req.uri.scheme == "https": proxy = os.environ.get('https_proxy') if proxy: if proxy_auth: proxy_auth = 'Proxy-authorization: %s' % proxy_auth proxy_connect = 'CONNECT %s HTTP/1.0\r\n' % (req.uri.netloc) user_agent = "User-Agent: restkit/%s\r\n" % __version__ proxy_pieces = '%s%s%s\r\n' % (proxy_connect, proxy_auth, user_agent) proxy_uri = urlparse.urlparse(proxy) proxy_host, proxy_port = util.parse_netloc(proxy_uri) if req.pool is not None: s = req.pool.get((proxy_host, proxy_port)) if s: self._sock = s req.host = proxy_host req.port = proxy_port return # Connect to the proxy server, # very simple recv and error checking p_sock = sock.connect((proxy_host, int(proxy_port))) sock.send(p_sock, proxy_pieces) # wait header parser = http.ResponseParser(p_sock) resp = parser.next() if resp.status_int != 200: raise ProxyError('Error status=%s' % resp.status) sock._ssl_wrap_socket(p_sock, None, None) # update socket req._sock = p_sock req.host = proxy_host req.port = proxy_port else: proxy = os.environ.get('http_proxy') if proxy: proxy_uri = urlparse.urlparse(proxy) proxy_host, proxy_port = self._host_port(proxy_uri) if proxy_auth: req.headers.append( ('Proxy-Authorization', proxy_auth.strip())) req.host = proxy_host req.port = proxy_port
def on_connect(self, req): proxy_auth = _get_proxy_auth() if req.uri.scheme == "https": proxy = os.environ.get('https_proxy') if proxy: if proxy_auth: proxy_auth = 'Proxy-authorization: %s' % proxy_auth proxy_connect = 'CONNECT %s HTTP/1.0\r\n' % (req.uri.netloc) user_agent = "User-Agent: restkit/%s\r\n" % __version__ proxy_pieces = '%s%s%s\r\n' % (proxy_connect, proxy_auth, user_agent) proxy_uri = urlparse.urlparse(proxy) proxy_host, proxy_port = util.parse_netloc(proxy_uri) if req.pool is not None: s = req.pool.get((proxy_host, proxy_port)) if s: self._sock = s req.host = proxy_host req.port = proxy_port return # Connect to the proxy server, # very simple recv and error checking p_sock = sock.connect((proxy_host, int(proxy_port))) sock.send(p_sock, proxy_pieces) # wait header parser = http.ResponseParser(p_sock) resp = parser.next() if resp.status_int != 200: raise ProxyError('Error status=%s' % resp.status) sock._ssl_wrap_socket(p_sock, None, None) # update socket req._sock = p_sock req.host = proxy_host req.port = proxy_port else: proxy = os.environ.get('http_proxy') if proxy: proxy_uri = urlparse.urlparse(proxy) proxy_host, proxy_port = self._host_port(proxy_uri) if proxy_auth: req.headers.append(('Proxy-Authorization', proxy_auth.strip())) req.host = proxy_host req.port = proxy_port