# 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 PatchRamdiskCache(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 = {
        'name': 'str',
        'cache_ignore_cache_control': 'bool',
        'cache_ignore_no_last_mod': 'bool',
        'cache_ignore_query_string': 'bool',
        'cache_store_no_store': 'bool',
        'cache_store_private': 'bool',
        'cache_default_expire': 'int',
        'cache_ignore_headers': 'str',
        'cache_ignore_url_session_identifiers': 'str',
        'cache_last_modified_factor': 'float',
        'cache_max_expire': 'int',
        'cache_dir_length': 'int',
        'cache_dir_levels': 'int',
        'cache_max_file_size': 'int',
        'cache_min_file_size': 'int'
    }

    attribute_map = {
        'name': 'name',
        'cache_ignore_cache_control': 'cacheIgnoreCacheControl',
        'cache_ignore_no_last_mod': 'cacheIgnoreNoLastMod',
        'cache_ignore_query_string': 'cacheIgnoreQueryString',
        'cache_store_no_store': 'cacheStoreNoStore',
        'cache_store_private': 'cacheStorePrivate',
        'cache_default_expire': 'cacheDefaultExpire',
        'cache_ignore_headers': 'cacheIgnoreHeaders',
        'cache_ignore_url_session_identifiers': 'cacheIgnoreURLSessionIdentifiers',
        'cache_last_modified_factor': 'cacheLastModifiedFactor',
        'cache_max_expire': 'cacheMaxExpire',
        'cache_dir_length': 'cacheDirLength',
        'cache_dir_levels': 'cacheDirLevels',
        'cache_max_file_size': 'cacheMaxFileSize',
        'cache_min_file_size': 'cacheMinFileSize'
    }

    def __init__(self, name=None, cache_ignore_cache_control=None, cache_ignore_no_last_mod=None, cache_ignore_query_string=None, cache_store_no_store=None, cache_store_private=None, cache_default_expire=None, cache_ignore_headers=None, cache_ignore_url_session_identifiers=None, cache_last_modified_factor=None, cache_max_expire=None, cache_dir_length=None, cache_dir_levels=None, cache_max_file_size=None, cache_min_file_size=None, local_vars_configuration=None):  # noqa: E501
        """PatchRamdiskCache - 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._name = None
        self._cache_ignore_cache_control = None
        self._cache_ignore_no_last_mod = None
        self._cache_ignore_query_string = None
        self._cache_store_no_store = None
        self._cache_store_private = None
        self._cache_default_expire = None
        self._cache_ignore_headers = None
        self._cache_ignore_url_session_identifiers = None
        self._cache_last_modified_factor = None
        self._cache_max_expire = None
        self._cache_dir_length = None
        self._cache_dir_levels = None
        self._cache_max_file_size = None
        self._cache_min_file_size = None
        self.discriminator = None

        if name is not None:
            self.name = name
        if cache_ignore_cache_control is not None:
            self.cache_ignore_cache_control = cache_ignore_cache_control
        if cache_ignore_no_last_mod is not None:
            self.cache_ignore_no_last_mod = cache_ignore_no_last_mod
        if cache_ignore_query_string is not None:
            self.cache_ignore_query_string = cache_ignore_query_string
        if cache_store_no_store is not None:
            self.cache_store_no_store = cache_store_no_store
        if cache_store_private is not None:
            self.cache_store_private = cache_store_private
        if cache_default_expire is not None:
            self.cache_default_expire = cache_default_expire
        if cache_ignore_headers is not None:
            self.cache_ignore_headers = cache_ignore_headers
        if cache_ignore_url_session_identifiers is not None:
            self.cache_ignore_url_session_identifiers = cache_ignore_url_session_identifiers
        if cache_last_modified_factor is not None:
            self.cache_last_modified_factor = cache_last_modified_factor
        if cache_max_expire is not None:
            self.cache_max_expire = cache_max_expire
        if cache_dir_length is not None:
            self.cache_dir_length = cache_dir_length
        if cache_dir_levels is not None:
            self.cache_dir_levels = cache_dir_levels
        if cache_max_file_size is not None:
            self.cache_max_file_size = cache_max_file_size
        if cache_min_file_size is not None:
            self.cache_min_file_size = cache_min_file_size

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


        :return: The name of this PatchRamdiskCache.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this PatchRamdiskCache.


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

        self._name = name

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


        :return: The cache_ignore_cache_control of this PatchRamdiskCache.  # noqa: E501
        :rtype: bool
        """
        return self._cache_ignore_cache_control

    @cache_ignore_cache_control.setter
    def cache_ignore_cache_control(self, cache_ignore_cache_control):
        """Sets the cache_ignore_cache_control of this PatchRamdiskCache.


        :param cache_ignore_cache_control: The cache_ignore_cache_control of this PatchRamdiskCache.  # noqa: E501
        :type: bool
        """

        self._cache_ignore_cache_control = cache_ignore_cache_control

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


        :return: The cache_ignore_no_last_mod of this PatchRamdiskCache.  # noqa: E501
        :rtype: bool
        """
        return self._cache_ignore_no_last_mod

    @cache_ignore_no_last_mod.setter
    def cache_ignore_no_last_mod(self, cache_ignore_no_last_mod):
        """Sets the cache_ignore_no_last_mod of this PatchRamdiskCache.


        :param cache_ignore_no_last_mod: The cache_ignore_no_last_mod of this PatchRamdiskCache.  # noqa: E501
        :type: bool
        """

        self._cache_ignore_no_last_mod = cache_ignore_no_last_mod

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


        :return: The cache_ignore_query_string of this PatchRamdiskCache.  # noqa: E501
        :rtype: bool
        """
        return self._cache_ignore_query_string

    @cache_ignore_query_string.setter
    def cache_ignore_query_string(self, cache_ignore_query_string):
        """Sets the cache_ignore_query_string of this PatchRamdiskCache.


        :param cache_ignore_query_string: The cache_ignore_query_string of this PatchRamdiskCache.  # noqa: E501
        :type: bool
        """

        self._cache_ignore_query_string = cache_ignore_query_string

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


        :return: The cache_store_no_store of this PatchRamdiskCache.  # noqa: E501
        :rtype: bool
        """
        return self._cache_store_no_store

    @cache_store_no_store.setter
    def cache_store_no_store(self, cache_store_no_store):
        """Sets the cache_store_no_store of this PatchRamdiskCache.


        :param cache_store_no_store: The cache_store_no_store of this PatchRamdiskCache.  # noqa: E501
        :type: bool
        """

        self._cache_store_no_store = cache_store_no_store

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


        :return: The cache_store_private of this PatchRamdiskCache.  # noqa: E501
        :rtype: bool
        """
        return self._cache_store_private

    @cache_store_private.setter
    def cache_store_private(self, cache_store_private):
        """Sets the cache_store_private of this PatchRamdiskCache.


        :param cache_store_private: The cache_store_private of this PatchRamdiskCache.  # noqa: E501
        :type: bool
        """

        self._cache_store_private = cache_store_private

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


        :return: The cache_default_expire of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_default_expire

    @cache_default_expire.setter
    def cache_default_expire(self, cache_default_expire):
        """Sets the cache_default_expire of this PatchRamdiskCache.


        :param cache_default_expire: The cache_default_expire of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_default_expire = cache_default_expire

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


        :return: The cache_ignore_headers of this PatchRamdiskCache.  # noqa: E501
        :rtype: str
        """
        return self._cache_ignore_headers

    @cache_ignore_headers.setter
    def cache_ignore_headers(self, cache_ignore_headers):
        """Sets the cache_ignore_headers of this PatchRamdiskCache.


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

        self._cache_ignore_headers = cache_ignore_headers

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


        :return: The cache_ignore_url_session_identifiers of this PatchRamdiskCache.  # noqa: E501
        :rtype: str
        """
        return self._cache_ignore_url_session_identifiers

    @cache_ignore_url_session_identifiers.setter
    def cache_ignore_url_session_identifiers(self, cache_ignore_url_session_identifiers):
        """Sets the cache_ignore_url_session_identifiers of this PatchRamdiskCache.


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

        self._cache_ignore_url_session_identifiers = cache_ignore_url_session_identifiers

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


        :return: The cache_last_modified_factor of this PatchRamdiskCache.  # noqa: E501
        :rtype: float
        """
        return self._cache_last_modified_factor

    @cache_last_modified_factor.setter
    def cache_last_modified_factor(self, cache_last_modified_factor):
        """Sets the cache_last_modified_factor of this PatchRamdiskCache.


        :param cache_last_modified_factor: The cache_last_modified_factor of this PatchRamdiskCache.  # noqa: E501
        :type: float
        """

        self._cache_last_modified_factor = cache_last_modified_factor

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


        :return: The cache_max_expire of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_max_expire

    @cache_max_expire.setter
    def cache_max_expire(self, cache_max_expire):
        """Sets the cache_max_expire of this PatchRamdiskCache.


        :param cache_max_expire: The cache_max_expire of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_max_expire = cache_max_expire

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


        :return: The cache_dir_length of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_dir_length

    @cache_dir_length.setter
    def cache_dir_length(self, cache_dir_length):
        """Sets the cache_dir_length of this PatchRamdiskCache.


        :param cache_dir_length: The cache_dir_length of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_dir_length = cache_dir_length

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


        :return: The cache_dir_levels of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_dir_levels

    @cache_dir_levels.setter
    def cache_dir_levels(self, cache_dir_levels):
        """Sets the cache_dir_levels of this PatchRamdiskCache.


        :param cache_dir_levels: The cache_dir_levels of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_dir_levels = cache_dir_levels

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


        :return: The cache_max_file_size of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_max_file_size

    @cache_max_file_size.setter
    def cache_max_file_size(self, cache_max_file_size):
        """Sets the cache_max_file_size of this PatchRamdiskCache.


        :param cache_max_file_size: The cache_max_file_size of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_max_file_size = cache_max_file_size

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


        :return: The cache_min_file_size of this PatchRamdiskCache.  # noqa: E501
        :rtype: int
        """
        return self._cache_min_file_size

    @cache_min_file_size.setter
    def cache_min_file_size(self, cache_min_file_size):
        """Sets the cache_min_file_size of this PatchRamdiskCache.


        :param cache_min_file_size: The cache_min_file_size of this PatchRamdiskCache.  # noqa: E501
        :type: int
        """

        self._cache_min_file_size = cache_min_file_size

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

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