From ccb0fbbe299c7577862e4e99c156900ed809bf58 Mon Sep 17 00:00:00 2001 From: Fernando Zamora Date: Sun, 10 Jul 2022 01:12:11 +0200 Subject: [PATCH] feat: add get open subsessions --- client_test.py | 6 ++++ pyracing/client.py | 18 ++++++++++ pyracing/constants.py | 2 ++ pyracing/response_objects/session_data.py | 40 +++++++++++++++++++++++ 4 files changed, 66 insertions(+) diff --git a/client_test.py b/client_test.py index f5d9023..38516e7 100644 --- a/client_test.py +++ b/client_test.py @@ -221,6 +221,12 @@ async def test_league(self): response = await client.league(724) self.assertIsInstance(response, league_data.League) + @async_test + async def test_open_sessions(self): + response = await client.open_sessions(2826) + for open_session in response: + self.assertIsInstance(open_session, session_data.OpenSubSession) + if __name__ == '__main__': unittest.main() diff --git a/pyracing/client.py b/pyracing/client.py index 0df69ed..557f2c0 100644 --- a/pyracing/client.py +++ b/pyracing/client.py @@ -969,3 +969,21 @@ async def league_seasons(self, league_id): return [league_data.LeagueSeason(x) for x in renamed_items if x] return [] + + async def open_sessions(self, season_id): + """Get the open subsessions in a given season""" + payload = {'season': season_id} + + url = ct.URL_OPEN_SESSIONS + response = await self._build_request(url, payload) + + if response.json(): + mapping = response.json().get('m') + response_items = response.json().get('d') + + if mapping and response_items: + renamed_items = [self._rename_numerical_keys(ri, mapping) for ri in response_items] + + return [session_data.OpenSubSession(x) for x in renamed_items if x] + + return [] diff --git a/pyracing/constants.py b/pyracing/constants.py index 010a801..b15a540 100644 --- a/pyracing/constants.py +++ b/pyracing/constants.py @@ -146,6 +146,8 @@ URL_DRIVER_STATUS = (mSite + '/GetDriverStatus') URL_MEM_DIVISION = (mSite + '/GetMembersDivision') +# OPEN_SESSIONS +URL_OPEN_SESSIONS = (mSite + '/GetOpenSessions') class License(Enum): R = 1 diff --git a/pyracing/response_objects/session_data.py b/pyracing/response_objects/session_data.py index afa5dee..b2e9f60 100644 --- a/pyracing/response_objects/session_data.py +++ b/pyracing/response_objects/session_data.py @@ -283,3 +283,43 @@ def __init__(self, data): self.laps_n_best_num = data['bestnlapsnum'] self.laps_n_best_time = data['bestnlapstime'] self.license_level = data['licenselevel'] + +class OpenSubSession: + def __init__(self, data): + self.allow_entry = data['allowEntry'] + self.cars_left = data['carsLeft'] + self.drivers_connected = data['driversConnected'] + self.drivers_registered = data['driversRegistered'] + self.earth_rotation_speedup = data['earth_rotation_speedup'] + self.farm_id = data['farmid'] + self.fog_density = data['weather_fog_density'] + self.gripcompoundpractice = data['gripcompoundpractice'] + self.gripcompoundqualify = data['gripcompoundqualify'] + self.gripcompoundrace = data['gripcompoundrace'] + self.gripcompoundwarmup = data['gripcompoundwarmup'] + self.humidity = data['weather_rh'] + self.leave_marbles = data['leavemarbles'] + self.ping = data['ping'] + self.pits = parse_encode(data['pits']) + self.pits_in_use = data['pitsInUse'] + self.pits_total = data['pitsTotal'] + self.race_week_num = data['race_week_num'] + self.rubber_practice = data['rubberlevelpractice'] + self.rubber_qualify = data['rubberlevelqualify'] + self.rubber_race = data['rubberlevelrace'] + self.rubber_warmup = data['rubberlevelwarmup'] + self.season_id = data['seasonid'] + self.skies = data['weather_skies'] + self.subsession_id = data['subsessionid'] + self.temp_unit = data['weather_temp_units'] + self.temp_value = data['weather_temp_value'] + self.time_of_day = data['timeOfDay'] + self.time_start = parse_encode(data['time']) + self.time_start_sim = parse_encode(data['simulatedstarttime']) + self.track_id = data['trackid'] + self.weather_type = data['weather_type'] + self.weather_var_intial = data['weather_var_intial'] + self.weather_var_ongoing = data['weather_var_ongoing'] + self.wind_direction = data['weather_wind_dir'] + self.wind_speed_unit = data['weather_wind_speed_units'] + self.wind_speed_value = data['weather_wind_speed_value']