Source code for betty.extension.nginx.config
"""Integrate Betty with `nginx <https://nginx.org/>`_."""
from typing import Self
from betty.config import Configuration
from betty.serde.dump import Dump, VoidableDump, minimize, Void, VoidableDictDump
from betty.serde.load import Asserter, Fields, OptionalField, Assertions
[docs]
class NginxConfiguration(Configuration):
def __init__(
self,
*,
www_directory_path: str | None = None,
https: bool | None = None,
):
super().__init__()
self._https = https
self.www_directory_path = www_directory_path
@property
def https(self) -> bool | None:
return self._https
@https.setter
def https(self, https: bool | None) -> None:
self._https = https
self._dispatch_change()
@property
def www_directory_path(self) -> str | None:
return self._www_directory_path
@www_directory_path.setter
def www_directory_path(self, www_directory_path: str | None) -> None:
self._www_directory_path = www_directory_path
self._dispatch_change()
[docs]
def update(self, other: Self) -> None:
self._https = other._https
self._www_directory_path = other._www_directory_path
self._dispatch_change()
[docs]
@classmethod
def load(
cls,
dump: Dump,
configuration: Self | None = None,
) -> Self:
if configuration is None:
configuration = cls()
asserter = Asserter()
asserter.assert_record(
Fields(
OptionalField(
"https",
Assertions(
asserter.assert_or(
asserter.assert_bool(), asserter.assert_none()
)
)
| asserter.assert_setattr(configuration, "https"),
),
OptionalField(
"www_directory_path",
Assertions(asserter.assert_str())
| asserter.assert_setattr(configuration, "www_directory_path"),
),
)
)(dump)
return configuration
[docs]
def dump(self) -> VoidableDump:
dump: VoidableDictDump[VoidableDump] = {
"https": self.https,
"www_directory_path": (
Void
if self.www_directory_path is None
else str(self.www_directory_path)
),
}
return minimize(dump, True)