Skip to content

Commit

Permalink
Expose register_async and send_async
Browse files Browse the repository at this point in the history
  • Loading branch information
PSalant726 committed Oct 31, 2022
1 parent 20fd67c commit c1dea79
Showing 1 changed file with 40 additions and 33 deletions.
73 changes: 40 additions & 33 deletions fideslog/sdk/python/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,53 @@ def register(self, registration: Registration) -> None:
"""

__set_event_loop()
run(self.__send(registration))
run(self.send_async(registration))

async def register_async(self, registration: Registration) -> None:
"""
Asynchronously record a new `Registration`.
"""

await self.send_async(registration)

def send(self, event: AnalyticsEvent) -> None:
"""
Record a new analytics event.
"""

__set_event_loop()
run(self.__send(event))
run(self.send_async(event))

async def send_async(
self,
event_or_registration: Union[AnalyticsEvent, Registration],
) -> None:
"""
Asynchronously record a new `AnalyticsEvent` or `Registration`.
"""

async with ClientSession(
self.server_url,
headers=REQUIRED_HEADERS,
timeout=ClientTimeout(connect=3.05, total=120),
) as session:
try:
async with session.post(
url=(
"/events"
if isinstance(event_or_registration, AnalyticsEvent)
else "/registrations"
),
json=self.__get_request_payload(event_or_registration),
) as resp:
resp.raise_for_status()

except ClientConnectionError as err:
raise UnreachableServerError(err.__str__()) from err
except ClientResponseError as err:
raise AnalyticsSendError(err.message, err.status) from err
except Exception as err:
raise UnknownError(err) from err

def __get_request_payload(
self,
Expand Down Expand Up @@ -153,34 +191,3 @@ def __get_analytics_payload(self, event: AnalyticsEvent) -> Dict:
payload[extra] = event_dict[extra]

return payload

async def __send(
self,
event_or_registration: Union[AnalyticsEvent, Registration],
) -> None:
"""
Asynchronously record a new `AnalyticsEvent` or `Registration`.
"""

async with ClientSession(
self.server_url,
headers=REQUIRED_HEADERS,
timeout=ClientTimeout(connect=3.05, total=120),
) as session:
try:
async with session.post(
url=(
"/events"
if isinstance(event_or_registration, AnalyticsEvent)
else "/registrations"
),
json=self.__get_request_payload(event_or_registration),
) as resp:
resp.raise_for_status()

except ClientConnectionError as err:
raise UnreachableServerError(err.__str__()) from err
except ClientResponseError as err:
raise AnalyticsSendError(err.message, err.status) from err
except Exception as err:
raise UnknownError(err) from err

0 comments on commit c1dea79

Please sign in to comment.