U
    ccL                     @   s~   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ ej	rjd dlm
Z
mZmZmZmZ d dlmZ G dd deZdS )    N)Enum)ABCMetaabstractmethod)DictListOptionalUnionAny)datetimec                3   @   s   e Zd ZdZdddddZdddddZd	Zd
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<2ZdZe	Z
edLd>d?Zed@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK Zd=S )MRequestu-!  
    A request object that provides the details of the user’s request. The request body contains the parameters necessary for the service to perform its logic and generate a response.


    :param object_type: Describes the type of the request.
    :type object_type: (optional) str
    :param request_id: Represents the unique identifier for the specific request.
    :type request_id: (optional) str
    :param timestamp: Provides the date and time when Alexa sent the request as an ISO 8601 formatted string. Used to verify the request when hosting your skill as a web service.
    :type timestamp: (optional) datetime
    :param locale: A string indicating the user’s locale. For example: en-US. This value is only provided with certain request types.
    :type locale: (optional) str

    .. note::

        This is an abstract class. Use the following mapping, to figure out
        the model class to be instantiated, that sets ``type`` variable.

        | AlexaSkillEvent.SkillEnabled: :py:class:`ask_sdk_model.events.skillevents.skill_enabled_request.SkillEnabledRequest`,
        |
        | AlexaHouseholdListEvent.ListUpdated: :py:class:`ask_sdk_model.services.list_management.list_updated_event_request.ListUpdatedEventRequest`,
        |
        | Alexa.Presentation.APL.UserEvent: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.user_event.UserEvent`,
        |
        | AlexaSkillEvent.SkillDisabled: :py:class:`ask_sdk_model.events.skillevents.skill_disabled_request.SkillDisabledRequest`,
        |
        | AlexaHouseholdListEvent.ItemsCreated: :py:class:`ask_sdk_model.services.list_management.list_items_created_event_request.ListItemsCreatedEventRequest`,
        |
        | SessionResumedRequest: :py:class:`ask_sdk_model.session_resumed_request.SessionResumedRequest`,
        |
        | SessionEndedRequest: :py:class:`ask_sdk_model.session_ended_request.SessionEndedRequest`,
        |
        | Alexa.Presentation.APL.LoadIndexListData: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.load_index_list_data_event.LoadIndexListDataEvent`,
        |
        | Alexa.Presentation.APL.LoadTokenListData: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.load_token_list_data_event.LoadTokenListDataEvent`,
        |
        | AudioPlayer.PlaybackFailed: :py:class:`ask_sdk_model.interfaces.audioplayer.playback_failed_request.PlaybackFailedRequest`,
        |
        | CanFulfillIntentRequest: :py:class:`ask_sdk_model.canfulfill.can_fulfill_intent_request.CanFulfillIntentRequest`,
        |
        | CustomInterfaceController.Expired: :py:class:`ask_sdk_model.interfaces.custom_interface_controller.expired_request.ExpiredRequest`,
        |
        | Alexa.Presentation.HTML.Message: :py:class:`ask_sdk_model.interfaces.alexa.presentation.html.message_request.MessageRequest`,
        |
        | LaunchRequest: :py:class:`ask_sdk_model.launch_request.LaunchRequest`,
        |
        | Alexa.Authorization.Grant: :py:class:`ask_sdk_model.authorization.authorization_grant_request.AuthorizationGrantRequest`,
        |
        | Reminders.ReminderCreated: :py:class:`ask_sdk_model.services.reminder_management.reminder_created_event_request.ReminderCreatedEventRequest`,
        |
        | Alexa.Presentation.APLT.UserEvent: :py:class:`ask_sdk_model.interfaces.alexa.presentation.aplt.user_event.UserEvent`,
        |
        | AlexaHouseholdListEvent.ItemsUpdated: :py:class:`ask_sdk_model.services.list_management.list_items_updated_event_request.ListItemsUpdatedEventRequest`,
        |
        | AlexaHouseholdListEvent.ListCreated: :py:class:`ask_sdk_model.services.list_management.list_created_event_request.ListCreatedEventRequest`,
        |
        | AudioPlayer.PlaybackStarted: :py:class:`ask_sdk_model.interfaces.audioplayer.playback_started_request.PlaybackStartedRequest`,
        |
        | AudioPlayer.PlaybackNearlyFinished: :py:class:`ask_sdk_model.interfaces.audioplayer.playback_nearly_finished_request.PlaybackNearlyFinishedRequest`,
        |
        | CustomInterfaceController.EventsReceived: :py:class:`ask_sdk_model.interfaces.custom_interface_controller.events_received_request.EventsReceivedRequest`,
        |
        | Reminders.ReminderStatusChanged: :py:class:`ask_sdk_model.services.reminder_management.reminder_status_changed_event_request.ReminderStatusChangedEventRequest`,
        |
        | AlexaHouseholdListEvent.ItemsDeleted: :py:class:`ask_sdk_model.services.list_management.list_items_deleted_event_request.ListItemsDeletedEventRequest`,
        |
        | Reminders.ReminderDeleted: :py:class:`ask_sdk_model.services.reminder_management.reminder_deleted_event_request.ReminderDeletedEventRequest`,
        |
        | Connections.Response: :py:class:`ask_sdk_model.interfaces.connections.connections_response.ConnectionsResponse`,
        |
        | AlexaHouseholdListEvent.ListDeleted: :py:class:`ask_sdk_model.services.list_management.list_deleted_event_request.ListDeletedEventRequest`,
        |
        | GameEngine.InputHandlerEvent: :py:class:`ask_sdk_model.interfaces.game_engine.input_handler_event_request.InputHandlerEventRequest`,
        |
        | PlaybackController.PauseCommandIssued: :py:class:`ask_sdk_model.interfaces.playbackcontroller.pause_command_issued_request.PauseCommandIssuedRequest`,
        |
        | PlaybackController.PlayCommandIssued: :py:class:`ask_sdk_model.interfaces.playbackcontroller.play_command_issued_request.PlayCommandIssuedRequest`,
        |
        | AudioPlayer.PlaybackFinished: :py:class:`ask_sdk_model.interfaces.audioplayer.playback_finished_request.PlaybackFinishedRequest`,
        |
        | AlexaSkillEvent.ProactiveSubscriptionChanged: :py:class:`ask_sdk_model.events.skillevents.proactive_subscription_changed_request.ProactiveSubscriptionChangedRequest`,
        |
        | Display.ElementSelected: :py:class:`ask_sdk_model.interfaces.display.element_selected_request.ElementSelectedRequest`,
        |
        | AlexaSkillEvent.SkillPermissionChanged: :py:class:`ask_sdk_model.events.skillevents.permission_changed_request.PermissionChangedRequest`,
        |
        | Reminders.ReminderUpdated: :py:class:`ask_sdk_model.services.reminder_management.reminder_updated_event_request.ReminderUpdatedEventRequest`,
        |
        | Alexa.Presentation.APL.RuntimeError: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.runtime_error_event.RuntimeErrorEvent`,
        |
        | Alexa.Presentation.HTML.RuntimeError: :py:class:`ask_sdk_model.interfaces.alexa.presentation.html.runtime_error_request.RuntimeErrorRequest`,
        |
        | Dialog.InputRequest: :py:class:`ask_sdk_model.dialog.input_request.InputRequest`,
        |
        | IntentRequest: :py:class:`ask_sdk_model.intent_request.IntentRequest`,
        |
        | Dialog.API.Invoked: :py:class:`ask_sdk_model.interfaces.conversations.api_invocation_request.APIInvocationRequest`,
        |
        | Reminders.ReminderStarted: :py:class:`ask_sdk_model.services.reminder_management.reminder_started_event_request.ReminderStartedEventRequest`,
        |
        | AudioPlayer.PlaybackStopped: :py:class:`ask_sdk_model.interfaces.audioplayer.playback_stopped_request.PlaybackStoppedRequest`,
        |
        | PlaybackController.PreviousCommandIssued: :py:class:`ask_sdk_model.interfaces.playbackcontroller.previous_command_issued_request.PreviousCommandIssuedRequest`,
        |
        | AlexaSkillEvent.SkillAccountLinked: :py:class:`ask_sdk_model.events.skillevents.account_linked_request.AccountLinkedRequest`,
        |
        | Messaging.MessageReceived: :py:class:`ask_sdk_model.interfaces.messaging.message_received_request.MessageReceivedRequest`,
        |
        | Connections.Request: :py:class:`ask_sdk_model.interfaces.connections.connections_request.ConnectionsRequest`,
        |
        | System.ExceptionEncountered: :py:class:`ask_sdk_model.interfaces.system.exception_encountered_request.ExceptionEncounteredRequest`,
        |
        | AlexaSkillEvent.SkillPermissionAccepted: :py:class:`ask_sdk_model.events.skillevents.permission_accepted_request.PermissionAcceptedRequest`,
        |
        | PlaybackController.NextCommandIssued: :py:class:`ask_sdk_model.interfaces.playbackcontroller.next_command_issued_request.NextCommandIssuedRequest`,
        |
        | Alexa.Presentation.APLA.RuntimeError: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apla.runtime_error_event.RuntimeErrorEvent`

    strr
   )object_type
request_id	timestamplocaletypeZ	requestIdr   r   FzJask_sdk_model.events.skillevents.skill_enabled_request.SkillEnabledRequestzYask_sdk_model.services.list_management.list_updated_event_request.ListUpdatedEventRequestzDask_sdk_model.interfaces.alexa.presentation.apl.user_event.UserEventzLask_sdk_model.events.skillevents.skill_disabled_request.SkillDisabledRequestzdask_sdk_model.services.list_management.list_items_created_event_request.ListItemsCreatedEventRequestz;ask_sdk_model.session_resumed_request.SessionResumedRequestz7ask_sdk_model.session_ended_request.SessionEndedRequestzaask_sdk_model.interfaces.alexa.presentation.apl.load_index_list_data_event.LoadIndexListDataEventzaask_sdk_model.interfaces.alexa.presentation.apl.load_token_list_data_event.LoadTokenListDataEventzRask_sdk_model.interfaces.audioplayer.playback_failed_request.PlaybackFailedRequestzKask_sdk_model.canfulfill.can_fulfill_intent_request.CanFulfillIntentRequestzSask_sdk_model.interfaces.custom_interface_controller.expired_request.ExpiredRequestzOask_sdk_model.interfaces.alexa.presentation.html.message_request.MessageRequestz*ask_sdk_model.launch_request.LaunchRequestzQask_sdk_model.authorization.authorization_grant_request.AuthorizationGrantRequestzeask_sdk_model.services.reminder_management.reminder_created_event_request.ReminderCreatedEventRequestzEask_sdk_model.interfaces.alexa.presentation.aplt.user_event.UserEventzdask_sdk_model.services.list_management.list_items_updated_event_request.ListItemsUpdatedEventRequestzYask_sdk_model.services.list_management.list_created_event_request.ListCreatedEventRequestzTask_sdk_model.interfaces.audioplayer.playback_started_request.PlaybackStartedRequestzcask_sdk_model.interfaces.audioplayer.playback_nearly_finished_request.PlaybackNearlyFinishedRequestzbask_sdk_model.interfaces.custom_interface_controller.events_received_request.EventsReceivedRequestzrask_sdk_model.services.reminder_management.reminder_status_changed_event_request.ReminderStatusChangedEventRequestzdask_sdk_model.services.list_management.list_items_deleted_event_request.ListItemsDeletedEventRequestzeask_sdk_model.services.reminder_management.reminder_deleted_event_request.ReminderDeletedEventRequestzMask_sdk_model.interfaces.connections.connections_response.ConnectionsResponsezYask_sdk_model.services.list_management.list_deleted_event_request.ListDeletedEventRequestzYask_sdk_model.interfaces.game_engine.input_handler_event_request.InputHandlerEventRequestzbask_sdk_model.interfaces.playbackcontroller.pause_command_issued_request.PauseCommandIssuedRequestz`ask_sdk_model.interfaces.playbackcontroller.play_command_issued_request.PlayCommandIssuedRequestzVask_sdk_model.interfaces.audioplayer.playback_finished_request.PlaybackFinishedRequestzkask_sdk_model.events.skillevents.proactive_subscription_changed_request.ProactiveSubscriptionChangedRequestzPask_sdk_model.interfaces.display.element_selected_request.ElementSelectedRequestzTask_sdk_model.events.skillevents.permission_changed_request.PermissionChangedRequestzeask_sdk_model.services.reminder_management.reminder_updated_event_request.ReminderUpdatedEventRequestzUask_sdk_model.interfaces.alexa.presentation.apl.runtime_error_event.RuntimeErrorEventzZask_sdk_model.interfaces.alexa.presentation.html.runtime_error_request.RuntimeErrorRequestz/ask_sdk_model.dialog.input_request.InputRequestz*ask_sdk_model.intent_request.IntentRequestzRask_sdk_model.interfaces.conversations.api_invocation_request.APIInvocationRequestzeask_sdk_model.services.reminder_management.reminder_started_event_request.ReminderStartedEventRequestzTask_sdk_model.interfaces.audioplayer.playback_stopped_request.PlaybackStoppedRequestzhask_sdk_model.interfaces.playbackcontroller.previous_command_issued_request.PreviousCommandIssuedRequestzLask_sdk_model.events.skillevents.account_linked_request.AccountLinkedRequestzRask_sdk_model.interfaces.messaging.message_received_request.MessageReceivedRequestzKask_sdk_model.interfaces.connections.connections_request.ConnectionsRequestzYask_sdk_model.interfaces.system.exception_encountered_request.ExceptionEncounteredRequestzVask_sdk_model.events.skillevents.permission_accepted_request.PermissionAcceptedRequestz`ask_sdk_model.interfaces.playbackcontroller.next_command_issued_request.NextCommandIssuedRequestzVask_sdk_model.interfaces.alexa.presentation.apla.runtime_error_event.RuntimeErrorEvent)2zAlexaSkillEvent.SkillEnabledz#AlexaHouseholdListEvent.ListUpdatedz Alexa.Presentation.APL.UserEventzAlexaSkillEvent.SkillDisabledz$AlexaHouseholdListEvent.ItemsCreatedZSessionResumedRequestZSessionEndedRequestz(Alexa.Presentation.APL.LoadIndexListDataz(Alexa.Presentation.APL.LoadTokenListDatazAudioPlayer.PlaybackFailedZCanFulfillIntentRequestz!CustomInterfaceController.ExpiredzAlexa.Presentation.HTML.MessageZLaunchRequestzAlexa.Authorization.GrantzReminders.ReminderCreatedz!Alexa.Presentation.APLT.UserEventz$AlexaHouseholdListEvent.ItemsUpdatedz#AlexaHouseholdListEvent.ListCreatedzAudioPlayer.PlaybackStartedz"AudioPlayer.PlaybackNearlyFinishedz(CustomInterfaceController.EventsReceivedzReminders.ReminderStatusChangedz$AlexaHouseholdListEvent.ItemsDeletedzReminders.ReminderDeletedzConnections.Responsez#AlexaHouseholdListEvent.ListDeletedzGameEngine.InputHandlerEventz%PlaybackController.PauseCommandIssuedz$PlaybackController.PlayCommandIssuedzAudioPlayer.PlaybackFinishedz,AlexaSkillEvent.ProactiveSubscriptionChangedzDisplay.ElementSelectedz&AlexaSkillEvent.SkillPermissionChangedzReminders.ReminderUpdatedz#Alexa.Presentation.APL.RuntimeErrorz$Alexa.Presentation.HTML.RuntimeErrorzDialog.InputRequestZIntentRequestzDialog.API.InvokedzReminders.ReminderStartedzAudioPlayer.PlaybackStoppedz(PlaybackController.PreviousCommandIssuedz"AlexaSkillEvent.SkillAccountLinkedzMessaging.MessageReceivedzConnections.RequestzSystem.ExceptionEncounteredz'AlexaSkillEvent.SkillPermissionAcceptedz$PlaybackController.NextCommandIssuedz$Alexa.Presentation.APLA.RuntimeErrorNc                 C   s"   d| _ || _|| _|| _|| _dS )u;  A request object that provides the details of the user’s request. The request body contains the parameters necessary for the service to perform its logic and generate a response.

        :param object_type: Describes the type of the request.
        :type object_type: (optional) str
        :param request_id: Represents the unique identifier for the specific request.
        :type request_id: (optional) str
        :param timestamp: Provides the date and time when Alexa sent the request as an ISO 8601 formatted string. Used to verify the request when hosting your skill as a web service.
        :type timestamp: (optional) datetime
        :param locale: A string indicating the user’s locale. For example: en-US. This value is only provided with certain request types.
        :type locale: (optional) str
        N)Z_Request__discriminator_valuer   r   r   r   )selfr   r   r   r    r   9/tmp/pip-unpacked-wheel-urk6bcke/ask_sdk_model/request.py__init__   s
    zRequest.__init__c                 C   s   || j  }| j|S )z:Returns the real base class specified by the discriminator)json_discriminator_keydiscriminator_value_class_mapget)clsdataZdiscriminator_valuer   r   r   get_real_child_model   s    
zRequest.get_real_child_modelc                 C   s   i }t | jD ]\}}t| |}t|trDttdd |||< qt|trZ|j||< qt	|drr|
 ||< qt|trttdd | ||< q|||< q|S )z&Returns the model properties as a dictc                 S   s&   t | dr|  S t| tr"| jS | S )Nto_dicthasattrr   
isinstancer   value)xr   r   r   <lambda>  s   z!Request.to_dict.<locals>.<lambda>r   c                 S   sF   t | d dr"| d | d  fS t| d trB| d | d jfS | S )N   r   r   r   )itemr   r   r   r"     s
    )six	iteritemsdeserialized_typesgetattrr   listmapr   r    r   r   dictitems)r   resultattr_r    r   r   r   r      s&    





zRequest.to_dictc                 C   s   t |  S )z.Returns the string representation of the model)pprintpformatr   r   r   r   r   to_str  s    zRequest.to_strc                 C   s   |   S )zFor `print` and `pprint`)r3   r2   r   r   r   __repr__  s    zRequest.__repr__c                 C   s   t |tsdS | j|jkS )z&Returns true if both objects are equalF)r   r   __dict__r   otherr   r   r   __eq__!  s    
zRequest.__eq__c                 C   s
   | |k S )z*Returns true if both objects are not equalr   r6   r   r   r   __ne__)  s    zRequest.__ne__)NNNN)__name__
__module____qualname____doc__r'   Zattribute_mapZsupports_multiple_typesr   r   r   __metaclass__r   r   classmethodr   r   r3   r4   r8   r9   r   r   r   r   r      s   x5
r   )r0   rer%   typingenumr   abcr   r   TYPE_CHECKINGr   r   r   r   r	   r
   objectr   r   r   r   r   <module>   s   