# coding: utf-8

"""
    Agilicus API

    Agilicus API endpoints  # noqa: E501

    The version of the OpenAPI document: 2021.04.01
    Contact: dev@agilicus.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from agilicus_api.configuration import Configuration


class AgentConnectorProxyRequestStatsDetails(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 = {
        'started': 'int',
        'finished': 'int',
        'status_1xx': 'int',
        'status_2xx': 'int',
        'status_3xx': 'int',
        'status_4xx': 'int',
        'status_5xx': 'int',
        'status_unknown': 'int',
        'failed_authentication': 'int',
        'failed_authorisation': 'int'
    }

    attribute_map = {
        'started': 'started',
        'finished': 'finished',
        'status_1xx': 'status_1xx',
        'status_2xx': 'status_2xx',
        'status_3xx': 'status_3xx',
        'status_4xx': 'status_4xx',
        'status_5xx': 'status_5xx',
        'status_unknown': 'status_unknown',
        'failed_authentication': 'failed_authentication',
        'failed_authorisation': 'failed_authorisation'
    }

    def __init__(self, started=None, finished=None, status_1xx=None, status_2xx=None, status_3xx=None, status_4xx=None, status_5xx=None, status_unknown=None, failed_authentication=None, failed_authorisation=None, local_vars_configuration=None):  # noqa: E501
        """AgentConnectorProxyRequestStatsDetails - 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._started = None
        self._finished = None
        self._status_1xx = None
        self._status_2xx = None
        self._status_3xx = None
        self._status_4xx = None
        self._status_5xx = None
        self._status_unknown = None
        self._failed_authentication = None
        self._failed_authorisation = None
        self.discriminator = None

        self.started = started
        self.finished = finished
        self.status_1xx = status_1xx
        self.status_2xx = status_2xx
        self.status_3xx = status_3xx
        self.status_4xx = status_4xx
        self.status_5xx = status_5xx
        self.status_unknown = status_unknown
        self.failed_authentication = failed_authentication
        self.failed_authorisation = failed_authorisation

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

        The total number of requests started by the proxy  # noqa: E501

        :return: The started of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._started

    @started.setter
    def started(self, started):
        """Sets the started of this AgentConnectorProxyRequestStatsDetails.

        The total number of requests started by the proxy  # noqa: E501

        :param started: The started of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and started is None:  # noqa: E501
            raise ValueError("Invalid value for `started`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                started is not None and started < 0):  # noqa: E501
            raise ValueError("Invalid value for `started`, must be a value greater than or equal to `0`")  # noqa: E501

        self._started = started

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

        The total number of requests finished by the proxy.  # noqa: E501

        :return: The finished of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._finished

    @finished.setter
    def finished(self, finished):
        """Sets the finished of this AgentConnectorProxyRequestStatsDetails.

        The total number of requests finished by the proxy.  # noqa: E501

        :param finished: The finished of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and finished is None:  # noqa: E501
            raise ValueError("Invalid value for `finished`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                finished is not None and finished < 0):  # noqa: E501
            raise ValueError("Invalid value for `finished`, must be a value greater than or equal to `0`")  # noqa: E501

        self._finished = finished

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

        The number of requests which completed with a status code between 100 and 199   # noqa: E501

        :return: The status_1xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_1xx

    @status_1xx.setter
    def status_1xx(self, status_1xx):
        """Sets the status_1xx of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with a status code between 100 and 199   # noqa: E501

        :param status_1xx: The status_1xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_1xx is None:  # noqa: E501
            raise ValueError("Invalid value for `status_1xx`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_1xx is not None and status_1xx < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_1xx`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_1xx = status_1xx

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

        The number of requests which completed with a status code between 200 and 299   # noqa: E501

        :return: The status_2xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_2xx

    @status_2xx.setter
    def status_2xx(self, status_2xx):
        """Sets the status_2xx of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with a status code between 200 and 299   # noqa: E501

        :param status_2xx: The status_2xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_2xx is None:  # noqa: E501
            raise ValueError("Invalid value for `status_2xx`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_2xx is not None and status_2xx < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_2xx`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_2xx = status_2xx

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

        The number of requests which completed with a status code between 300 and 399   # noqa: E501

        :return: The status_3xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_3xx

    @status_3xx.setter
    def status_3xx(self, status_3xx):
        """Sets the status_3xx of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with a status code between 300 and 399   # noqa: E501

        :param status_3xx: The status_3xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_3xx is None:  # noqa: E501
            raise ValueError("Invalid value for `status_3xx`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_3xx is not None and status_3xx < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_3xx`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_3xx = status_3xx

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

        The number of requests which completed with a status code between 400 and 499   # noqa: E501

        :return: The status_4xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_4xx

    @status_4xx.setter
    def status_4xx(self, status_4xx):
        """Sets the status_4xx of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with a status code between 400 and 499   # noqa: E501

        :param status_4xx: The status_4xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_4xx is None:  # noqa: E501
            raise ValueError("Invalid value for `status_4xx`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_4xx is not None and status_4xx < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_4xx`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_4xx = status_4xx

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

        The number of requests which completed with a status code between 500 and 599   # noqa: E501

        :return: The status_5xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_5xx

    @status_5xx.setter
    def status_5xx(self, status_5xx):
        """Sets the status_5xx of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with a status code between 500 and 599   # noqa: E501

        :param status_5xx: The status_5xx of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_5xx is None:  # noqa: E501
            raise ValueError("Invalid value for `status_5xx`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_5xx is not None and status_5xx < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_5xx`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_5xx = status_5xx

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

        The number of requests which completed with an unknown status code   # noqa: E501

        :return: The status_unknown of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._status_unknown

    @status_unknown.setter
    def status_unknown(self, status_unknown):
        """Sets the status_unknown of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which completed with an unknown status code   # noqa: E501

        :param status_unknown: The status_unknown of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and status_unknown is None:  # noqa: E501
            raise ValueError("Invalid value for `status_unknown`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                status_unknown is not None and status_unknown < 0):  # noqa: E501
            raise ValueError("Invalid value for `status_unknown`, must be a value greater than or equal to `0`")  # noqa: E501

        self._status_unknown = status_unknown

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

        The number of requests which failed authentication.   # noqa: E501

        :return: The failed_authentication of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._failed_authentication

    @failed_authentication.setter
    def failed_authentication(self, failed_authentication):
        """Sets the failed_authentication of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which failed authentication.   # noqa: E501

        :param failed_authentication: The failed_authentication of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and failed_authentication is None:  # noqa: E501
            raise ValueError("Invalid value for `failed_authentication`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                failed_authentication is not None and failed_authentication < 0):  # noqa: E501
            raise ValueError("Invalid value for `failed_authentication`, must be a value greater than or equal to `0`")  # noqa: E501

        self._failed_authentication = failed_authentication

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

        The number of requests which failed authorisation.   # noqa: E501

        :return: The failed_authorisation of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :rtype: int
        """
        return self._failed_authorisation

    @failed_authorisation.setter
    def failed_authorisation(self, failed_authorisation):
        """Sets the failed_authorisation of this AgentConnectorProxyRequestStatsDetails.

        The number of requests which failed authorisation.   # noqa: E501

        :param failed_authorisation: The failed_authorisation of this AgentConnectorProxyRequestStatsDetails.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and failed_authorisation is None:  # noqa: E501
            raise ValueError("Invalid value for `failed_authorisation`, must not be `None`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                failed_authorisation is not None and failed_authorisation < 0):  # noqa: E501
            raise ValueError("Invalid value for `failed_authorisation`, must be a value greater than or equal to `0`")  # noqa: E501

        self._failed_authorisation = failed_authorisation

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

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