-
Notifications
You must be signed in to change notification settings - Fork 0
/
routes.py
91 lines (82 loc) · 2.9 KB
/
routes.py
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
79
80
81
82
83
84
85
86
87
88
89
90
91
from typing import NamedTuple
from pydantic import BaseModel, TypeAdapter
from ..models import (
ACCompat,
Account,
BurstReporters,
Device,
Diagnostics,
EeroDevice,
ErrorMeta,
Forward,
GuestNetwork,
Networks,
NoDataMeta,
Profile,
Reservation,
Routing,
Speedtest,
Support,
Thread,
Updates,
)
class Resource(NamedTuple):
url: str
model: type[BaseModel] | type[TypeAdapter] | None
GET_RESOURCES: dict[str, Resource] = {
"account": Resource("account", Account),
"ac_compat": Resource("networks/<network_id>/ac_compat", ACCompat),
"device_blacklist": Resource("networks/<network_id>/blacklist", Device),
"devices": Resource("networks/<network_id>/devices", Device),
"diagnostics": Resource("networks/<network_id>/diagnostics", Diagnostics),
"eeros": Resource("networks/<network_id>/eeros", EeroDevice),
"forwards": Resource("networks/<network_id>/forwards", Forward),
"ouicheck": Resource(
"networks/<network_id>/ouicheck",
ErrorMeta, # TODO: Create Model (requires a subscription)
),
"guestnetwork": Resource("networks/<network_id>/guestnetwork", GuestNetwork),
# "password": Resource("networks/<network_id>/password", None),
"profiles": Resource("networks/<network_id>/profiles", Profile),
"reservations": Resource("networks/<network_id>/reservations", Reservation),
# "settings": Resource("networks/<network_id>/settings", None),
"speedtest": Resource("networks/<network_id>/speedtest", Speedtest),
# "transfer": Resource("networks/<network_id>/transfer", None),
"updates": Resource("networks/<network_id>/updates", Updates),
"support": Resource("networks/<network_id>/support", Support),
"insights": Resource(
"networks/<network_id>/insights",
ErrorMeta, # TODO: Create Model (requires a subscription)
),
"routing": Resource("networks/<network_id>/routing", Routing),
"thread": Resource("networks/<network_id>/thread", Thread),
"networks": Resource("networks/<network_id>", Networks),
}
POST_RESOURCES: dict[str, Resource] = {
"burst_reporters": Resource(
"networks/<network_id>/burst_reporters", BurstReporters
),
"reboot": Resource("networks/<network_id>/reboot", None),
"reboot_eero": Resource("eeros/<eero_id>/reboot", None),
"run_speedtest": Resource("networks/<network_id>/speedtest", NoDataMeta),
}
class APITypes:
account: Account
networks: Networks
devices: list[Device]
ac_compat: ACCompat
device_blacklist: list[Device]
diagnostics: Diagnostics
eeros: list[EeroDevice]
forwards: list[Forward]
guestnetwork: GuestNetwork
profiles: list[Profile]
reservations: list[Reservation]
speedtest: list[Speedtest]
updates: Updates
support: Support
routing: Routing
thread: Thread
burst_reporters: BurstReporters
insights: ErrorMeta
ouicheck: ErrorMeta