File: connection.py

package info (click to toggle)
python-asusrouter 1.21.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,856 kB
  • sloc: python: 20,497; makefile: 3
file content (78 lines) | stat: -rw-r--r-- 1,730 bytes parent folder | download
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
"""Connection module."""

from enum import Enum, IntEnum

from asusrouter.modules.wlan import Wlan
from asusrouter.tools.converters import get_enum_key_by_value, safe_int


class ConnectionState(IntEnum):
    """Connection state enum."""

    UNKNOWN = -999

    DISCONNECTED = 0
    CONNECTED = 1


class ConnectionStatus(IntEnum):
    """Connection status enum."""

    UNKNOWN = -999

    ERROR = -1
    DISCONNECTED = 0
    CONNECTING = 1
    CONNECTED = 2


class ConnectionType(str, Enum):
    """Connection type class."""

    WIRED = "wired"
    WLAN_2G = Wlan.FREQ_2G.value
    WLAN_5G = Wlan.FREQ_5G.value
    WLAN_5G2 = Wlan.FREQ_5G2.value
    WLAN_6G = Wlan.FREQ_6G.value
    DISCONNECTED = "disconnected"


CONNECTION_TYPE = {
    0: ConnectionType.WIRED,
    1: ConnectionType.WLAN_2G,
    2: ConnectionType.WLAN_5G,
    3: ConnectionType.WLAN_5G2,
    4: ConnectionType.WLAN_6G,
}


class InternetMode(str, Enum):
    """Internet mode class."""

    ALLOW = "allow"
    BLOCK = "block"
    TIME = "time"
    UNKNOWN = "unknown"


def get_internet_mode(value: str) -> InternetMode:
    """Get internet mode."""

    return get_enum_key_by_value(InternetMode, value, InternetMode.UNKNOWN)


def get_connection_type(value: int | None) -> ConnectionType:
    """Get connection type."""

    # Check that it's actually an int
    # This would actually work with float as well doing direct conversion
    value = safe_int(value)

    # ------------------------------------------------------ #
    # I am officially considering this a feature, not a bug. #
    # ------------------------------------------------------ #

    if value is None:
        value = 0

    return CONNECTION_TYPE.get(value, ConnectionType.WIRED)