from datetime import datetime from handlers.base_handler import BaseHandler from handlers.howoge_handler import HowogeHandler from handlers.gewobag_handler import GewobagHandler from handlers.degewo_handler import DegewoHandler from handlers.gesobau_handler import GesobauHandler from handlers.stadtundland_handler import StadtUndLandHandler from handlers.wbm_handler import WBMHandler class ApplicationHandler: def __init__(self, browser_context): self.context = browser_context self.handlers = { "howoge": HowogeHandler(browser_context), "gewobag": GewobagHandler(browser_context), "degewo": DegewoHandler(browser_context), "gesobau": GesobauHandler(browser_context), "stadtundland": StadtUndLandHandler(browser_context), "wbm": WBMHandler(browser_context), } async def apply(self, listing: dict) -> dict: company = self._detect_company(listing.get("link", "")) handler = self.handlers.get(company) result = { "listing_id": listing.get("id"), "company": company, "link": listing.get("link"), "timestamp": datetime.now().isoformat(), "success": False, "message": "", "address": listing.get("address", ""), "rooms": listing.get("rooms", ""), "price": listing.get("price", "") } if handler: result = await handler.apply(listing, result) else: result["message"] = f"No handler found for company: {company}" return result def _detect_company(self, link: str) -> str: if "howoge.de" in link: return "howoge" elif "gewobag.de" in link: return "gewobag" elif "degewo.de" in link: return "degewo" elif "gesobau.de" in link: return "gesobau" elif "stadtundland.de" in link: return "stadtundland" elif "wbm.de" in link: return "wbm" return "unknown"