# 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 DevicePreviewScreenshotDto(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 = {
        'screenshot_id': 'str',
        'run_id': 'str',
        'target_id': 'str',
        'variant': 'str',
        'title': 'str',
        'description': 'str',
        'is_primary': 'bool',
        'display_order': 'int',
        'storage_key': 'str',
        'access_url': 'str',
        'live_view_url': 'str',
        'session_id': 'str',
        'browser_context_id': 'str',
        'deep_link_url': 'str',
        'width': 'int',
        'height': 'int',
        'created_at': 'datetime',
        'updated_at': 'datetime'
    }

    attribute_map = {
        'screenshot_id': 'screenshotId',
        'run_id': 'runId',
        'target_id': 'targetId',
        'variant': 'variant',
        'title': 'title',
        'description': 'description',
        'is_primary': 'isPrimary',
        'display_order': 'displayOrder',
        'storage_key': 'storageKey',
        'access_url': 'accessUrl',
        'live_view_url': 'liveViewUrl',
        'session_id': 'sessionId',
        'browser_context_id': 'browserContextId',
        'deep_link_url': 'deepLinkUrl',
        'width': 'width',
        'height': 'height',
        'created_at': 'createdAt',
        'updated_at': 'updatedAt'
    }

    def __init__(self, screenshot_id=None, run_id=None, target_id=None, variant=None, title=None, description=None, is_primary=None, display_order=None, storage_key=None, access_url=None, live_view_url=None, session_id=None, browser_context_id=None, deep_link_url=None, width=None, height=None, created_at=None, updated_at=None, local_vars_configuration=None):  # noqa: E501
        """DevicePreviewScreenshotDto - 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._screenshot_id = None
        self._run_id = None
        self._target_id = None
        self._variant = None
        self._title = None
        self._description = None
        self._is_primary = None
        self._display_order = None
        self._storage_key = None
        self._access_url = None
        self._live_view_url = None
        self._session_id = None
        self._browser_context_id = None
        self._deep_link_url = None
        self._width = None
        self._height = None
        self._created_at = None
        self._updated_at = None
        self.discriminator = None

        self.screenshot_id = screenshot_id
        self.run_id = run_id
        if target_id is not None:
            self.target_id = target_id
        if variant is not None:
            self.variant = variant
        if title is not None:
            self.title = title
        if description is not None:
            self.description = description
        self.is_primary = is_primary
        self.display_order = display_order
        if storage_key is not None:
            self.storage_key = storage_key
        if access_url is not None:
            self.access_url = access_url
        if live_view_url is not None:
            self.live_view_url = live_view_url
        if session_id is not None:
            self.session_id = session_id
        if browser_context_id is not None:
            self.browser_context_id = browser_context_id
        if deep_link_url is not None:
            self.deep_link_url = deep_link_url
        if width is not None:
            self.width = width
        if height is not None:
            self.height = height
        self.created_at = created_at
        self.updated_at = updated_at

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


        :return: The screenshot_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._screenshot_id

    @screenshot_id.setter
    def screenshot_id(self, screenshot_id):
        """Sets the screenshot_id of this DevicePreviewScreenshotDto.


        :param screenshot_id: The screenshot_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and screenshot_id is None:  # noqa: E501
            raise ValueError("Invalid value for `screenshot_id`, must not be `None`")  # noqa: E501

        self._screenshot_id = screenshot_id

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


        :return: The run_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._run_id

    @run_id.setter
    def run_id(self, run_id):
        """Sets the run_id of this DevicePreviewScreenshotDto.


        :param run_id: The run_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: str
        """
        if self.local_vars_configuration.client_side_validation and run_id is None:  # noqa: E501
            raise ValueError("Invalid value for `run_id`, must not be `None`")  # noqa: E501

        self._run_id = run_id

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


        :return: The target_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._target_id

    @target_id.setter
    def target_id(self, target_id):
        """Sets the target_id of this DevicePreviewScreenshotDto.


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

        self._target_id = target_id

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


        :return: The variant of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._variant

    @variant.setter
    def variant(self, variant):
        """Sets the variant of this DevicePreviewScreenshotDto.


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

        self._variant = variant

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


        :return: The title of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this DevicePreviewScreenshotDto.


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

        self._title = title

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


        :return: The description of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this DevicePreviewScreenshotDto.


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

        self._description = description

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


        :return: The is_primary of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: bool
        """
        return self._is_primary

    @is_primary.setter
    def is_primary(self, is_primary):
        """Sets the is_primary of this DevicePreviewScreenshotDto.


        :param is_primary: The is_primary of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: bool
        """
        if self.local_vars_configuration.client_side_validation and is_primary is None:  # noqa: E501
            raise ValueError("Invalid value for `is_primary`, must not be `None`")  # noqa: E501

        self._is_primary = is_primary

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


        :return: The display_order of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: int
        """
        return self._display_order

    @display_order.setter
    def display_order(self, display_order):
        """Sets the display_order of this DevicePreviewScreenshotDto.


        :param display_order: The display_order of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: int
        """
        if self.local_vars_configuration.client_side_validation and display_order is None:  # noqa: E501
            raise ValueError("Invalid value for `display_order`, must not be `None`")  # noqa: E501

        self._display_order = display_order

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


        :return: The storage_key of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._storage_key

    @storage_key.setter
    def storage_key(self, storage_key):
        """Sets the storage_key of this DevicePreviewScreenshotDto.


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

        self._storage_key = storage_key

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


        :return: The access_url of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._access_url

    @access_url.setter
    def access_url(self, access_url):
        """Sets the access_url of this DevicePreviewScreenshotDto.


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

        self._access_url = access_url

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


        :return: The live_view_url of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._live_view_url

    @live_view_url.setter
    def live_view_url(self, live_view_url):
        """Sets the live_view_url of this DevicePreviewScreenshotDto.


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

        self._live_view_url = live_view_url

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


        :return: The session_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._session_id

    @session_id.setter
    def session_id(self, session_id):
        """Sets the session_id of this DevicePreviewScreenshotDto.


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

        self._session_id = session_id

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


        :return: The browser_context_id of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._browser_context_id

    @browser_context_id.setter
    def browser_context_id(self, browser_context_id):
        """Sets the browser_context_id of this DevicePreviewScreenshotDto.


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

        self._browser_context_id = browser_context_id

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


        :return: The deep_link_url of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: str
        """
        return self._deep_link_url

    @deep_link_url.setter
    def deep_link_url(self, deep_link_url):
        """Sets the deep_link_url of this DevicePreviewScreenshotDto.


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

        self._deep_link_url = deep_link_url

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


        :return: The width of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: int
        """
        return self._width

    @width.setter
    def width(self, width):
        """Sets the width of this DevicePreviewScreenshotDto.


        :param width: The width of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: int
        """

        self._width = width

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


        :return: The height of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: int
        """
        return self._height

    @height.setter
    def height(self, height):
        """Sets the height of this DevicePreviewScreenshotDto.


        :param height: The height of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: int
        """

        self._height = height

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


        :return: The created_at of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: datetime
        """
        return self._created_at

    @created_at.setter
    def created_at(self, created_at):
        """Sets the created_at of this DevicePreviewScreenshotDto.


        :param created_at: The created_at of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: datetime
        """
        if self.local_vars_configuration.client_side_validation and created_at is None:  # noqa: E501
            raise ValueError("Invalid value for `created_at`, must not be `None`")  # noqa: E501

        self._created_at = created_at

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


        :return: The updated_at of this DevicePreviewScreenshotDto.  # noqa: E501
        :rtype: datetime
        """
        return self._updated_at

    @updated_at.setter
    def updated_at(self, updated_at):
        """Sets the updated_at of this DevicePreviewScreenshotDto.


        :param updated_at: The updated_at of this DevicePreviewScreenshotDto.  # noqa: E501
        :type: datetime
        """
        if self.local_vars_configuration.client_side_validation and updated_at is None:  # noqa: E501
            raise ValueError("Invalid value for `updated_at`, must not be `None`")  # noqa: E501

        self._updated_at = updated_at

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

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