Backup-bdg's picture
Upload 964 files
51ff9e5 verified
raw
history blame
1.58 kB
import os
import httpx
from openhands.storage.files import FileStore
from openhands.storage.google_cloud import GoogleCloudFileStore
from openhands.storage.local import LocalFileStore
from openhands.storage.memory import InMemoryFileStore
from openhands.storage.s3 import S3FileStore
from openhands.storage.web_hook import WebHookFileStore
def get_file_store(
file_store_type: str,
file_store_path: str | None = None,
file_store_web_hook_url: str | None = None,
file_store_web_hook_headers: dict | None = None,
) -> FileStore:
store: FileStore
if file_store_type == 'local':
if file_store_path is None:
raise ValueError('file_store_path is required for local file store')
store = LocalFileStore(file_store_path)
elif file_store_type == 's3':
store = S3FileStore(file_store_path)
elif file_store_type == 'google_cloud':
store = GoogleCloudFileStore(file_store_path)
else:
store = InMemoryFileStore()
if file_store_web_hook_url:
if file_store_web_hook_headers is None:
# Fallback to default headers. Use the session api key if it is defined in the env.
file_store_web_hook_headers = {}
if os.getenv('SESSION_API_KEY'):
file_store_web_hook_headers['X-Session-API-Key'] = os.getenv(
'SESSION_API_KEY'
)
store = WebHookFileStore(
store,
file_store_web_hook_url,
httpx.Client(headers=file_store_web_hook_headers or {}),
)
return store