mirror of
https://github.com/arc53/DocsGPT.git
synced 2026-04-28 21:10:27 +00:00
(feat:storage) is dir fnc
This commit is contained in:
@@ -93,3 +93,16 @@ class BaseStorage(ABC):
|
|||||||
List[str]: List of file paths
|
List[str]: List of file paths
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def is_directory(self, path: str) -> bool:
|
||||||
|
"""
|
||||||
|
Check if a path is a directory.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path: Path to check
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if the path is a directory
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|||||||
@@ -101,3 +101,16 @@ class LocalStorage(BaseStorage):
|
|||||||
raise FileNotFoundError(f"File not found: {full_path}")
|
raise FileNotFoundError(f"File not found: {full_path}")
|
||||||
|
|
||||||
return processor_func(local_path=full_path, **kwargs)
|
return processor_func(local_path=full_path, **kwargs)
|
||||||
|
|
||||||
|
def is_directory(self, path: str) -> bool:
|
||||||
|
"""
|
||||||
|
Check if a path is a directory in local storage.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path: Path to check
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if the path is a directory, False otherwise
|
||||||
|
"""
|
||||||
|
full_path = self._get_full_path(path)
|
||||||
|
return os.path.isdir(full_path)
|
||||||
|
|||||||
@@ -130,3 +130,28 @@ class S3Storage(BaseStorage):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error processing S3 file {path}: {e}", exc_info=True)
|
logging.error(f"Error processing S3 file {path}: {e}", exc_info=True)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
def is_directory(self, path: str) -> bool:
|
||||||
|
"""
|
||||||
|
Check if a path is a directory in S3 storage.
|
||||||
|
|
||||||
|
In S3, directories are virtual concepts. A path is considered a directory
|
||||||
|
if there are objects with the path as a prefix.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
path: Path to check
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if the path is a directory, False otherwise
|
||||||
|
"""
|
||||||
|
# Ensure path ends with a slash if not empty
|
||||||
|
if path and not path.endswith('/'):
|
||||||
|
path += '/'
|
||||||
|
|
||||||
|
response = self.s3.list_objects_v2(
|
||||||
|
Bucket=self.bucket_name,
|
||||||
|
Prefix=path,
|
||||||
|
MaxKeys=1
|
||||||
|
)
|
||||||
|
|
||||||
|
return 'Contents' in response
|
||||||
|
|||||||
Reference in New Issue
Block a user