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.api_requests.step1_get_or_post import get_data_from_api from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType 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_api(url, None, connection_observer) if sync_results.valid: return {"valid": True, "data": sync_results.data} else: return {"valid": False, "error_code": "sync_failed"} except: return {"valid": False, "error_code": "sync_failed"}