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)
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))})
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}'})
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)