Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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