예제 #1
0
 def test_source_archive(self):
     s = Stoq(base_dir=utils.get_data_dir(), source_archivers=['simple_archiver'])
     simple_archiver = s.load_plugin('simple_archiver')
     simple_archiver.PAYLOAD = b'This is a payload'
     task = ArchiverResponse(results={'path': '/tmp/123'})
     payload = simple_archiver.get(task)
     self.assertEqual('/tmp/123', payload.payload_meta.extra_data['path'])
     self.assertEqual(payload.content, simple_archiver.PAYLOAD)
예제 #2
0
    async def archive(self, payload: Payload, request: Request) -> ArchiverResponse:
        """
        Archive payload to disk

        """
        path = Path(self.archive_dir).resolve()
        filename = payload.results.payload_id
        if self.use_sha:
            filename = hashlib.sha1(payload.content).hexdigest()
            path = path.joinpath("/".join(list(filename[:5])))
        elif self.date_mode:
            now = datetime.now().strftime(self.date_format)
            path = path.joinpath(now)
        path.mkdir(parents=True, exist_ok=True)
        try:
            with open(path.joinpath(filename), 'xb') as outfile:
                outfile.write(payload.content)
        except FileExistsError:
            pass
        return ArchiverResponse({'path': str(path.joinpath(filename))})
예제 #3
0
    def archive(self, payload: Payload,
                request_meta: RequestMeta) -> ArchiverResponse:
        """
        Archive payload to disk

        """
        path = self.archive_dir
        filename = payload.payload_id
        if self.use_sha:
            filename = hashlib.sha1(payload.content).hexdigest()
            path = f'{path}/{"/".join(list(filename[:5]))}'
        elif self.date_mode:
            now = datetime.now().strftime(self.date_format)
            path = f'{path}/{now}'
        path = os.path.abspath(path)
        Path(path).mkdir(parents=True, exist_ok=True)
        try:
            with open(f'{path}/{filename}', 'xb') as outfile:
                outfile.write(payload.content)
        except FileExistsError:
            pass
        return ArchiverResponse({'path': f'{path}/{filename}'})
예제 #4
0
 def test_archiverresponse_to_str(self):
     response = ArchiverResponse()
     response_str = str(response)
     response_dict = json.loads(response_str)
     self.assertIsInstance(response_str, str)
     self.assertIsInstance(response_dict, dict)