Skip to content

Commit 6ec3377

Browse files
committed
Add constructor to ServerConfig for better initialization of fields
1 parent 33f563c commit 6ec3377

2 files changed

Lines changed: 31 additions & 10 deletions

File tree

pyoverkiz/models.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -963,13 +963,34 @@ def __init__(
963963
class ServerConfig:
964964
"""Connection target details for an Overkiz-compatible server."""
965965

966-
server: Server | None = None
966+
server: Server | None
967967
name: str
968968
endpoint: str
969969
manufacturer: str
970-
type: APIType | str
970+
type: APIType
971971
configuration_url: str | None = None
972972

973+
def __init__(
974+
self,
975+
*,
976+
server: Server | str | None = None,
977+
name: str,
978+
endpoint: str,
979+
manufacturer: str,
980+
type: str | APIType,
981+
configuration_url: str | None = None,
982+
**_: Any,
983+
) -> None:
984+
"""Initialize ServerConfig and convert enum fields."""
985+
self.server = (
986+
server if isinstance(server, Server) or server is None else Server(server)
987+
)
988+
self.name = name
989+
self.endpoint = endpoint
990+
self.manufacturer = manufacturer
991+
self.type = type if isinstance(type, APIType) else APIType(type)
992+
self.configuration_url = configuration_url
993+
973994

974995
@define(kw_only=True)
975996
class OptionParameter:

pyoverkiz/utils.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,16 @@ def create_local_server_config(
1414
host: str,
1515
name: str = "Somfy Developer Mode",
1616
manufacturer: str = "Somfy",
17-
type: APIType = APIType.LOCAL,
18-
server: Server | None = Server.SOMFY_DEVELOPER_MODE,
1917
configuration_url: str | None = None,
2018
) -> ServerConfig:
2119
"""Generate server configuration for a local API (Somfy Developer mode)."""
2220
return create_server_config(
2321
name=name,
2422
endpoint=f"https://{host}{LOCAL_API_PATH}",
2523
manufacturer=manufacturer,
26-
server=server,
24+
server=Server.SOMFY_DEVELOPER_MODE,
2725
configuration_url=configuration_url,
28-
type=type,
26+
type=APIType.LOCAL,
2927
)
3028

3129

@@ -34,18 +32,20 @@ def create_server_config(
3432
name: str,
3533
endpoint: str,
3634
manufacturer: str,
37-
server: Server | None = None,
38-
type: APIType = APIType.CLOUD,
35+
server: Server | str | None = None,
36+
type: APIType | str = APIType.CLOUD,
3937
configuration_url: str | None = None,
4038
) -> ServerConfig:
4139
"""Generate server configuration with the provided endpoint and metadata."""
4240
return ServerConfig(
43-
server=server,
41+
server=server
42+
if isinstance(server, Server) or server is None
43+
else Server(server),
4444
name=name,
4545
endpoint=endpoint,
4646
manufacturer=manufacturer,
4747
configuration_url=configuration_url,
48-
type=type,
48+
type=type if isinstance(type, APIType) else APIType(type),
4949
)
5050

5151

0 commit comments

Comments
 (0)