forked from LiveCarta/ContentAutomation
Implemented content upload app with tests and pre-commit hooks
This commit is contained in:
51
src/content_automation/factories.py
Normal file
51
src/content_automation/factories.py
Normal file
@@ -0,0 +1,51 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from content_automation.adapters.social.instagram import InstagramAdapter
|
||||
from content_automation.adapters.social.youtube import YouTubeAdapter
|
||||
from content_automation.adapters.storage.base import StorageAdapterBase
|
||||
from content_automation.adapters.storage.local import LocalFilesystemStorageAdapter
|
||||
from content_automation.adapters.storage.s3 import S3StorageAdapter
|
||||
from content_automation.interfaces import SocialNetworkAdapter
|
||||
from content_automation.settings import AppSettings
|
||||
|
||||
|
||||
def build_storage_adapter(settings: AppSettings) -> StorageAdapterBase:
|
||||
backend = settings.storage.backend.lower()
|
||||
if backend == "local":
|
||||
return LocalFilesystemStorageAdapter(
|
||||
root_directory=settings.storage.local.root_directory
|
||||
)
|
||||
if backend == "s3":
|
||||
return S3StorageAdapter(
|
||||
bucket_name=settings.storage.s3.bucket_name,
|
||||
key_prefix=settings.storage.s3.key_prefix,
|
||||
region_name=settings.storage.s3.region_name,
|
||||
endpoint_url=settings.storage.s3.endpoint_url,
|
||||
public_url_base=settings.storage.s3.public_url_base,
|
||||
url_expiration_seconds=settings.storage.s3.url_expiration_seconds,
|
||||
)
|
||||
raise ValueError(f"Unsupported storage backend: {settings.storage.backend}")
|
||||
|
||||
|
||||
def build_social_adapters(settings: AppSettings) -> dict[str, SocialNetworkAdapter]:
|
||||
return {
|
||||
"instagram": InstagramAdapter(
|
||||
access_token=settings.instagram.access_token,
|
||||
user_id=settings.instagram.user_id,
|
||||
api_version=settings.instagram.api_version,
|
||||
),
|
||||
"youtube": YouTubeAdapter(
|
||||
access_token=settings.youtube.access_token,
|
||||
category_id=settings.youtube.category_id,
|
||||
privacy_status=settings.youtube.privacy_status,
|
||||
use_resumable_upload=settings.youtube.use_resumable_upload,
|
||||
resumable_chunk_size=settings.youtube.resumable_chunk_size,
|
||||
credentials_file_path=settings.youtube.credentials_file_path or None,
|
||||
refresh_token=settings.youtube.refresh_token or None,
|
||||
client_id=settings.youtube.client_id or None,
|
||||
client_secret=settings.youtube.client_secret or None,
|
||||
token_uri=settings.youtube.token_uri,
|
||||
scopes=settings.youtube.scopes,
|
||||
expiry=settings.youtube.expiry or None,
|
||||
),
|
||||
}
|
||||
Reference in New Issue
Block a user