File size: 1,204 Bytes
197512a
ec47532
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197512a
 
 
 
ec47532
197512a
ec47532
 
 
 
 
 
 
 
197512a
 
ec47532
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from datetime import datetime, timezone, timedelta


class MeetingUtils:
    def __init__(self):
        pass

    async def __aenter__(self):
        return self

    async def __aexit__(self, *args):
        pass

    async def get_millis_utc(self, dt: datetime):
        return int(dt.replace(tzinfo=timezone.utc).timestamp() * 1000)

    async def millis_to_datetime(self, millis, offset=0):
        dt_utc = datetime.fromtimestamp(millis / 1000, tz=timezone.utc)
        dt_offset = dt_utc + timedelta(hours=offset)  # Apply timezone offset
        return dt_offset.strftime("%Y-%m-%d %H:%M:%S")

    async def check_availability(self, response, duration_ms, offset=0):
        availabilities = (
            response["linkAvailability"]["linkAvailabilityByDuration"]
            .get(str(duration_ms), {})
            .get("availabilities", [])
        )
        available_slots = []

        for slot in availabilities:
            start_time = await self.millis_to_datetime(slot["startMillisUtc"], offset)
            end_time = await self.millis_to_datetime(slot["endMillisUtc"], offset)
            available_slots.append({"start": start_time, "end": end_time})

        return available_slots