mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 13:52:43 +08:00
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
import os
|
|
|
|
import httpx
|
|
|
|
from openhands.storage.batched_web_hook import BatchedWebHookFileStore
|
|
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
|
|
from openhands.utils.http_session import httpx_verify_option
|
|
|
|
|
|
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,
|
|
file_store_web_hook_batch: bool = False,
|
|
) -> 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'
|
|
)
|
|
|
|
client = httpx.Client(
|
|
headers=file_store_web_hook_headers or {},
|
|
verify=httpx_verify_option(),
|
|
)
|
|
|
|
if file_store_web_hook_batch:
|
|
# Use batched webhook file store
|
|
store = BatchedWebHookFileStore(
|
|
store,
|
|
file_store_web_hook_url,
|
|
client,
|
|
)
|
|
else:
|
|
# Use regular webhook file store
|
|
store = WebHookFileStore(
|
|
store,
|
|
file_store_web_hook_url,
|
|
client,
|
|
)
|
|
return store
|