"""Init file for Hass.io hardware RESTful API."""
import logging

from .utils import api_process
from ..const import (
    ATTR_SERIAL, ATTR_DISK, ATTR_GPIO, ATTR_AUDIO, ATTR_INPUT, ATTR_OUTPUT)
from ..coresys import CoreSysAttributes

_LOGGER = logging.getLogger(__name__)


class APIHardware(CoreSysAttributes):
    """Handle RESTful API for hardware functions."""

    @api_process
    async def info(self, request):
        """Show hardware info."""
        return {
            ATTR_SERIAL: list(self.sys_hardware.serial_devices),
            ATTR_INPUT: list(self.sys_hardware.input_devices),
            ATTR_DISK: list(self.sys_hardware.disk_devices),
            ATTR_GPIO: list(self.sys_hardware.gpio_devices),
            ATTR_AUDIO: self.sys_hardware.audio_devices,
        }

    @api_process
    async def audio(self, request):
        """Show ALSA audio devices."""
        return {
            ATTR_AUDIO: {
                ATTR_INPUT: self.sys_host.alsa.input_devices,
                ATTR_OUTPUT: self.sys_host.alsa.output_devices,
            }
        }