from fediverse_service import FediverseService from misskey_service import MisskeyService from pleroma_service import PleromaService import config class FediverseServiceFactory: """Factory for creating FediverseService implementations based on configuration""" @staticmethod def create_service(instance_type: str = None) -> FediverseService: """ Create a FediverseService implementation based on the instance type. Args: instance_type: The type of instance ("misskey" or "pleroma"). If None, reads from config.INSTANCE_TYPE Returns: FediverseService implementation (MisskeyService or PleromaService) Raises: ValueError: If the instance type is not supported """ if instance_type is None: instance_type = config.INSTANCE_TYPE instance_type = instance_type.lower() if instance_type == "misskey": return MisskeyService() elif instance_type == "pleroma": return PleromaService() else: raise ValueError(f"Unsupported instance type: {instance_type}") def get_fediverse_service(instance_type: str = None) -> FediverseService: """ Convenience function to get a FediverseService instance Args: instance_type: Optional instance type override for testing """ return FediverseServiceFactory.create_service(instance_type)