from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from core.essentials.observers.ConnectionObserver import ConnectionObserver from core.observers.TicketObserver import TicketObserver from core.Constants import Constants from core.observers.BaseObserver import BaseObserver from core.services.networking.get_data_from_server import get_data_from_server from core.errors.logger import logger def sync_ticket_prices( ticket_observer: TicketObserver, connection_observer: ConnectionObserver ) -> dict: notification = f"Connecting to get Ticket Pricing..." ticket_observer.notify("connecting", subject=notification) rejected_list = [None, False, ""] base_url = Constants.TICKET_API_BASE_URL if base_url in rejected_list: notification = "Base URL is Empty, so it can't fetch prices.." ticket_observer.notify("failed_input", subject=notification) return {"valid": False, "error_code": "invalid_url"} url = f"{base_url}/sync" try: sync_results = get_data_from_server(url, connection_observer) if sync_results in rejected_list: return {"valid": False, "error_code": "sync_failed"} logger.debug(f"Inside the sync controller, sync_results is: {sync_results}") except: return {"valid": False, "error_code": "sync_failed"} return sync_results