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.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 from core.services.networking.make_url import make_url
@ -185,23 +185,30 @@ def check_if_paid(
url = make_url(which_endpoint) url = make_url(which_endpoint)
# literally send: # 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: 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}" 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}") logger.error(f"[TICKET PayController] 2nd Post Request inside ticketpay controller had a {error_msg}")
return {"valid": False, "message": 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: # return the payload with GUI/CLI to interpret results:
reply_dict = api_reply_object.data reply_dict = api_reply_object.data
logger.debug(f"[TICKET PayController] We have a valid reply from the API inside ticketpay controller of {reply_dict}") logger.debug(f"[TICKET PayController] We have a valid reply from the API inside ticketpay controller of {reply_dict}")

View file

@ -7,7 +7,9 @@ if TYPE_CHECKING:
from core.Constants import Constants from core.Constants import Constants
from core.observers.BaseObserver import BaseObserver 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.ApiResponseModel import ApiResponse, ErrorType
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
@ -32,23 +34,34 @@ def sync_ticket_prices(
url = f"{base_url}/sync" url = f"{base_url}/sync"
try: try:
api_result = get_data_from_api(url, None, connection_observer) # api_result = get_data_from_api(url, None, connection_observer)
api_result = connect.single_endpoint(
if not api_result.valid: method="get",
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, url=url,
payload=None, observer=connection_observer,
connection_observer=connection_observer, payload=None
client_observer=None
) )
# 2nd try: # 2nd try:
if not api_result.valid: if not api_result.valid:
logger.error(f"Invalid API call result: {api_result.error_type}")
return {"valid": False, "error_code": "sync_failed"} 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} return {"valid": True, "data": api_result.data}
except: except:

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.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.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.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.httpx import connect
from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType 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 from essentials.observers.ConnectionObserver import ConnectionObserver
# services # services
from core.services.networking.make_url import make_url 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 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( def get_plan_data(
temp_billing_code: str, connection_observer: ConnectionObserver temp_billing_code: str, connection_observer: ConnectionObserver
) -> dict | ApiResponse: ) -> dict | ApiResponse:
# prep:
which_endpoint = "/plan" which_endpoint = "/plan"
url = make_url(which_endpoint) url = make_url(which_endpoint)
payload = {"temp_billing_code": temp_billing_code} 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 # 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: if connection_type == ConnectionChoice.SYSTEM:
# We have no solutions for clearweb that weren't tried already. # We have no solutions for clearweb that weren't tried already.
# But may add more in the future # But may add more in the future
@ -101,7 +105,7 @@ def single_endpoint(method: str, url: str, observer: ConnectionObserver, payload
payload=payload payload=payload
) )
# nothing we can do here # nothing we can do here, so
else: else:
return initial_result return initial_result

View file

@ -7,7 +7,6 @@ if TYPE_CHECKING:
from core.models.invoice.TicketInvoice import TicketInvoice 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.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.ApiResponseModel import ApiResponse, ErrorType
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

View file

@ -6,7 +6,6 @@ if TYPE_CHECKING:
from typing import Any from typing import Any
# services # services
from core.services.networking.make_url import make_url 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.httpx import connect
from core.services.networking.api_requests.ApiResponseModel import ApiResponse, ErrorType 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 essentials.observers.ConnectionObserver import ConnectionObserver
from core.observers.TicketObserver import TicketObserver from core.observers.TicketObserver import TicketObserver
# services # 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.ApiResponseModel import ApiResponse, ErrorType
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
@ -47,25 +48,33 @@ def send_blind_commitments(
# send it: # send it:
which_endpoint = "sign" which_endpoint = "sign"
url = make_url(which_endpoint) 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(
if not api_reply_object.valid: method="post",
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, url=url,
payload=payload, observer=connection_observer,
connection_observer=connection_observer, payload=payload
client_observer=None
) )
# # did API call work?
if not api_reply_object.valid: if not api_reply_object.valid:
logger.error(f"[SEND BLIND COMMITMENTS] Second Post request failed. {api_reply_object.message}") 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) ticket_observer.notify("error", subject=api_reply_object.message)
return None 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: # assuming it worked, extract the data:
reply = api_reply_object.data reply = api_reply_object.data

View file

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