"""Errors for Google Assistant."""
from .const import ERR_CHALLENGE_NEEDED


class SmartHomeError(Exception):
    """Google Assistant Smart Home errors.

    https://developers.google.com/actions/smarthome/create-app#error_responses
    """

    def __init__(self, code, msg):
        """Log error code."""
        super().__init__(msg)
        self.code = code

    def to_response(self):
        """Convert to a response format."""
        return {
            'errorCode': self.code
        }


class ChallengeNeeded(SmartHomeError):
    """Google Assistant Smart Home errors.

    https://developers.google.com/actions/smarthome/create-app#error_responses
    """

    def __init__(self, challenge_type):
        """Initialize challenge needed error."""
        super().__init__(ERR_CHALLENGE_NEEDED,
                         'Challenge needed: {}'.format(challenge_type))
        self.challenge_type = challenge_type

    def to_response(self):
        """Convert to a response format."""
        return {
            'errorCode': self.code,
            'challengeNeeded': {
                'type': self.challenge_type
            }
        }
