Returns NULL If File Doesn't Exist
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
from storage_service.depends.depend_queue import dependency_queue
|
from storage_service.depends.depend_queue import dependency_queue
|
||||||
from storage_service.depends.depend_s3_service import (
|
from storage_service.depends.depend_s3_service import (
|
||||||
dependency_storage_service,
|
dependency_storage_service,
|
||||||
@@ -36,7 +38,7 @@ class StorageController:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@s3_router.get("/file_url/", status_code=200)
|
@s3_router.get("/file_url/", status_code=200)
|
||||||
def file_url(self, username: str, file_postfix: str) -> dict[str, str]:
|
def file_url(self, username: str, file_postfix: str) -> dict[str, str | None]:
|
||||||
return self.storage_service.get_temp_read_link(
|
return self.storage_service.get_temp_read_link(
|
||||||
file_name_hash(username, file_postfix)
|
file_name_hash(username, file_postfix)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class AmazonS3Service(StorageService):
|
|||||||
"file_key": self._get_object_url(file_name),
|
"file_key": self._get_object_url(file_name),
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_temp_read_link(self, file_name) -> dict[str, str | Any]:
|
def get_temp_read_link(self, file_name) -> dict[str, str | None]:
|
||||||
return {"presigned_url": self._get_presigned_read_url(file_name)}
|
return {"presigned_url": self._get_presigned_read_url(file_name)}
|
||||||
|
|
||||||
def process_file(self, file_name: str, file_type: FileType = FileType.PNG) -> None:
|
def process_file(self, file_name: str, file_type: FileType = FileType.PNG) -> None:
|
||||||
@@ -59,12 +59,16 @@ class AmazonS3Service(StorageService):
|
|||||||
ExpiresIn=self.expires_in,
|
ExpiresIn=self.expires_in,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_presigned_read_url(self, file_name) -> str:
|
def _get_presigned_read_url(self, file_name) -> str | None:
|
||||||
|
result = self.s3.list_objects(Bucket=self.bucket_name, Prefix=file_name)
|
||||||
|
|
||||||
|
if file_name in map(lambda x: x["Key"], result["Contents"]):
|
||||||
return self.s3.generate_presigned_url(
|
return self.s3.generate_presigned_url(
|
||||||
"get_object",
|
"get_object",
|
||||||
Params={"Bucket": self.bucket_name, "Key": file_name},
|
Params={"Bucket": self.bucket_name, "Key": file_name},
|
||||||
ExpiresIn=self.expires_in,
|
ExpiresIn=self.expires_in,
|
||||||
)
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
def _get_file_obj(self, file_name: str) -> io.BytesIO:
|
def _get_file_obj(self, file_name: str) -> io.BytesIO:
|
||||||
return io.BytesIO(
|
return io.BytesIO(
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class StorageService(ABC):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_temp_read_link(self, file_name) -> dict[str, str | Any]:
|
def get_temp_read_link(self, file_name) -> dict[str, str | None]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user