예제 #1
0
파일: http_connector.py 프로젝트: syth3/grr
  def SendStreamingRequest(self, handler_name, args):
    self._InitializeIfNeeded()
    method_descriptor = self.api_methods[handler_name]

    request = self.BuildRequest(method_descriptor.name, args)
    prepped_request = request.prepare()

    session = requests.Session()
    session.trust_env = self.trust_env
    options = session.merge_environment_settings(prepped_request.url,
                                                 self.proxies or {}, None,
                                                 self.verify, self.cert)
    options["stream"] = True
    response = session.send(prepped_request, **options)
    self._CheckResponseStatus(response)

    def GenerateChunks():
      for chunk in response.iter_content(self.DEFAULT_BINARY_CHUNK_SIZE):
        yield chunk

    def Close():
      response.close()
      session.close()

    return utils.BinaryChunkIterator(chunks=GenerateChunks(), on_close=Close)
예제 #2
0
    def SendStreamingRequest(
        self,
        handler_name: str,
        args: message.Message,
    ) -> utils.BinaryChunkIterator:
        self._InitializeIfNeeded()
        method_descriptor = self.api_methods[handler_name]

        request = self.BuildRequest(method_descriptor.name, args)
        prepped_request = request.prepare()

        session = requests.Session()
        session.trust_env = self.trust_env
        options = session.merge_environment_settings(prepped_request.url,
                                                     self.proxies or {}, None,
                                                     self.verify, self.cert)
        options["stream"] = True
        response = session.send(prepped_request, **options)
        self._CheckResponseStatus(response)

        def GenerateChunks() -> Iterator[bytes]:
            with contextlib.closing(session):  # pytype: disable=wrong-arg-types
                with contextlib.closing(response):
                    for chunk in response.iter_content(
                            self.DEFAULT_BINARY_CHUNK_SIZE):
                        yield chunk

        return utils.BinaryChunkIterator(chunks=GenerateChunks())
예제 #3
0
 def SendStreamingRequest(
     self,
     handler_name: str,
     args: message.Message,
 ) -> utils.BinaryChunkIterator:
     binary_stream = self._CallMethod(handler_name, args)
     return utils.BinaryChunkIterator(
         chunks=binary_stream.content_generator)
예제 #4
0
    def SendStreamingRequest(self, handler_name, args):
        self._InitializeIfNeeded()
        method_descriptor = self.api_methods[handler_name]

        request = self.BuildRequest(method_descriptor.name, args)
        prepped_request = request.prepare()

        session = requests.Session()
        response = session.send(prepped_request, stream=True)
        self._CheckResponseStatus(response)

        def GenerateChunks():
            for chunk in response.iter_content(self.DEFAULT_BINARY_CHUNK_SIZE):
                yield chunk

        return utils.BinaryChunkIterator(chunks=GenerateChunks(),
                                         on_close=response.close)
예제 #5
0
 def SendStreamingRequest(self, method_name, args):
     binary_stream = self._CallMethod(method_name, args)
     return utils.BinaryChunkIterator(
         chunks=binary_stream.content_generator)