# coding: utf-8

"""
    UBIKA WAAP Gateway and Cloud API

    The UBIKA's WAAP management API provides a REST/JSON programming interface. It allows automation and scripting of WAAP administration tasks, such as management of reverse proxies and tunnels. The API documentation is shipped with the product itself. Once the product installed, you can access the documentation on the following URL https://ManagementWAAP:3001/api/v1/doc/  # noqa: E501

    The version of the OpenAPI document: 1.0.9
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from ubika_waap_api_client.configuration import Configuration


class CreateTunnelNetworkIncomingSslVerifyClientCertificate(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 = {
        'bundle': 'CreateApplianceSysctlProfile',
        'ca': 'CreateApplianceSysctlProfile',
        'type': 'str',
        'depth': 'int',
        'ocsp': 'CreateApplianceSysctlProfile',
        'catch_errors': 'bool',
        'legacy_dn_string_format': 'bool',
        'ssl_redirect_enable': 'bool',
        'ssl_redirect_port_in': 'int'
    }

    attribute_map = {
        'bundle': 'bundle',
        'ca': 'ca',
        'type': 'type',
        'depth': 'depth',
        'ocsp': 'ocsp',
        'catch_errors': 'catchErrors',
        'legacy_dn_string_format': 'legacyDNStringFormat',
        'ssl_redirect_enable': 'SSLRedirectEnable',
        'ssl_redirect_port_in': 'SSLRedirectPortIn'
    }

    def __init__(self, bundle=None, ca=None, type=None, depth=None, ocsp=None, catch_errors=None, legacy_dn_string_format=None, ssl_redirect_enable=None, ssl_redirect_port_in=None, local_vars_configuration=None):  # noqa: E501
        """CreateTunnelNetworkIncomingSslVerifyClientCertificate - 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._bundle = None
        self._ca = None
        self._type = None
        self._depth = None
        self._ocsp = None
        self._catch_errors = None
        self._legacy_dn_string_format = None
        self._ssl_redirect_enable = None
        self._ssl_redirect_port_in = None
        self.discriminator = None

        if bundle is not None:
            self.bundle = bundle
        if ca is not None:
            self.ca = ca
        if type is not None:
            self.type = type
        if depth is not None:
            self.depth = depth
        if ocsp is not None:
            self.ocsp = ocsp
        if catch_errors is not None:
            self.catch_errors = catch_errors
        if legacy_dn_string_format is not None:
            self.legacy_dn_string_format = legacy_dn_string_format
        if ssl_redirect_enable is not None:
            self.ssl_redirect_enable = ssl_redirect_enable
        if ssl_redirect_port_in is not None:
            self.ssl_redirect_port_in = ssl_redirect_port_in

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


        :return: The bundle of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._bundle

    @bundle.setter
    def bundle(self, bundle):
        """Sets the bundle of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param bundle: The bundle of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._bundle = bundle

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


        :return: The ca of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._ca

    @ca.setter
    def ca(self, ca):
        """Sets the ca of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param ca: The ca of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._ca = ca

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


        :return: The type of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: str
        """
        return self._type

    @type.setter
    def type(self, type):
        """Sets the type of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


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

        self._type = type

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


        :return: The depth of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: int
        """
        return self._depth

    @depth.setter
    def depth(self, depth):
        """Sets the depth of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param depth: The depth of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: int
        """

        self._depth = depth

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


        :return: The ocsp of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: CreateApplianceSysctlProfile
        """
        return self._ocsp

    @ocsp.setter
    def ocsp(self, ocsp):
        """Sets the ocsp of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param ocsp: The ocsp of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: CreateApplianceSysctlProfile
        """

        self._ocsp = ocsp

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


        :return: The catch_errors of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: bool
        """
        return self._catch_errors

    @catch_errors.setter
    def catch_errors(self, catch_errors):
        """Sets the catch_errors of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param catch_errors: The catch_errors of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: bool
        """

        self._catch_errors = catch_errors

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


        :return: The legacy_dn_string_format of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: bool
        """
        return self._legacy_dn_string_format

    @legacy_dn_string_format.setter
    def legacy_dn_string_format(self, legacy_dn_string_format):
        """Sets the legacy_dn_string_format of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param legacy_dn_string_format: The legacy_dn_string_format of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: bool
        """

        self._legacy_dn_string_format = legacy_dn_string_format

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


        :return: The ssl_redirect_enable of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: bool
        """
        return self._ssl_redirect_enable

    @ssl_redirect_enable.setter
    def ssl_redirect_enable(self, ssl_redirect_enable):
        """Sets the ssl_redirect_enable of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param ssl_redirect_enable: The ssl_redirect_enable of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: bool
        """

        self._ssl_redirect_enable = ssl_redirect_enable

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


        :return: The ssl_redirect_port_in of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :rtype: int
        """
        return self._ssl_redirect_port_in

    @ssl_redirect_port_in.setter
    def ssl_redirect_port_in(self, ssl_redirect_port_in):
        """Sets the ssl_redirect_port_in of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.


        :param ssl_redirect_port_in: The ssl_redirect_port_in of this CreateTunnelNetworkIncomingSslVerifyClientCertificate.  # noqa: E501
        :type: int
        """

        self._ssl_redirect_port_in = ssl_redirect_port_in

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

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