Transition ticket prep from old requests-based GET/POST system to the new httpx one

This commit is contained in:
SimplifiedPrivacy 2026-08-06 12:22:57 -04:00
parent 83857a0dcd
commit c4802d3c7d
11 changed files with 119 additions and 72 deletions

View file

@ -16,8 +16,8 @@ from core.errors.exceptions import ServerSideError, NetworkingError
from core.services.prepare_tickets.ticket_tracker import does_ticket_tracker_exist
# from core.services.networking.send_data_to_server import send_data_to_server
from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
# from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
from core.services.networking.httpx import connect
from core.services.networking.make_url import make_url
@ -185,22 +185,29 @@ def check_if_paid(
url = make_url(which_endpoint)
# literally send:
api_reply_object = send_data_to_server(payload, url, connection_observer)
# api_reply_object = send_data_to_server(payload, url, connection_observer)
api_reply_object = connect.single_endpoint(
method="post",
url=url,
observer=connection_observer,
payload=payload
)
if not api_reply_object.valid:
api_reply_object = solve_api_problems(
api_reply_object=api_reply_object,
get_or_post="post",
url=url,
payload=payload,
connection_observer=connection_observer,
client_observer=None
)
if not api_reply_object.valid:
# 2nd try, return the error of why we have no payload:
error_msg = f"Connection/API Error: {api_reply_object.message}"
logger.error(f"[TICKET PayController] 2nd Post Request inside ticketpay controller had a {error_msg}")
return {"valid": False, "message": error_msg}
error_msg = f"Connection/API Error: {api_reply_object.message}"
logger.error(f"[TICKET PayController] 2nd Post Request inside ticketpay controller had a {error_msg}")
return {"valid": False, "message": error_msg}
# if not api_reply_object.valid:
# api_reply_object = solve_api_problems(
# api_reply_object=api_reply_object,
# get_or_post="post",
# url=url,
# payload=payload,
# connection_observer=connection_observer,
# client_observer=None
# )
# return the payload with GUI/CLI to interpret results:
reply_dict = api_reply_object.data

View file

@ -7,7 +7,9 @@ if TYPE_CHECKING:
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.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
@ -32,22 +34,33 @@ def sync_ticket_prices(
url = f"{base_url}/sync"
try:
api_result = get_data_from_api(url, None, connection_observer)
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",
# api_result = get_data_from_api(url, None, connection_observer)
api_result = connect.single_endpoint(
method="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"}
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}

View file

@ -11,7 +11,6 @@ from core.services.prepare_tickets.get_public_key_by_config import get_public_ke
from core.services.prepare_tickets.get_pub_key import key_is_in_valid_format, get_pub_key
from core.services.failed_verification.test_if_new_key_works import test_if_new_key_works
from core.services.networking.make_url import make_url
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

View file

@ -5,8 +5,8 @@ if TYPE_CHECKING:
from essentials.observers.ConnectionObserver import ConnectionObserver
# services
from core.services.networking.make_url import make_url
# from core.services.networking.send_data_to_server import send_data_to_server
from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
# from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
from core.services.networking.httpx import connect
from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType
@ -14,8 +14,19 @@ from core.services.networking.api_requests.ApiResponseModel import ApiResponse,
def get_plan_data(
temp_billing_code: str, connection_observer: ConnectionObserver
) -> dict | ApiResponse:
# prep:
which_endpoint = "/plan"
url = make_url(which_endpoint)
payload = {"temp_billing_code": temp_billing_code}
reply = send_data_to_server(payload, url, connection_observer)
return reply
# legacy:
# reply = send_data_to_server(payload, url, connection_observer)
# send:
return connect.single_endpoint(
method="post",
url=url,
observer=connection_observer,
payload=payload
)

View file

@ -74,6 +74,10 @@ def single_endpoint(method: str, url: str, observer: ConnectionObserver, payload
########################################################
# FROM THIS POINT ON, WE HAVE PROBLEMS
########################################################
# Since it did NOT work, wipe the client,
httpx_client.close_http_session()
if connection_type == ConnectionChoice.SYSTEM:
# We have no solutions for clearweb that weren't tried already.
# But may add more in the future
@ -101,7 +105,7 @@ def single_endpoint(method: str, url: str, observer: ConnectionObserver, payload
payload=payload
)
# nothing we can do here
# nothing we can do here, so
else:
return initial_result

View file

@ -7,7 +7,6 @@ if TYPE_CHECKING:
from core.models.invoice.TicketInvoice import TicketInvoice
from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
# from core.services.networking.send_data_to_server import send_data_to_server
from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType
from core.services.networking.api_requests.step5_solve_api_problems import solve_api_problems

View file

@ -6,7 +6,6 @@ if TYPE_CHECKING:
from typing import Any
# services
from core.services.networking.make_url import make_url
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

View file

@ -5,7 +5,8 @@ if TYPE_CHECKING:
from essentials.observers.ConnectionObserver import ConnectionObserver
from core.observers.TicketObserver import TicketObserver
# services
from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
# from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
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
@ -47,24 +48,32 @@ def send_blind_commitments(
# send it:
which_endpoint = "sign"
url = make_url(which_endpoint)
api_reply_object = send_data_to_server(payload, url, connection_observer)
# api_reply_object = send_data_to_server(payload, url, connection_observer)
# did API call work?
api_reply_object = connect.single_endpoint(
method="post",
url=url,
observer=connection_observer,
payload=payload
)
# # did API call work?
if not api_reply_object.valid:
final_error_msg = f"[SEND BLIND COMMITMENTS] First Post request failed {api_reply_object.message}"
logger.error(final_error_msg)
api_reply_object = solve_api_problems(
api_reply_object=api_reply_object,
get_or_post="post",
url=url,
payload=payload,
connection_observer=connection_observer,
client_observer=None
)
if not api_reply_object.valid:
logger.error(f"[SEND BLIND COMMITMENTS] Second Post request failed. {api_reply_object.message}")
ticket_observer.notify("error", subject=api_reply_object.message)
return None
logger.error(f"[SEND BLIND COMMITMENTS] Second Post request failed. {api_reply_object.error_type} {api_reply_object.message}")
ticket_observer.notify("error", subject=api_reply_object.message)
return None
# if not api_reply_object.valid:
# final_error_msg = f"[SEND BLIND COMMITMENTS] First Post request failed {api_reply_object.message}"
# logger.error(final_error_msg)
# api_reply_object = solve_api_problems(
# api_reply_object=api_reply_object,
# get_or_post="post",
# url=url,
# payload=payload,
# connection_observer=connection_observer,
# client_observer=None
# )
# assuming it worked, extract the data:
reply = api_reply_object.data

View file

@ -1,7 +1,6 @@
# API
from core.services.networking.api_requests.step1_get_or_post import get_data_from_api
from core.services.networking.api_requests.ApiResponseModel import ApiResponse
from core.services.networking.api_requests.step5_solve_api_problems import solve_api_problems
# from core.services.networking.api_requests.step5_solve_api_problems import solve_api_problems
# Database
from core.models.DatabaseOperation import DatabaseOperation, DBErrorType

View file

@ -5,7 +5,6 @@ from core.services.networking.httpx import connect
from core.services.sync.compare_tables import compare_tables
# 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

View file

@ -5,7 +5,8 @@ if TYPE_CHECKING:
from essentials.observers.ConnectionObserver import ConnectionObserver
# services & helpers
from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
# from core.services.networking.api_requests.step1_get_or_post import send_data_to_server
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
@ -50,20 +51,27 @@ def send_unblinded_ticket_to_server(
# send it:
which_endpoint = "validate"
url = make_url(which_endpoint)
api_reply_object = send_data_to_server(payload, url, connection_observer)
# api_reply_object = send_data_to_server(payload, url, connection_observer)
return connect.single_endpoint(
method="post",
url=url,
observer=connection_observer,
payload=payload
)
# This is if the API failed, not if it's not a valid ticket:
if not api_reply_object.valid:
api_reply_object = solve_api_problems(
api_reply_object=api_reply_object,
get_or_post="post",
url=url,
payload=payload,
connection_observer=connection_observer,
client_observer=None
)
# if not api_reply_object.valid:
# api_reply_object = solve_api_problems(
# api_reply_object=api_reply_object,
# get_or_post="post",
# url=url,
# payload=payload,
# connection_observer=connection_observer,
# client_observer=None
# )
return api_reply_object
# return api_reply_object
except Exception as e:
human_readable_error_msg = f"The send_unblinded_ticket_to_server function's try-except block failed for ticket {which_ticket}. Returning False..."