# coding: utf-8

"""
    Adobe Target Delivery API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six


class Context(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 = {
        'channel': 'ChannelType',
        'mobile_platform': 'MobilePlatform',
        'application': 'Application',
        'screen': 'Screen',
        'window': 'Window',
        'browser': 'Browser',
        'address': 'Address',
        'geo': 'Geo',
        'time_offset_in_minutes': 'float',
        'user_agent': 'str',
        'beacon': 'bool'
    }

    attribute_map = {
        'channel': 'channel',
        'mobile_platform': 'mobilePlatform',
        'application': 'application',
        'screen': 'screen',
        'window': 'window',
        'browser': 'browser',
        'address': 'address',
        'geo': 'geo',
        'time_offset_in_minutes': 'timeOffsetInMinutes',
        'user_agent': 'userAgent',
        'beacon': 'beacon'
    }

    def __init__(self, channel=None, mobile_platform=None, application=None, screen=None, window=None, browser=None, address=None, geo=None, time_offset_in_minutes=None, user_agent=None, beacon=False):
        """Context - a model defined in OpenAPI"""

        self._channel = None
        self._mobile_platform = None
        self._application = None
        self._screen = None
        self._window = None
        self._browser = None
        self._address = None
        self._geo = None
        self._time_offset_in_minutes = None
        self._user_agent = None
        self._beacon = None
        self.discriminator = None

        self.channel = channel
        if mobile_platform is not None:
            self.mobile_platform = mobile_platform
        if application is not None:
            self.application = application
        if screen is not None:
            self.screen = screen
        if window is not None:
            self.window = window
        if browser is not None:
            self.browser = browser
        if address is not None:
            self.address = address
        if geo is not None:
            self.geo = geo
        if time_offset_in_minutes is not None:
            self.time_offset_in_minutes = time_offset_in_minutes
        if user_agent is not None:
            self.user_agent = user_agent
        if beacon is not None:
            self.beacon = beacon

    @property
    def channel(self):
        """Gets the channel of this Context.


        :return: The channel of this Context.
        :rtype: ChannelType
        """
        return self._channel

    @channel.setter
    def channel(self, channel):
        """Sets the channel of this Context.


        :param channel: The channel of this Context.
        :type: ChannelType
        """
        if channel is None:
            raise ValueError("Invalid value for `channel`, must not be `None`")

        self._channel = channel

    @property
    def mobile_platform(self):
        """Gets the mobile_platform of this Context.


        :return: The mobile_platform of this Context.
        :rtype: MobilePlatform
        """
        return self._mobile_platform

    @mobile_platform.setter
    def mobile_platform(self, mobile_platform):
        """Sets the mobile_platform of this Context.


        :param mobile_platform: The mobile_platform of this Context.
        :type: MobilePlatform
        """

        self._mobile_platform = mobile_platform

    @property
    def application(self):
        """Gets the application of this Context.


        :return: The application of this Context.
        :rtype: Application
        """
        return self._application

    @application.setter
    def application(self, application):
        """Sets the application of this Context.


        :param application: The application of this Context.
        :type: Application
        """

        self._application = application

    @property
    def screen(self):
        """Gets the screen of this Context.


        :return: The screen of this Context.
        :rtype: Screen
        """
        return self._screen

    @screen.setter
    def screen(self, screen):
        """Sets the screen of this Context.


        :param screen: The screen of this Context.
        :type: Screen
        """

        self._screen = screen

    @property
    def window(self):
        """Gets the window of this Context.


        :return: The window of this Context.
        :rtype: Window
        """
        return self._window

    @window.setter
    def window(self, window):
        """Sets the window of this Context.


        :param window: The window of this Context.
        :type: Window
        """

        self._window = window

    @property
    def browser(self):
        """Gets the browser of this Context.


        :return: The browser of this Context.
        :rtype: Browser
        """
        return self._browser

    @browser.setter
    def browser(self, browser):
        """Sets the browser of this Context.


        :param browser: The browser of this Context.
        :type: Browser
        """

        self._browser = browser

    @property
    def address(self):
        """Gets the address of this Context.


        :return: The address of this Context.
        :rtype: Address
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this Context.


        :param address: The address of this Context.
        :type: Address
        """

        self._address = address

    @property
    def geo(self):
        """Gets the geo of this Context.


        :return: The geo of this Context.
        :rtype: Geo
        """
        return self._geo

    @geo.setter
    def geo(self, geo):
        """Sets the geo of this Context.


        :param geo: The geo of this Context.
        :type: Geo
        """

        self._geo = geo

    @property
    def time_offset_in_minutes(self):
        """Gets the time_offset_in_minutes of this Context.

        Specifies minutes from UTC for specific client

        :return: The time_offset_in_minutes of this Context.
        :rtype: float
        """
        return self._time_offset_in_minutes

    @time_offset_in_minutes.setter
    def time_offset_in_minutes(self, time_offset_in_minutes):
        """Sets the time_offset_in_minutes of this Context.

        Specifies minutes from UTC for specific client

        :param time_offset_in_minutes: The time_offset_in_minutes of this Context.
        :type: float
        """

        self._time_offset_in_minutes = time_offset_in_minutes

    @property
    def user_agent(self):
        """Gets the user_agent of this Context.

        User-Agent should be sent only via this property. HTTP header User-Agent is ignored.

        :return: The user_agent of this Context.
        :rtype: str
        """
        return self._user_agent

    @user_agent.setter
    def user_agent(self, user_agent):
        """Sets the user_agent of this Context.

        User-Agent should be sent only via this property. HTTP header User-Agent is ignored.

        :param user_agent: The user_agent of this Context.
        :type: str
        """

        self._user_agent = user_agent

    @property
    def beacon(self):
        """Gets the beacon of this Context.

        In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body. 

        :return: The beacon of this Context.
        :rtype: bool
        """
        return self._beacon

    @beacon.setter
    def beacon(self, beacon):
        """Sets the beacon of this Context.

        In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body. 

        :param beacon: The beacon of this Context.
        :type: bool
        """

        self._beacon = beacon

    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, Context):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other

# coding: utf-8

"""
    Adobe Target Delivery API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six


class Context(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 = {
        'channel': 'ChannelType',
        'mobile_platform': 'MobilePlatform',
        'application': 'Application',
        'screen': 'Screen',
        'window': 'Window',
        'browser': 'Browser',
        'address': 'Address',
        'geo': 'Geo',
        'time_offset_in_minutes': 'float',
        'user_agent': 'str',
        'beacon': 'bool'
    }

    attribute_map = {
        'channel': 'channel',
        'mobile_platform': 'mobilePlatform',
        'application': 'application',
        'screen': 'screen',
        'window': 'window',
        'browser': 'browser',
        'address': 'address',
        'geo': 'geo',
        'time_offset_in_minutes': 'timeOffsetInMinutes',
        'user_agent': 'userAgent',
        'beacon': 'beacon'
    }

    def __init__(self, channel=None, mobile_platform=None, application=None, screen=None, window=None, browser=None, address=None, geo=None, time_offset_in_minutes=None, user_agent=None, beacon=False):
        """Context - a model defined in OpenAPI"""

        self._channel = None
        self._mobile_platform = None
        self._application = None
        self._screen = None
        self._window = None
        self._browser = None
        self._address = None
        self._geo = None
        self._time_offset_in_minutes = None
        self._user_agent = None
        self._beacon = None
        self.discriminator = None

        self.channel = channel
        if mobile_platform is not None:
            self.mobile_platform = mobile_platform
        if application is not None:
            self.application = application
        if screen is not None:
            self.screen = screen
        if window is not None:
            self.window = window
        if browser is not None:
            self.browser = browser
        if address is not None:
            self.address = address
        if geo is not None:
            self.geo = geo
        if time_offset_in_minutes is not None:
            self.time_offset_in_minutes = time_offset_in_minutes
        if user_agent is not None:
            self.user_agent = user_agent
        if beacon is not None:
            self.beacon = beacon

    @property
    def channel(self):
        """Gets the channel of this Context.


        :return: The channel of this Context.
        :rtype: ChannelType
        """
        return self._channel

    @channel.setter
    def channel(self, channel):
        """Sets the channel of this Context.


        :param channel: The channel of this Context.
        :type: ChannelType
        """
        if channel is None:
            raise ValueError("Invalid value for `channel`, must not be `None`")

        self._channel = channel

    @property
    def mobile_platform(self):
        """Gets the mobile_platform of this Context.


        :return: The mobile_platform of this Context.
        :rtype: MobilePlatform
        """
        return self._mobile_platform

    @mobile_platform.setter
    def mobile_platform(self, mobile_platform):
        """Sets the mobile_platform of this Context.


        :param mobile_platform: The mobile_platform of this Context.
        :type: MobilePlatform
        """

        self._mobile_platform = mobile_platform

    @property
    def application(self):
        """Gets the application of this Context.


        :return: The application of this Context.
        :rtype: Application
        """
        return self._application

    @application.setter
    def application(self, application):
        """Sets the application of this Context.


        :param application: The application of this Context.
        :type: Application
        """

        self._application = application

    @property
    def screen(self):
        """Gets the screen of this Context.


        :return: The screen of this Context.
        :rtype: Screen
        """
        return self._screen

    @screen.setter
    def screen(self, screen):
        """Sets the screen of this Context.


        :param screen: The screen of this Context.
        :type: Screen
        """

        self._screen = screen

    @property
    def window(self):
        """Gets the window of this Context.


        :return: The window of this Context.
        :rtype: Window
        """
        return self._window

    @window.setter
    def window(self, window):
        """Sets the window of this Context.


        :param window: The window of this Context.
        :type: Window
        """

        self._window = window

    @property
    def browser(self):
        """Gets the browser of this Context.


        :return: The browser of this Context.
        :rtype: Browser
        """
        return self._browser

    @browser.setter
    def browser(self, browser):
        """Sets the browser of this Context.


        :param browser: The browser of this Context.
        :type: Browser
        """

        self._browser = browser

    @property
    def address(self):
        """Gets the address of this Context.


        :return: The address of this Context.
        :rtype: Address
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this Context.


        :param address: The address of this Context.
        :type: Address
        """

        self._address = address

    @property
    def geo(self):
        """Gets the geo of this Context.


        :return: The geo of this Context.
        :rtype: Geo
        """
        return self._geo

    @geo.setter
    def geo(self, geo):
        """Sets the geo of this Context.


        :param geo: The geo of this Context.
        :type: Geo
        """

        self._geo = geo

    @property
    def time_offset_in_minutes(self):
        """Gets the time_offset_in_minutes of this Context.

        Specifies minutes from UTC for specific client

        :return: The time_offset_in_minutes of this Context.
        :rtype: float
        """
        return self._time_offset_in_minutes

    @time_offset_in_minutes.setter
    def time_offset_in_minutes(self, time_offset_in_minutes):
        """Sets the time_offset_in_minutes of this Context.

        Specifies minutes from UTC for specific client

        :param time_offset_in_minutes: The time_offset_in_minutes of this Context.
        :type: float
        """

        self._time_offset_in_minutes = time_offset_in_minutes

    @property
    def user_agent(self):
        """Gets the user_agent of this Context.

        User-Agent should be sent only via this property. HTTP header User-Agent is ignored.

        :return: The user_agent of this Context.
        :rtype: str
        """
        return self._user_agent

    @user_agent.setter
    def user_agent(self, user_agent):
        """Sets the user_agent of this Context.

        User-Agent should be sent only via this property. HTTP header User-Agent is ignored.

        :param user_agent: The user_agent of this Context.
        :type: str
        """

        self._user_agent = user_agent

    @property
    def beacon(self):
        """Gets the beacon of this Context.

        In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body. 

        :return: The beacon of this Context.
        :rtype: bool
        """
        return self._beacon

    @beacon.setter
    def beacon(self, beacon):
        """Sets the beacon of this Context.

        In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body. 

        :param beacon: The beacon of this Context.
        :type: bool
        """

        self._beacon = beacon

    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, Context):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other

# coding: utf-8 Adobe Target Delivery API      No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501      The version of the OpenAPI document: 1.0.0     Generated by: https://openapi-generator.tech # noqa: F401 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. Context - a model defined in OpenAPI Gets the channel of this Context.           :return: The channel of this Context.         :rtype: ChannelType Sets the channel of this Context.           :param channel: The channel of this Context.         :type: ChannelType Gets the mobile_platform of this Context.           :return: The mobile_platform of this Context.         :rtype: MobilePlatform Sets the mobile_platform of this Context.           :param mobile_platform: The mobile_platform of this Context.         :type: MobilePlatform Gets the application of this Context.           :return: The application of this Context.         :rtype: Application Sets the application of this Context.           :param application: The application of this Context.         :type: Application Gets the screen of this Context.           :return: The screen of this Context.         :rtype: Screen Sets the screen of this Context.           :param screen: The screen of this Context.         :type: Screen Gets the window of this Context.           :return: The window of this Context.         :rtype: Window Sets the window of this Context.           :param window: The window of this Context.         :type: Window Gets the browser of this Context.           :return: The browser of this Context.         :rtype: Browser Sets the browser of this Context.           :param browser: The browser of this Context.         :type: Browser Gets the address of this Context.           :return: The address of this Context.         :rtype: Address Sets the address of this Context.           :param address: The address of this Context.         :type: Address Gets the geo of this Context.           :return: The geo of this Context.         :rtype: Geo Sets the geo of this Context.           :param geo: The geo of this Context.         :type: Geo Gets the time_offset_in_minutes of this Context.          Specifies minutes from UTC for specific client          :return: The time_offset_in_minutes of this Context.         :rtype: float Sets the time_offset_in_minutes of this Context.          Specifies minutes from UTC for specific client          :param time_offset_in_minutes: The time_offset_in_minutes of this Context.         :type: float Gets the user_agent of this Context.          User-Agent should be sent only via this property. HTTP header User-Agent is ignored.          :return: The user_agent of this Context.         :rtype: str Sets the user_agent of this Context.          User-Agent should be sent only via this property. HTTP header User-Agent is ignored.          :param user_agent: The user_agent of this Context.         :type: str Gets the beacon of this Context.          In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body.           :return: The beacon of this Context.         :rtype: bool Sets the beacon of this Context.          In case beacon = true is provided in the request, the server will return a 204 No Content response with no response body.           :param beacon: The beacon of this Context.         :type: bool Returns the model properties as a dict Returns the string representation of the model For `print` and `pprint` Returns true if both objects are equal Returns true if both objects are not equal