def request(self, request): url = "{}{}".format(self._base_url, request.path) http_response = self._session.request(request.method, url, headers=self._headers, params=request.params, data=request.body, stream=request.stream) request.headers = http_response.request.headers response = Response(request, request.method, http_response.url, http_response.status_code, http_response.reason, http_response.headers) if request.stream: response.set_line_parser(request.line_parser) response.set_lines(http_response.iter_lines(1)) else: response.set_raw_body(http_response.text) return response
def request(self, request): """ Perform an HTTP request through the context Args: request: A v20.request.Request object Returns: A v20.response.Response object """ url = "{}{}".format(self._base_url, request.path) timeout = self.poll_timeout if request.stream is True: timeout = self.stream_timeout try: http_response = self._session.request( request.method, url, headers=self._headers, params=request.params, data=request.body, stream=request.stream, timeout=timeout ) except requests.exceptions.ConnectionError: raise V20ConnectionError(url) except requests.exceptions.ConnectTimeout: raise V20Timeout(url, "connect") except requests.exceptions.ReadTimeout: raise V20Timeout(url, "read") request.headers = http_response.request.headers response = Response( request, request.method, http_response.url, http_response.status_code, http_response.reason, http_response.headers ) if request.stream: response.set_line_parser( request.line_parser ) response.set_lines( http_response.iter_lines( self.stream_chunk_size ) ) else: response.set_raw_body(http_response.text) return response