o
    eT                     @   sP   d Z ddlmZmZmZ ddlmZ ddlT G dd deZG dd deZ	d	S )
z(
Call class - along with its list class
    )ListResponseObjectPlivoResourcePlivoResourceInterface)to_param_dict)*c                   @   s  e Zd Zd ZdZ					d*ddZdd Z							d+ddZ							d+d	d
Zdd Z	d,ddZ
d,ddZdd Z					d-ddZ					d*ddZdd Zdd Zdd Zdd Z							d+d d!Zd"d# Zd$d% Zd&d' Zd(d) ZdS ).Call	call_uuidNc                 C   "   | j jj| jfi t| jt S N)clientcallsupdateidr   locals)selflegsaleg_urlaleg_methodbleg_urlbleg_method r   H/var/www/html/venv/lib/python3.10/site-packages/plivo/resources/calls.pyr      s   zCall.updatec                 C      | j j| jS r
   )r   r   getr   r   r   r   r   r         zCall.getc                 C   r	   r
   )r   r   recordr   r   r   r   
time_limitfile_formattranscription_typetranscription_urltranscription_methodcallback_urlcallback_methodr   r   r   r      s   zCall.recordc                 C   r	   r
   )r   r   start_recordingr   r   r   r   r   r   r   r%   '   s   zCall.start_recordingc                 C   r   r
   )r   r   stop_recordingr   r   r   r   r   r&   4   r   zCall.stop_recordingc                 C   "   | j jj| jfi t| jt S r
   r   r   playr   r   start_playingr   r   urlslengthr   loopmixr   r   r   r)   7   
   z	Call.playc                 C   r'   r
   r(   r+   r   r   r   r*   <   r0   zCall.start_playingc                 C   r   r
   )r   r   stop_playingr   r   r   r   r   r1   A   r   zCall.stop_playingTc	           	      C   r'   r
   )r   r   speakr   r   r*   r   )	r   r   textvoicelanguager   r.   r/   is_voice_requestr   r   r   r2   D   s
   z
Call.speakc                 C   r'   r
   )r   r   start_speakingr   r   r*   r   )r   r3   r4   r5   r   r.   r/   r   r   r   r7   P   s   zCall.start_speakingc                 C   r   r
   )r   r   stop_speakingr   r   r   r   r   r8   \   r   zCall.stop_speakingc                 C   r'   r
   )r   r   send_digitsr   r   r*   r   )r   digitslegr   r   r   r9   _   s
   zCall.send_digitsc                 C   r   r
   r   r   deleter   r   r   r   r   r=   d   r   zCall.deletec                 C   r   r
   r<   r   r   r   r   hangupg   r   zCall.hangupc	           	      C   $   | j jj| jfi t|  t S r
   )r   r   start_streamr   r   r   )	r   service_urlbidirectionalaudio_trackstream_timeoutstatus_callback_urlstatus_callback_methodcontent_typeextra_headersr   r   r   r@   j   s   	zCall.start_streamc                 C   r?   r
   )r   r   delete_specific_streamr   r   r   r   	stream_idr   r   r   rI   x      zCall.delete_specific_streamc                 C   r?   r
   )r   r   delete_all_streamsr   r   r   r   r   r   r   rM         zCall.delete_all_streamsc                 C   r?   r
   )r   r   get_details_of_specific_streamr   r   r   rJ   r   r   r   rO      rL   z#Call.get_details_of_specific_streamc                 C   s$   | j jj| jfi t|  t S r
   )r   r   get_all_streamsr   r   rO   r   r   r   r   r   rP      rN   zCall.get_all_streams)NNNNNNNNNNNN)NNNN)NNNNNT)__name__
__module____qualname___name_identifier_stringr   r   r   r%   r&   r)   r*   r1   r2   r7   r8   r9   r=   r>   r@   rI   rM   rO   rP   r   r   r   r   r      st    
	






r   c                   @   s  e Zd ZeZedii de gdeee	j
ddgde gdeee	j
gdee gdeee	j
gd	ee gd
eee	j
gdee gdeee	j
gdee gdeee	j
gdeee	j
gdeeegdeee	j
gdeee	j edd ddgdee gdeee	j
g																						djddZeee geee	j
ed gee geeee	j
ddgeeee	j ed!d d"geeee	j ed#d d$geee	j
geeee	j geee	j
gee geee	j
gd%															&	'						dkd(d)Zeee	j
gee geee	j
gd*		dld+d,Zeee	j
gee	j
ed-gee geee	j
geee	j
gee gd.							dmd/d0Zeee	j
gee geee	j
gd*							dmd1d2Zeee	j
gd3							dmd4d5Zeee	j
gd3							dmd6d7Zdld8d9Zeee	j
gee geee	j
gd*d:d; Zeee	j
gd3						dnd<d=Zeee	j
gd3						dnd>d?Zdld@dAZeee	j
gee geee	j
gd*dldBdCZ eee	j
gee geee	j
gd*							dmdDdEZ!eee	j
gd3							dmdFdGZ"eee	j
gd3dldHdIZ#eee geee	j
gdJdldKdLZ$eee	j
gee geee	j
gd*dodMdNZ%eee	j
gee geee	j
gd*		dldOdPZ&eee	j
gd3dQdR Z'dSdT Z(dldUdVZ)dWdX Z*dldYdZZ+d[d\ Z,eee	j
gee	j
gd]							dmd^d_Z-eee	j
gee	j
gd`dadb Z.eee	j
gd3dcdd Z/eee	j
gee	j
gd`dedf Z0eee	j
gd3dgdh Z1dS )pCallsfrom_to_<)sep
answer_urlanswer_method
hangup_urlhangup_methodfallback_urlfallback_methodring_urlring_methodmachine_detection_urlmachine_detection_methodcaller_nameerror_if_parent_not_foundparent_call_uuidring_timeoutc                 C      d| kS Nr   r   )ri   r   r   r   <lambda>       zCalls.<lambda>z0 <= ring_timeout)messager#   r$   POSTN  x   Fc                 C   s4   || dv rtd| jjddt| jt ddS )NrZ   z"src and destination cannot overlapro   r   Tr6   )splitValidationErrorr   requestr   creater   )r   rX   rY   r\   r]   rb   rc   r^   r_   r`   ra   rf   r9   send_on_preanswerr   hangup_on_ringmachine_detectionmachine_detection_timerd   re   sip_headersri   rh   rg   r#   r$   r   r   r   rw      s   3zCalls.create)inboundoutboundc                 C   s   d|   k o	dkS   S )Nr      r   )limitr   r   r   rl      s    z0 < limit <= 20c                 C   rj   rk   r   )offsetr   r   r   rl      rm   z0 <= offset)
subaccountcall_directionfrom_number	to_numberr   r   rh   hangup_cause_codehangup_sourcer#   r$   r   r   c                 C   sB   |r| j jddt| jt ddS | j jddt| jt tddS )NGETrr   Trs   )response_typer6   )r   rv   r   listr   r   )r   r   r   call_direction__ltcall_direction__ltecall_direction__gtcall_direction__gteend_time__ltend_time__lteend_time__gtend_time__gteend_timer   r   bill_durationr   r   statusrh   r   r   r#   r$   r   r   r   r      s   <z
Calls.list)r   r#   r$   c                 C   "   | j jdd|ft| jt ddS )Nr   r   Trs   )r   rv   r   r   r   r   r   r#   r$   r   r   r   r     s   "	z	Calls.get)alegblegboth)r   r   r   r   r   r   c	           	      C   r   )Nro   r   Trs   )r   rv   r   r   r   	r   r   r   r   r   r   r   r#   r$   r   r   r   r   $  s   zCalls.updatec	           	   
   C   s   | j ||||||||dS )N)r   r   r   r   r   r#   r$   )r   r   r   r   r   transfer9  s   zCalls.transfer)r   c	           	      C   s   | j di t| j t S Nr   )r%   r   r   	r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   Q  s   
zCalls.recordc	           	      C   $   | j jdd|dft| jt ddS )Nro   r   RecordTrs   )r   rv   r   r%   r   r   r   r   r   r%   ^  s   
zCalls.start_recordingc                 C      | j j|||S r
   )r   r   r&   r   r   r   r   record_stopl     zCalls.record_stopc                 C   r   )NDELETEr   r   Trs   )r   rv   r   r&   r   r   r   r   r   r&   o     zCalls.stop_recordingc	           	      C   s   | j di t| jt S r   )r*   r   r)   r   	r   r   r,   r-   r   r.   r/   r#   r$   r   r   r   r)   w  s   
z
Calls.playc	           	      C   r   )Nro   r   PlayTrs   )r   rv   r   r)   r   r   r   r   r   r*     s   
zCalls.start_playingc                 C   r   r
   )r   r   r1   r   r   r   r   	play_stop  r   zCalls.play_stopc                 C   r   )Nr   r   r   Trs   )r   rv   r   r1   r   r   r   r   r   r1     s   zCalls.stop_playingc
           
      C   s   |  |||||||||		S r
   )r7   
r   r   r3   r4   r5   r   r.   r/   r#   r$   r   r   r   r2     s   zCalls.speakc
           
      C   r   )Nro   r   SpeakTrs   )r   rv   r   r7   r   r   r   r   r   r7     s   zCalls.start_speakingc                 C   r   )Nr   r   r   Trs   )r   rv   r   r8   r   r   r   r   r   r8     s   zCalls.stop_speaking)r#   r$   c                 C   r   r
   )r   r   r8   r   r   r   r   
speak_stop  s   zCalls.speak_stopc                 C   r   )Nro   r   DTMFTrs   )r   rv   r   r9   r   )r   r   r:   r;   r#   r$   r   r   r   r9     r   zCalls.send_digitsc                 C   r   )Nr   r   Trs   )r   rv   r   r=   r   r   r   r   r   r=     s   	zCalls.deletec                 C      | j j|S r
   )r   r   r=   r   r   r   r   r   r>     s   zCalls.hangupc                 C   s   | j jdd|fddS )Nr   RequestTrs   r   rv   )r   request_uuidr   r   r   cancel  s   zCalls.cancelc                 C      | j j||S r
   )r   
live_callslist_idsr   r   r   r   r   r   live_call_list_ids  r   zCalls.live_call_list_idsc                 C   r   r
   )r   r   r   r   _idr   r   r   live_call_get     zCalls.live_call_getc                 C   r   r
   )r   queued_callsr   r   r   r   r   queued_call_list_ids  r   zCalls.queued_call_list_idsc                 C   r   r
   )r   r   r   r   r   r   r   queued_call_get  r   zCalls.queued_call_get)r   rA   c
           
      C   r   )Nro   r   StreamTrs   )r   rv   r   r@   r   )
r   r   rA   rB   rC   rD   rE   rF   rG   rH   r   r   r   r@     s   zCalls.start_stream)r   rK   c                 C   s&   | j jdd|d|ft| jt ddS Nr   r   r   Trs   )r   rv   r   rI   r   r   r   rK   r   r   r   rI     s   zCalls.delete_specific_streamc                 C   r   r   )r   rv   r   rM   r   r   r   r   r   rM     s   zCalls.delete_all_streamsc                 C   s   | j jdd|d|fddS Nr   r   r   Trs   r   r   r   r   r   rO     s   z$Calls.get_details_of_specific_streamc                 C   s   | j jdd|dfddS r   r   r   r   r   r   rP     s   zCalls.get_all_streamsr   )ro   Nro   Nro   Nro   NNNNNNrp   Nro   Nrq   NFNN)NNNNNNNNNNNNNNr   r   NNNNNN)NNrQ   )NNNNNN)NNN)2rR   rS   rT   r   _resource_typevalidate_argsis_phonenumberis_iterableof_typesix	text_typeis_urloptionalof_type_exactboolinteger_typescheckrw   is_subaccountis_inall_ofr   r   r   r   r   r%   r   r&   r)   r*   r   r1   r2   r7   r8   r   r9   r=   r>   r   r   r   r   r   r@   rI   rM   rO   rP   r   r   r   r   rW      s<   	



"+






























rW   N)
__doc__
plivo.baser   r   r   plivo.utilsr   plivo.utils.validatorsr   rW   r   r   r   r   <module>   s    