# coding: utf-8

"""
    MailSlurp API

    MailSlurp is an API for sending and receiving emails and SMS from dynamically allocated email addresses and phone numbers. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more.  ## Resources  - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://docs.mailslurp.com/) - [Examples](https://github.com/mailslurp/examples) repository  # noqa: E501

    The version of the OpenAPI document: 6.5.2
    Contact: contact@mailslurp.dev
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from mailslurp_client.configuration import Configuration


class CheckEmailBlacklistResults(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'domain': 'str',
        'requested_ip_address': 'str',
        'requested_mx_host': 'str',
        'status': 'str',
        'listed': 'bool',
        'checked_ip_addresses': 'list[EmailBlacklistIpResult]',
        'checked_zone_count': 'int',
        'total_listings': 'int',
        'warnings': 'list[str]',
        'errors': 'list[str]'
    }

    attribute_map = {
        'domain': 'domain',
        'requested_ip_address': 'requestedIpAddress',
        'requested_mx_host': 'requestedMxHost',
        'status': 'status',
        'listed': 'listed',
        'checked_ip_addresses': 'checkedIpAddresses',
        'checked_zone_count': 'checkedZoneCount',
        'total_listings': 'totalListings',
        'warnings': 'warnings',
        'errors': 'errors'
    }

    def __init__(self, domain=None, requested_ip_address=None, requested_mx_host=None, status=None, listed=None, checked_ip_addresses=None, checked_zone_count=None, total_listings=None, warnings=None, errors=None, local_vars_configuration=None):  # noqa: E501
        """CheckEmailBlacklistResults - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._domain = None
        self._requested_ip_address = None
        self._requested_mx_host = None
        self._status = None
        self._listed = None
        self._checked_ip_addresses = None
        self._checked_zone_count = None
        self._total_listings = None
        self._warnings = None
        self._errors = None
        self.discriminator = None

        self.domain = domain
        self.requested_ip_address = requested_ip_address
        self.requested_mx_host = requested_mx_host
        self.status = status
        self.listed = listed
        self.checked_ip_addresses = checked_ip_addresses
        self.checked_zone_count = checked_zone_count
        self.total_listings = total_listings
        self.warnings = warnings
        self.errors = errors

    @property
    def domain(self):
        """Gets the domain of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The domain of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: str
        """
        return self._domain

    @domain.setter
    def domain(self, domain):
        """Sets the domain of this CheckEmailBlacklistResults.


        :param domain: The domain of this CheckEmailBlacklistResults.  # noqa: E501
        :type: str
        """

        self._domain = domain

    @property
    def requested_ip_address(self):
        """Gets the requested_ip_address of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The requested_ip_address of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: str
        """
        return self._requested_ip_address

    @requested_ip_address.setter
    def requested_ip_address(self, requested_ip_address):
        """Sets the requested_ip_address of this CheckEmailBlacklistResults.


        :param requested_ip_address: The requested_ip_address of this CheckEmailBlacklistResults.  # noqa: E501
        :type: str
        """

        self._requested_ip_address = requested_ip_address

    @property
    def requested_mx_host(self):
        """Gets the requested_mx_host of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The requested_mx_host of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: str
        """
        return self._requested_mx_host

    @requested_mx_host.setter
    def requested_mx_host(self, requested_mx_host):
        """Sets the requested_mx_host of this CheckEmailBlacklistResults.


        :param requested_mx_host: The requested_mx_host of this CheckEmailBlacklistResults.  # noqa: E501
        :type: str
        """

        self._requested_mx_host = requested_mx_host

    @property
    def status(self):
        """Gets the status of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The status of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this CheckEmailBlacklistResults.


        :param status: The status of this CheckEmailBlacklistResults.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and status is None:  # noqa: E501
            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
        allowed_values = ["HEALTHY", "DEGRADED", "CRITICAL", "FAILED"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and status not in allowed_values:  # noqa: E501
            raise ValueError(
                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
                .format(status, allowed_values)
            )

        self._status = status

    @property
    def listed(self):
        """Gets the listed of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The listed of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: bool
        """
        return self._listed

    @listed.setter
    def listed(self, listed):
        """Sets the listed of this CheckEmailBlacklistResults.


        :param listed: The listed of this CheckEmailBlacklistResults.  # noqa: E501
        :type: bool
        """
        if self.local_vars_configuration.client_side_validation and listed is None:  # noqa: E501
            raise ValueError("Invalid value for `listed`, must not be `None`")  # noqa: E501

        self._listed = listed

    @property
    def checked_ip_addresses(self):
        """Gets the checked_ip_addresses of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The checked_ip_addresses of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: list[EmailBlacklistIpResult]
        """
        return self._checked_ip_addresses

    @checked_ip_addresses.setter
    def checked_ip_addresses(self, checked_ip_addresses):
        """Sets the checked_ip_addresses of this CheckEmailBlacklistResults.


        :param checked_ip_addresses: The checked_ip_addresses of this CheckEmailBlacklistResults.  # noqa: E501
        :type: list[EmailBlacklistIpResult]
        """
        if self.local_vars_configuration.client_side_validation and checked_ip_addresses is None:  # noqa: E501
            raise ValueError("Invalid value for `checked_ip_addresses`, must not be `None`")  # noqa: E501

        self._checked_ip_addresses = checked_ip_addresses

    @property
    def checked_zone_count(self):
        """Gets the checked_zone_count of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The checked_zone_count of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: int
        """
        return self._checked_zone_count

    @checked_zone_count.setter
    def checked_zone_count(self, checked_zone_count):
        """Sets the checked_zone_count of this CheckEmailBlacklistResults.


        :param checked_zone_count: The checked_zone_count of this CheckEmailBlacklistResults.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and checked_zone_count is None:  # noqa: E501
            raise ValueError("Invalid value for `checked_zone_count`, must not be `None`")  # noqa: E501

        self._checked_zone_count = checked_zone_count

    @property
    def total_listings(self):
        """Gets the total_listings of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The total_listings of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: int
        """
        return self._total_listings

    @total_listings.setter
    def total_listings(self, total_listings):
        """Sets the total_listings of this CheckEmailBlacklistResults.


        :param total_listings: The total_listings of this CheckEmailBlacklistResults.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and total_listings is None:  # noqa: E501
            raise ValueError("Invalid value for `total_listings`, must not be `None`")  # noqa: E501

        self._total_listings = total_listings

    @property
    def warnings(self):
        """Gets the warnings of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The warnings of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: list[str]
        """
        return self._warnings

    @warnings.setter
    def warnings(self, warnings):
        """Sets the warnings of this CheckEmailBlacklistResults.


        :param warnings: The warnings of this CheckEmailBlacklistResults.  # noqa: E501
        :type: list[str]
        """
        if self.local_vars_configuration.client_side_validation and warnings is None:  # noqa: E501
            raise ValueError("Invalid value for `warnings`, must not be `None`")  # noqa: E501

        self._warnings = warnings

    @property
    def errors(self):
        """Gets the errors of this CheckEmailBlacklistResults.  # noqa: E501


        :return: The errors of this CheckEmailBlacklistResults.  # noqa: E501
        :rtype: list[str]
        """
        return self._errors

    @errors.setter
    def errors(self, errors):
        """Sets the errors of this CheckEmailBlacklistResults.


        :param errors: The errors of this CheckEmailBlacklistResults.  # noqa: E501
        :type: list[str]
        """
        if self.local_vars_configuration.client_side_validation and errors is None:  # noqa: E501
            raise ValueError("Invalid value for `errors`, must not be `None`")  # noqa: E501

        self._errors = errors

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, CheckEmailBlacklistResults):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, CheckEmailBlacklistResults):
            return True

        return self.to_dict() != other.to_dict()
