sp-hydra-veil-core/core/controllers/tickets/TicketSyncController.py

68 lines
2.4 KiB
Python

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.httpx import connect
from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType
from core.services.networking.api_requests.step5_solve_api_problems import solve_api_problems
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:
# api_result = get_data_from_api(url, None, connection_observer)
api_result = connect.single_endpoint(
method="get",
url=url,
observer=connection_observer,
payload=None
)
# 2nd try:
if not api_result.valid:
logger.error(f"Invalid API call result: {api_result.error_type}")
return {"valid": False, "error_code": "sync_failed"}
# if not api_result.valid:
# error_msg = api_result.message
# logger.error(f"[TICKET SYNC Controller] There's an issue with the sync of endpoint {url} the API Reply: {error_msg}")
# api_result = solve_api_problems(
# api_reply_object=api_result,
# get_or_post="get",
# url=url,
# payload=None,
# connection_observer=connection_observer,
# client_observer=None
# )
# # 2nd try:
# if not api_result.valid:
# return {"valid": False, "error_code": "sync_failed"}
return {"valid": True, "data": api_result.data}
except:
return {"valid": False, "error_code": "sync_failed"}