# coding: utf-8

"""
    Allegro REST API

    https://developer.allegro.pl/about  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from allegro_api.configuration import Configuration


class Error(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 = {
        'code': 'str',
        'details': 'str',
        'message': 'str',
        'path': 'str',
        'user_message': 'str'
    }

    attribute_map = {
        'code': 'code',
        'details': 'details',
        'message': 'message',
        'path': 'path',
        'user_message': 'userMessage'
    }

    def __init__(self, code=None, details=None, message=None, path=None, user_message=None, local_vars_configuration=None):  # noqa: E501
        """Error - 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._code = None
        self._details = None
        self._message = None
        self._path = None
        self._user_message = None
        self.discriminator = None

        if code is not None:
            self.code = code
        if details is not None:
            self.details = details
        if message is not None:
            self.message = message
        if path is not None:
            self.path = path
        if user_message is not None:
            self.user_message = user_message

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

        The error code. You can use this code when contacting us about any problems with our systems.  # noqa: E501

        :return: The code of this Error.  # noqa: E501
        :rtype: str
        """
        return self._code

    @code.setter
    def code(self, code):
        """Sets the code of this Error.

        The error code. You can use this code when contacting us about any problems with our systems.  # noqa: E501

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

        self._code = code

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

        For some cases, this field provides more details regarding the error. This field can be empty.  # noqa: E501

        :return: The details of this Error.  # noqa: E501
        :rtype: str
        """
        return self._details

    @details.setter
    def details(self, details):
        """Sets the details of this Error.

        For some cases, this field provides more details regarding the error. This field can be empty.  # noqa: E501

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

        self._details = details

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

        A message directed to the developer of the program. This message will always be in English and give you some more technical details on what exactly has happened.  # noqa: E501

        :return: The message of this Error.  # noqa: E501
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message):
        """Sets the message of this Error.

        A message directed to the developer of the program. This message will always be in English and give you some more technical details on what exactly has happened.  # noqa: E501

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

        self._message = message

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

        This field will point to a specific field in object if the error is connected to a problem with such specific field. This field can be empty  # noqa: E501

        :return: The path of this Error.  # noqa: E501
        :rtype: str
        """
        return self._path

    @path.setter
    def path(self, path):
        """Sets the path of this Error.

        This field will point to a specific field in object if the error is connected to a problem with such specific field. This field can be empty  # noqa: E501

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

        self._path = path

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

        The message that can be presented directly to your user. It will not contain any technical information. This message is translated based on the value of the \"Accept-Language\" header. By default message in English is returned.  # noqa: E501

        :return: The user_message of this Error.  # noqa: E501
        :rtype: str
        """
        return self._user_message

    @user_message.setter
    def user_message(self, user_message):
        """Sets the user_message of this Error.

        The message that can be presented directly to your user. It will not contain any technical information. This message is translated based on the value of the \"Accept-Language\" header. By default message in English is returned.  # noqa: E501

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

        self._user_message = user_message

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

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