mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-09 10:16:29 +00:00
Cleanup json / api code with new options (#137)
* Cleanup json / api code with new options * fix lint
This commit is contained in:
parent
99cf44aacd
commit
cd3b382902
6
API.md
6
API.md
@ -222,10 +222,8 @@ Return QR-Code
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"audio": {
|
"audio_input": "0,0",
|
||||||
"input": "0,0",
|
"audio_output": "0,0"
|
||||||
"output": "0,0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -7,7 +7,8 @@ import voluptuous as vol
|
|||||||
from .util import api_process_hostcontrol, api_process, api_validate
|
from .util import api_process_hostcontrol, api_process, api_validate
|
||||||
from ..const import (
|
from ..const import (
|
||||||
ATTR_VERSION, ATTR_LAST_VERSION, ATTR_TYPE, ATTR_HOSTNAME, ATTR_FEATURES,
|
ATTR_VERSION, ATTR_LAST_VERSION, ATTR_TYPE, ATTR_HOSTNAME, ATTR_FEATURES,
|
||||||
ATTR_OS, ATTR_SERIAL, ATTR_INPUT, ATTR_DISK, ATTR_AUDIO, ATTR_OUTPUT)
|
ATTR_OS, ATTR_SERIAL, ATTR_INPUT, ATTR_DISK, ATTR_AUDIO, ATTR_AUDIO_INPUT,
|
||||||
|
ATTR_AUDIO_OUTPUT)
|
||||||
from ..validate import ALSA_CHANNEL
|
from ..validate import ALSA_CHANNEL
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@ -17,10 +18,8 @@ SCHEMA_VERSION = vol.Schema({
|
|||||||
})
|
})
|
||||||
|
|
||||||
SCHEMA_OPTIONS = vol.Schema({
|
SCHEMA_OPTIONS = vol.Schema({
|
||||||
vol.Optional(ATTR_AUDIO): vol.Schema({
|
vol.Optional(ATTR_AUDIO_OUTPUT): ALSA_CHANNEL,
|
||||||
vol.Optional(ATTR_OUTPUT): ALSA_CHANNEL,
|
vol.Optional(ATTR_AUDIO_INPUT): ALSA_CHANNEL,
|
||||||
vol.Optional(ATTR_INPUT): ALSA_CHANNEL,
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -51,11 +50,11 @@ class APIHost(object):
|
|||||||
"""Process host options."""
|
"""Process host options."""
|
||||||
body = await api_validate(SCHEMA_OPTIONS, request)
|
body = await api_validate(SCHEMA_OPTIONS, request)
|
||||||
|
|
||||||
if ATTR_AUDIO in body:
|
if ATTR_AUDIO_OUTPUT in body:
|
||||||
if ATTR_OUTPUT in body[ATTR_AUDIO]:
|
self.config.audio_output = body[ATTR_AUDIO_OUTPUT]
|
||||||
self.config.audio_output = body[ATTR_AUDIO][ATTR_OUTPUT]
|
|
||||||
if ATTR_INPUT in body[ATTR_AUDIO]:
|
if ATTR_AUDIO_INPUT in body:
|
||||||
self.config.audio_input = body[ATTR_AUDIO][ATTR_INPUT]
|
self.config.audio_input = body[ATTR_AUDIO_INPUT]
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -7,8 +7,7 @@ from pathlib import Path, PurePath
|
|||||||
from .const import (
|
from .const import (
|
||||||
FILE_HASSIO_CONFIG, HASSIO_DATA, ATTR_SECURITY, ATTR_SESSIONS,
|
FILE_HASSIO_CONFIG, HASSIO_DATA, ATTR_SECURITY, ATTR_SESSIONS,
|
||||||
ATTR_PASSWORD, ATTR_TOTP, ATTR_TIMEZONE, ATTR_API_ENDPOINT,
|
ATTR_PASSWORD, ATTR_TOTP, ATTR_TIMEZONE, ATTR_API_ENDPOINT,
|
||||||
ATTR_INITIALIZE, ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO, ATTR_INPUT,
|
ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO_INPUT, ATTR_AUDIO_OUTPUT)
|
||||||
ATTR_OUTPUT)
|
|
||||||
from .tools import JsonConfig
|
from .tools import JsonConfig
|
||||||
from .validate import SCHEMA_HASSIO_CONFIG
|
from .validate import SCHEMA_HASSIO_CONFIG
|
||||||
|
|
||||||
@ -168,80 +167,74 @@ class CoreConfig(JsonConfig):
|
|||||||
@property
|
@property
|
||||||
def security_initialize(self):
|
def security_initialize(self):
|
||||||
"""Return is security was initialize."""
|
"""Return is security was initialize."""
|
||||||
return self._data[ATTR_SECURITY][ATTR_INITIALIZE]
|
return self._data[ATTR_SECURITY]
|
||||||
|
|
||||||
@security_initialize.setter
|
@security_initialize.setter
|
||||||
def security_initialize(self, value):
|
def security_initialize(self, value):
|
||||||
"""Set is security initialize."""
|
"""Set is security initialize."""
|
||||||
self._data[ATTR_SECURITY][ATTR_INITIALIZE] = value
|
self._data[ATTR_SECURITY] = value
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def security_totp(self):
|
def security_totp(self):
|
||||||
"""Return the TOTP key."""
|
"""Return the TOTP key."""
|
||||||
return self._data[ATTR_SECURITY].get(ATTR_TOTP)
|
return self._data.get(ATTR_TOTP)
|
||||||
|
|
||||||
@security_totp.setter
|
@security_totp.setter
|
||||||
def security_totp(self, value):
|
def security_totp(self, value):
|
||||||
"""Set the TOTP key."""
|
"""Set the TOTP key."""
|
||||||
self._data[ATTR_SECURITY][ATTR_TOTP] = value
|
self._data[ATTR_TOTP] = value
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def security_password(self):
|
def security_password(self):
|
||||||
"""Return the password key."""
|
"""Return the password key."""
|
||||||
return self._data[ATTR_SECURITY].get(ATTR_PASSWORD)
|
return self._data.get(ATTR_PASSWORD)
|
||||||
|
|
||||||
@security_password.setter
|
@security_password.setter
|
||||||
def security_password(self, value):
|
def security_password(self, value):
|
||||||
"""Set the password key."""
|
"""Set the password key."""
|
||||||
self._data[ATTR_SECURITY][ATTR_PASSWORD] = value
|
self._data[ATTR_PASSWORD] = value
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def security_sessions(self):
|
def security_sessions(self):
|
||||||
"""Return api sessions."""
|
"""Return api sessions."""
|
||||||
if ATTR_SESSIONS not in self._data[ATTR_SECURITY]:
|
|
||||||
return {}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
session: datetime.strptime(until, DATETIME_FORMAT) for
|
session: datetime.strptime(until, DATETIME_FORMAT) for
|
||||||
session, until in self._data[ATTR_SECURITY][ATTR_SESSIONS].items()
|
session, until in self._data[ATTR_SESSIONS].items()
|
||||||
}
|
}
|
||||||
|
|
||||||
def add_security_session(self, session, valid):
|
def add_security_session(self, session, valid):
|
||||||
"""Set the a new session."""
|
"""Set the a new session."""
|
||||||
self._data[ATTR_SECURITY][ATTR_SESSIONS].update(
|
self._data[ATTR_SESSIONS].update(
|
||||||
{session: valid.strftime(DATETIME_FORMAT)}
|
{session: valid.strftime(DATETIME_FORMAT)}
|
||||||
)
|
)
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def drop_security_session(self, session):
|
def drop_security_session(self, session):
|
||||||
"""Delete the a session."""
|
"""Delete the a session."""
|
||||||
if ATTR_SESSIONS not in self._data[ATTR_SECURITY]:
|
self._data[ATTR_SESSIONS].pop(session, None)
|
||||||
return
|
|
||||||
|
|
||||||
self._data[ATTR_SECURITY][ATTR_SESSIONS].pop(session, None)
|
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def audio_output(self):
|
def audio_output(self):
|
||||||
"""Return ALSA audio output card,dev."""
|
"""Return ALSA audio output card,dev."""
|
||||||
return self._data[ATTR_AUDIO].get(ATTR_OUTPUT)
|
return self._data.get(ATTR_AUDIO_OUTPUT)
|
||||||
|
|
||||||
@audio_output.setter
|
@audio_output.setter
|
||||||
def audio_output(self, value):
|
def audio_output(self, value):
|
||||||
"""Set ALSA audio output card,dev."""
|
"""Set ALSA audio output card,dev."""
|
||||||
self._data[ATTR_AUDIO][ATTR_OUTPUT] = value
|
self._data[ATTR_AUDIO_OUTPUT] = value
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def audio_input(self):
|
def audio_input(self):
|
||||||
"""Return ALSA audio input card,dev."""
|
"""Return ALSA audio input card,dev."""
|
||||||
return self._data[ATTR_AUDIO].get(ATTR_INPUT)
|
return self._data.get(ATTR_AUDIO_INPUT)
|
||||||
|
|
||||||
@audio_input.setter
|
@audio_input.setter
|
||||||
def audio_input(self, value):
|
def audio_input(self, value):
|
||||||
"""Set ALSA audio input card,dev."""
|
"""Set ALSA audio input card,dev."""
|
||||||
self._data[ATTR_AUDIO][ATTR_INPUT] = value
|
self._data[ATTR_AUDIO_INPUT] = value
|
||||||
self.save()
|
self.save()
|
||||||
|
@ -103,6 +103,8 @@ ATTR_TIMEOUT = 'timeout'
|
|||||||
ATTR_AUTO_UPDATE = 'auto_update'
|
ATTR_AUTO_UPDATE = 'auto_update'
|
||||||
ATTR_CUSTOM = 'custom'
|
ATTR_CUSTOM = 'custom'
|
||||||
ATTR_AUDIO = 'audio'
|
ATTR_AUDIO = 'audio'
|
||||||
|
ATTR_AUDIO_INPUT = 'audio_input'
|
||||||
|
ATTR_AUDIO_OUTPUT = 'audio_output'
|
||||||
ATTR_INPUT = 'input'
|
ATTR_INPUT = 'input'
|
||||||
ATTR_OUTPUT = 'output'
|
ATTR_OUTPUT = 'output'
|
||||||
ATTR_DISK = 'disk'
|
ATTR_DISK = 'disk'
|
||||||
|
@ -5,9 +5,9 @@ import pytz
|
|||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
ATTR_DEVICES, ATTR_IMAGE, ATTR_LAST_VERSION, ATTR_SESSIONS, ATTR_PASSWORD,
|
ATTR_DEVICES, ATTR_IMAGE, ATTR_LAST_VERSION, ATTR_SESSIONS, ATTR_PASSWORD,
|
||||||
ATTR_TOTP, ATTR_INITIALIZE, ATTR_BETA_CHANNEL, ATTR_TIMEZONE, ATTR_INPUT,
|
ATTR_TOTP, ATTR_SECURITY, ATTR_BETA_CHANNEL, ATTR_TIMEZONE,
|
||||||
ATTR_SECURITY, ATTR_API_ENDPOINT, ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO,
|
ATTR_API_ENDPOINT, ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO_OUTPUT,
|
||||||
ATTR_OUTPUT, ATTR_HOMEASSISTANT, ATTR_HASSIO)
|
ATTR_AUDIO_INPUT, ATTR_HOMEASSISTANT, ATTR_HASSIO)
|
||||||
|
|
||||||
|
|
||||||
NETWORK_PORT = vol.All(vol.Coerce(int), vol.Range(min=1, max=65535))
|
NETWORK_PORT = vol.All(vol.Coerce(int), vol.Range(min=1, max=65535))
|
||||||
@ -75,15 +75,11 @@ SCHEMA_HASSIO_CONFIG = vol.Schema({
|
|||||||
vol.Optional(ATTR_API_ENDPOINT): vol.Coerce(str),
|
vol.Optional(ATTR_API_ENDPOINT): vol.Coerce(str),
|
||||||
vol.Optional(ATTR_TIMEZONE, default='UTC'): validate_timezone,
|
vol.Optional(ATTR_TIMEZONE, default='UTC'): validate_timezone,
|
||||||
vol.Optional(ATTR_ADDONS_CUSTOM_LIST, default=[]): [vol.Url()],
|
vol.Optional(ATTR_ADDONS_CUSTOM_LIST, default=[]): [vol.Url()],
|
||||||
vol.Optional(ATTR_SECURITY, default={}): vol.Schema({
|
vol.Optional(ATTR_SECURITY, default=False): vol.Boolean(),
|
||||||
vol.Optional(ATTR_INITIALIZE, default=False): vol.Boolean(),
|
|
||||||
vol.Optional(ATTR_TOTP): vol.Coerce(str),
|
vol.Optional(ATTR_TOTP): vol.Coerce(str),
|
||||||
vol.Optional(ATTR_PASSWORD): vol.Coerce(str),
|
vol.Optional(ATTR_PASSWORD): vol.Coerce(str),
|
||||||
vol.Optional(ATTR_SESSIONS, default={}):
|
vol.Optional(ATTR_SESSIONS, default={}):
|
||||||
vol.Schema({vol.Coerce(str): vol.Coerce(str)}),
|
vol.Schema({vol.Coerce(str): vol.Coerce(str)}),
|
||||||
}),
|
vol.Optional(ATTR_AUDIO_OUTPUT): ALSA_CHANNEL,
|
||||||
vol.Optional(ATTR_AUDIO, default={}): vol.Schema({
|
vol.Optional(ATTR_AUDIO_INPUT): ALSA_CHANNEL,
|
||||||
vol.Optional(ATTR_OUTPUT): ALSA_CHANNEL,
|
|
||||||
vol.Optional(ATTR_INPUT): ALSA_CHANNEL,
|
|
||||||
}),
|
|
||||||
}, extra=vol.REMOVE_EXTRA)
|
}, extra=vol.REMOVE_EXTRA)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user