"""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},
        }
