# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server import util


class MethodInvoke(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, method_name=None, payload=None, response_timeout_in_seconds=None, connect_timeout_in_seconds=None):  # noqa: E501
        """MethodInvoke - a model defined in Swagger

        :param method_name: The method_name of this MethodInvoke.  # noqa: E501
        :type method_name: str
        :param payload: The payload of this MethodInvoke.  # noqa: E501
        :type payload: object
        :param response_timeout_in_seconds: The response_timeout_in_seconds of this MethodInvoke.  # noqa: E501
        :type response_timeout_in_seconds: int
        :param connect_timeout_in_seconds: The connect_timeout_in_seconds of this MethodInvoke.  # noqa: E501
        :type connect_timeout_in_seconds: int
        """
        self.swagger_types = {
            'method_name': str,
            'payload': object,
            'response_timeout_in_seconds': int,
            'connect_timeout_in_seconds': int
        }

        self.attribute_map = {
            'method_name': 'methodName',
            'payload': 'payload',
            'response_timeout_in_seconds': 'responseTimeoutInSeconds',
            'connect_timeout_in_seconds': 'connectTimeoutInSeconds'
        }

        self._method_name = method_name
        self._payload = payload
        self._response_timeout_in_seconds = response_timeout_in_seconds
        self._connect_timeout_in_seconds = connect_timeout_in_seconds

    @classmethod
    def from_dict(cls, dikt):
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The methodInvoke of this MethodInvoke.  # noqa: E501
        :rtype: MethodInvoke
        """
        return util.deserialize_model(dikt, cls)

    @property
    def method_name(self):
        """Gets the method_name of this MethodInvoke.

        name of method to invoke  # noqa: E501

        :return: The method_name of this MethodInvoke.
        :rtype: str
        """
        return self._method_name

    @method_name.setter
    def method_name(self, method_name):
        """Sets the method_name of this MethodInvoke.

        name of method to invoke  # noqa: E501

        :param method_name: The method_name of this MethodInvoke.
        :type method_name: str
        """

        self._method_name = method_name

    @property
    def payload(self):
        """Gets the payload of this MethodInvoke.

        payload to send to the method  # noqa: E501

        :return: The payload of this MethodInvoke.
        :rtype: object
        """
        return self._payload

    @payload.setter
    def payload(self, payload):
        """Sets the payload of this MethodInvoke.

        payload to send to the method  # noqa: E501

        :param payload: The payload of this MethodInvoke.
        :type payload: object
        """

        self._payload = payload

    @property
    def response_timeout_in_seconds(self):
        """Gets the response_timeout_in_seconds of this MethodInvoke.

        number of seconds to wait for a response  # noqa: E501

        :return: The response_timeout_in_seconds of this MethodInvoke.
        :rtype: int
        """
        return self._response_timeout_in_seconds

    @response_timeout_in_seconds.setter
    def response_timeout_in_seconds(self, response_timeout_in_seconds):
        """Sets the response_timeout_in_seconds of this MethodInvoke.

        number of seconds to wait for a response  # noqa: E501

        :param response_timeout_in_seconds: The response_timeout_in_seconds of this MethodInvoke.
        :type response_timeout_in_seconds: int
        """

        self._response_timeout_in_seconds = response_timeout_in_seconds

    @property
    def connect_timeout_in_seconds(self):
        """Gets the connect_timeout_in_seconds of this MethodInvoke.

        number of seconds to wait for the module to connect  # noqa: E501

        :return: The connect_timeout_in_seconds of this MethodInvoke.
        :rtype: int
        """
        return self._connect_timeout_in_seconds

    @connect_timeout_in_seconds.setter
    def connect_timeout_in_seconds(self, connect_timeout_in_seconds):
        """Sets the connect_timeout_in_seconds of this MethodInvoke.

        number of seconds to wait for the module to connect  # noqa: E501

        :param connect_timeout_in_seconds: The connect_timeout_in_seconds of this MethodInvoke.
        :type connect_timeout_in_seconds: int
        """

        self._connect_timeout_in_seconds = connect_timeout_in_seconds
