Skip to main content
Glama
Michaelzag
by Michaelzag
service_factory.py1.98 kB
#!/usr/bin/env python3 """ Service factory for dependency injection """ from typing import Optional from migadu_mcp.client.migadu_client import MigaduClient from migadu_mcp.config import get_config from migadu_mcp.services.mailbox_service import MailboxService from migadu_mcp.services.identity_service import IdentityService from migadu_mcp.services.alias_service import AliasService from migadu_mcp.services.rewrite_service import RewriteService class ServiceFactory: """Factory for creating service instances with dependency injection""" def __init__(self): self._client: Optional[MigaduClient] = None def _get_client(self) -> MigaduClient: """Get or create Migadu client""" if self._client is None: config = get_config() # Config validation ensures these are not None if config.email is None: raise ValueError("Email must be configured") if config.api_key is None: raise ValueError("API key must be configured") self._client = MigaduClient(config.email, config.api_key) return self._client def mailbox_service(self) -> MailboxService: """Create mailbox service instance""" return MailboxService(self._get_client()) def identity_service(self) -> IdentityService: """Create identity service instance""" return IdentityService(self._get_client()) def alias_service(self) -> AliasService: """Create alias service instance""" return AliasService(self._get_client()) def rewrite_service(self) -> RewriteService: """Create rewrite service instance""" return RewriteService(self._get_client()) # Global factory instance _factory: Optional[ServiceFactory] = None def get_service_factory() -> ServiceFactory: """Get global service factory instance""" global _factory if _factory is None: _factory = ServiceFactory() return _factory

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Michaelzag/migadu-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server