# 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 CheckEmailAuditOptions(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 = {
        'from_address': 'str',
        'recipient': 'str',
        'subject': 'str',
        'html_body': 'str',
        'text_body': 'str',
        'email_analysis': 'EmailAnalysis',
        'has_attachments': 'bool',
        'captcha_token': 'str'
    }

    attribute_map = {
        'from_address': 'fromAddress',
        'recipient': 'recipient',
        'subject': 'subject',
        'html_body': 'htmlBody',
        'text_body': 'textBody',
        'email_analysis': 'emailAnalysis',
        'has_attachments': 'hasAttachments',
        'captcha_token': 'captchaToken'
    }

    def __init__(self, from_address=None, recipient=None, subject=None, html_body=None, text_body=None, email_analysis=None, has_attachments=None, captcha_token=None, local_vars_configuration=None):  # noqa: E501
        """CheckEmailAuditOptions - 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._from_address = None
        self._recipient = None
        self._subject = None
        self._html_body = None
        self._text_body = None
        self._email_analysis = None
        self._has_attachments = None
        self._captcha_token = None
        self.discriminator = None

        self.from_address = from_address
        self.recipient = recipient
        self.subject = subject
        self.html_body = html_body
        self.text_body = text_body
        self.email_analysis = email_analysis
        self.has_attachments = has_attachments
        self.captcha_token = captcha_token

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

        Optional sender address context  # noqa: E501

        :return: The from_address of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._from_address

    @from_address.setter
    def from_address(self, from_address):
        """Sets the from_address of this CheckEmailAuditOptions.

        Optional sender address context  # noqa: E501

        :param from_address: The from_address of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                from_address is not None and len(from_address) > 320):
            raise ValueError("Invalid value for `from_address`, length must be less than or equal to `320`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                from_address is not None and len(from_address) < 0):
            raise ValueError("Invalid value for `from_address`, length must be greater than or equal to `0`")  # noqa: E501

        self._from_address = from_address

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

        Optional recipient context  # noqa: E501

        :return: The recipient of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._recipient

    @recipient.setter
    def recipient(self, recipient):
        """Sets the recipient of this CheckEmailAuditOptions.

        Optional recipient context  # noqa: E501

        :param recipient: The recipient of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                recipient is not None and len(recipient) > 320):
            raise ValueError("Invalid value for `recipient`, length must be less than or equal to `320`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                recipient is not None and len(recipient) < 0):
            raise ValueError("Invalid value for `recipient`, length must be greater than or equal to `0`")  # noqa: E501

        self._recipient = recipient

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

        Optional subject line context  # noqa: E501

        :return: The subject of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._subject

    @subject.setter
    def subject(self, subject):
        """Sets the subject of this CheckEmailAuditOptions.

        Optional subject line context  # noqa: E501

        :param subject: The subject of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                subject is not None and len(subject) > 998):
            raise ValueError("Invalid value for `subject`, length must be less than or equal to `998`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                subject is not None and len(subject) < 0):
            raise ValueError("Invalid value for `subject`, length must be greater than or equal to `0`")  # noqa: E501

        self._subject = subject

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

        Optional HTML email body  # noqa: E501

        :return: The html_body of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._html_body

    @html_body.setter
    def html_body(self, html_body):
        """Sets the html_body of this CheckEmailAuditOptions.

        Optional HTML email body  # noqa: E501

        :param html_body: The html_body of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                html_body is not None and len(html_body) > 200000):
            raise ValueError("Invalid value for `html_body`, length must be less than or equal to `200000`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                html_body is not None and len(html_body) < 0):
            raise ValueError("Invalid value for `html_body`, length must be greater than or equal to `0`")  # noqa: E501

        self._html_body = html_body

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

        Optional text email body  # noqa: E501

        :return: The text_body of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._text_body

    @text_body.setter
    def text_body(self, text_body):
        """Sets the text_body of this CheckEmailAuditOptions.

        Optional text email body  # noqa: E501

        :param text_body: The text_body of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """
        if (self.local_vars_configuration.client_side_validation and
                text_body is not None and len(text_body) > 200000):
            raise ValueError("Invalid value for `text_body`, length must be less than or equal to `200000`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                text_body is not None and len(text_body) < 0):
            raise ValueError("Invalid value for `text_body`, length must be greater than or equal to `0`")  # noqa: E501

        self._text_body = text_body

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


        :return: The email_analysis of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: EmailAnalysis
        """
        return self._email_analysis

    @email_analysis.setter
    def email_analysis(self, email_analysis):
        """Sets the email_analysis of this CheckEmailAuditOptions.


        :param email_analysis: The email_analysis of this CheckEmailAuditOptions.  # noqa: E501
        :type: EmailAnalysis
        """

        self._email_analysis = email_analysis

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

        Whether the source email included attachments  # noqa: E501

        :return: The has_attachments of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: bool
        """
        return self._has_attachments

    @has_attachments.setter
    def has_attachments(self, has_attachments):
        """Sets the has_attachments of this CheckEmailAuditOptions.

        Whether the source email included attachments  # noqa: E501

        :param has_attachments: The has_attachments of this CheckEmailAuditOptions.  # noqa: E501
        :type: bool
        """

        self._has_attachments = has_attachments

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

        Optional captcha token for abuse protection  # noqa: E501

        :return: The captcha_token of this CheckEmailAuditOptions.  # noqa: E501
        :rtype: str
        """
        return self._captcha_token

    @captcha_token.setter
    def captcha_token(self, captcha_token):
        """Sets the captcha_token of this CheckEmailAuditOptions.

        Optional captcha token for abuse protection  # noqa: E501

        :param captcha_token: The captcha_token of this CheckEmailAuditOptions.  # noqa: E501
        :type: str
        """

        self._captcha_token = captcha_token

    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, CheckEmailAuditOptions):
            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, CheckEmailAuditOptions):
            return True

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