diff --git a/server/reflector/storage/base.py b/server/reflector/storage/base.py index 7c44ff4d..a457ddf8 100644 --- a/server/reflector/storage/base.py +++ b/server/reflector/storage/base.py @@ -18,14 +18,14 @@ class Storage: cls._registry[name] = kclass @classmethod - def get_instance(cls, name: str, settings_prefix: str = "", folder: str = ""): + def get_instance(cls, name: str, settings_prefix: str = ""): if name not in cls._registry: module_name = f"reflector.storage.storage_{name}" importlib.import_module(module_name) # gather specific configuration for the processor # search `TRANSCRIPT_BACKEND_XXX_YYY`, push to constructor as `backend_xxx_yyy` - config = {"folder": folder} + config = {} name_upper = name.upper() config_prefix = f"{settings_prefix}{name_upper}_" for key, value in settings: @@ -35,10 +35,6 @@ class Storage: return cls._registry[name](**config) - def __init__(self): - self.folder = "" - super().__init__() - async def put_file(self, filename: str, data: bytes) -> FileResult: return await self._put_file(filename, data) @@ -50,3 +46,9 @@ class Storage: async def _delete_file(self, filename: str): raise NotImplementedError + + async def get_file_url(self, filename: str) -> str: + return await self._get_file_url(filename) + + async def _get_file_url(self, filename: str) -> str: + raise NotImplementedError diff --git a/server/reflector/storage/storage_aws.py b/server/reflector/storage/storage_aws.py index 5ab02903..d2313293 100644 --- a/server/reflector/storage/storage_aws.py +++ b/server/reflector/storage/storage_aws.py @@ -22,14 +22,9 @@ class AwsStorage(Storage): super().__init__() self.aws_bucket_name = aws_bucket_name - folder = "" + self.aws_folder = "" if "/" in aws_bucket_name: - self.aws_bucket_name, folder = aws_bucket_name.split("/", 1) - if folder: - if not self.folder: - self.folder = folder - else: - self.folder = f"{self.folder}/{folder}" + self.aws_bucket_name, self.aws_folder = aws_bucket_name.split("/", 1) self.session = aioboto3.Session( aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, @@ -39,7 +34,7 @@ class AwsStorage(Storage): async def _put_file(self, filename: str, data: bytes) -> FileResult: bucket = self.aws_bucket_name - folder = self.folder + folder = self.aws_folder logger.info(f"Uploading {filename} to S3 {bucket}/{folder}") s3filename = f"{folder}/{filename}" if folder else filename async with self.session.client("s3") as client: @@ -49,9 +44,9 @@ class AwsStorage(Storage): Body=data, ) - async def get_file_url(self, filename: str) -> FileResult: + async def _get_file_url(self, filename: str) -> FileResult: bucket = self.aws_bucket_name - folder = self.folder + folder = self.aws_folder s3filename = f"{folder}/{filename}" if folder else filename async with self.session.client("s3") as client: presigned_url = await client.generate_presigned_url( @@ -60,14 +55,11 @@ class AwsStorage(Storage): ExpiresIn=3600, ) - return FileResult( - filename=filename, - url=presigned_url, - ) + return presigned_url async def _delete_file(self, filename: str): bucket = self.aws_bucket_name - folder = self.folder + folder = self.aws_folder logger.info(f"Deleting {filename} from S3 {bucket}/{folder}") s3filename = f"{folder}/{filename}" if folder else filename async with self.session.client("s3") as client: