a
    !f                     @   s$  d dl Z zd dlZW n ey*   dZY n0 dZG dd deZe edG dd dee jZ	e edG d	d
 d
ee jZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    NFTc                   @   sV   e Zd ZdZdef Zdef ZdZdeef Zdef ZdZ	dee	f Z
d	d
 ZdS )_BasePROJECTzprojects/%sz	%s/topicsZ
topic_namezprojects/%s/topics/%sz%s/subscriptionsZsub_namez%s/subscriptions/%sc                 O   s   |   |i |S N)_getTargetClass)selfargskw r	   X/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/pubsub/test__gax.py_makeOne&   s    z_Base._makeOneN)__name__
__module____qualname__r   PROJECT_PATHZLIST_TOPICS_PATHZ
TOPIC_NAME
TOPIC_PATHZLIST_TOPIC_SUBSCRIPTIONS_PATHZSUB_NAMESUB_PATHr   r	   r	   r	   r
   r      s   


r   zNo gax-pythonc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*Test_PublisherAPIc                 C   s   ddl m} |S )Nr   )_PublisherAPI)gcloud.pubsub._gaxr   )r   r   r	   r	   r
   r   -   s    z!Test_PublisherAPI._getTargetClassc                 C   s$   t  }| |}| |j|u  d S r   )_GAXPublisherAPIr   
assertTrue_gax_apir   gax_apiapir	   r	   r
   	test_ctor1   s    
zTest_PublisherAPI.test_ctorc                 C   s   ddl m} ddlm} d}|t| jg|}t|d}| |}|| j	\}}| 
t|d |d }	| |	t | 
|	d | j | 
|| |j\}
}}| 
|
| j | 
|d | |j|u  d S )Nr   INITIAL_PAGE_GAXPageIteratorTOKEN_list_topics_response   name)
google.gaxr   gcloud._testingr   _TopicPBr   r   r   list_topicsr   assertEquallenassertIsInstancedict_list_topics_called_withr   r   
page_token)r   r   r   r    responser   r   topics
next_tokentopicr$   	page_sizeoptionsr	   r	   r
   test_list_topics_no_paging6   s     

z,Test_PublisherAPI.test_list_topics_no_pagingc                 C   s   ddl m} d}d}d}|t| jg|}t|d}| |}|j| j||d\}}	| t	|d |d }
| 
|
t | |
d	 | j | |	| |j\}}}| || j | || | |j| d S )
Nr   r      r    	NEW_TOKENr!   r3   r.   r#   r$   )r&   r   r'   r   r   r   r(   r   r)   r*   r+   r,   r-   r   r.   )r   r   SIZEr    r7   r/   r   r   r0   r1   r2   r$   r3   r4   r	   r	   r
   test_list_topics_with_pagingK   s*    


z.Test_PublisherAPI.test_list_topics_with_pagingc                 C   sd   t | j}t|d}| |}|| j}| |d| ji |j\}}| || j | |d  d S )N)_create_topic_responser$   )r'   r   r   r   topic_creater)   _create_topic_called_withr   Ztopic_pbr   r   resource
topic_pathr4   r	   r	   r
   test_topic_createc   s    



z#Test_PublisherAPI.test_topic_createc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S )Nr   ConflictT)_create_topic_conflict)	gcloud.exceptionsrC   r   r   assertRaisesr<   r   r=   r)   )r   rC   r   r   r@   r4   r	   r	   r
    test_topic_create_already_existso   s    

*
z2Test_PublisherAPI.test_topic_create_already_existsc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S Nr   GaxErrorT_random_gax_error)	google.gax.errorsrJ   r   r   rF   r<   r   r=   r)   r   rJ   r   r   r@   r4   r	   r	   r
   test_topic_create_error{   s    

*
z)Test_PublisherAPI.test_topic_create_errorc                 C   sd   t | j}t|d}| |}|| j}| |d| ji |j\}}| || j | |d  d S )N)_get_topic_responser$   )r'   r   r   r   	topic_getr)   _get_topic_called_withr>   r	   r	   r
   test_topic_get_hit   s    



z$Test_PublisherAPI.test_topic_get_hitc                 C   sz   ddl m} t }| |}| | || j W d    n1 sH0    Y  |j\}}| || j | |d  d S Nr   NotFound)	rE   rV   r   r   rF   rQ   r   rR   r)   r   rV   r   r   r@   r4   r	   r	   r
   test_topic_get_miss   s    
*
z%Test_PublisherAPI.test_topic_get_missc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S rH   )	rM   rJ   r   r   rF   rQ   r   rR   r)   rN   r	   r	   r
   test_topic_get_error   s    

*
z&Test_PublisherAPI.test_topic_get_errorc                 C   sH   t dd}| |}|| j |j\}}| || j | |d  d S )NT_delete_topic_ok)r   r   topic_deleter   _delete_topic_called_withr)   )r   r   r   r@   r4   r	   r	   r
   test_topic_delete_hit   s    


z'Test_PublisherAPI.test_topic_delete_hitc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S )Nr   rU   FrZ   )	rE   rV   r   r   rF   r\   r   r]   r)   rW   r	   r	   r
   test_topic_delete_miss   s    

*
z(Test_PublisherAPI.test_topic_delete_missc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S rH   )	rM   rJ   r   r   rF   r\   r   r]   r)   rN   r	   r	   r
   test_topic_delete_error   s    

*
z)Test_PublisherAPI.test_topic_delete_errorc                 C   s   dd l }d}||d}d}|i d}t|g}t|d}| |}|| j|g}	| |	|g |j	\}
}}| |
| j |\}| |j
d| | |ji  | |jd d S )Nr      This is the message textasciiDEADBEEFdata
attributes)_publish_responseF)base64	b64encodedecode_PublishResponsePBr   r   topic_publishr   r)   _publish_called_withre   rf   is_bundling)r   rh   PAYLOADB64ZMSGIDMESSAGEr/   r   r   r?   r@   message_pbsr4   
message_pbr	   r	   r
   test_topic_publish_hit   s     



z(Test_PublisherAPI.test_topic_publish_hitc                 C   s   dd l }ddlm} d}||}|ddid}t }| |}| |  || j|g W d    n1 sp0    Y  |j	\}}	}
| 
|| j |	\}| 
|j| | 
|jddi | 
|
jd d S )Nr   rU   ra   Zfoobarrd   F)rh   rE   rV   ri   r   r   rF   rl   r   rm   r)   re   rf   rn   )r   rh   rV   ro   rp   rq   r   r   r@   rr   r4   rs   r	   r	   r
   /test_topic_publish_miss_w_attrs_w_bytes_payload   s    

.zATest_PublisherAPI.test_topic_publish_miss_w_attrs_w_bytes_payloadc                 C   s   dd l }ddlm} d}||d}|i d}tdd}| |}| |  || j	|g W d    n1 sv0    Y  |j
\}}	}
| || j	 |	\}| |jd| | |ji  | |
jd d S )	Nr   rI   ra   rb   rd   TrK   F)rh   rM   rJ   ri   rj   r   r   rF   rl   r   rm   r)   re   rf   rn   )r   rh   rJ   ro   rp   rq   r   r   r@   rr   r4   rs   r	   r	   r
   test_topic_publish_error   s    


.z*Test_PublisherAPI.test_topic_publish_errorc                 C   s   ddl m} ddlm} || j| jdgd }t|d}| |}|| j\}}| 	t
|d |d }| |t | 	|d | j | 	|d | j | 	|d  |j\}	}
}| 	|	| j | 	|
d | |j|u  d S )	Nr   r   r   r$   r2   "_list_topic_subscriptions_responser#   r$   r2   )r%   r   r&   r   r   r   r   r   topic_list_subscriptionsr)   r*   r+   r,   %_list_topic_subscriptions_called_withr   r.   )r   r   r   r/   r   r   subscriptionsr1   subscriptionr@   r3   r4   r	   r	   r
   'test_topic_list_subscriptions_no_paging  s.    

z9Test_PublisherAPI.test_topic_list_subscriptions_no_pagingc                 C   s   ddl m} d}d}d}|| j| jdg|}t|d}| |}|j| j||d\}}	| t|d	 |d }
| 	|
t
 | |
d
 | j | |
d | j | |	| |j\}}}| || j | || | |j| d S )Nr   r   r6   r    r7   rx   ry   r8   r#   r$   r2   )r&   r   r   r   r   r   r{   r)   r*   r+   r,   r|   r.   r   r   r9   r    r7   r/   r   r   r}   r1   r~   r$   r3   r4   r	   r	   r
   )test_topic_list_subscriptions_with_paging  s2    


z;Test_PublisherAPI.test_topic_list_subscriptions_with_pagingc                 C   s   ddl m} ddlm} t }| |}| | || j W d    n1 sT0    Y  |j	\}}}| 
|| j | 
|d | |j|u  d S )Nr   r   rU   )r%   r   rE   rV   r   r   rF   r{   r   r|   r)   r   r.   )r   r   rV   r   r   r@   r3   r4   r	   r	   r
   "test_topic_list_subscriptions_miss9  s    
*z4Test_PublisherAPI.test_topic_list_subscriptions_missc                 C   s   ddl m} ddlm} tdd}| |}| | || j W d    n1 sX0    Y  |j	\}}}| 
|| j | 
|d | |j|u  d S )Nr   r   rI   TrK   )r%   r   rM   rJ   r   r   rF   r{   r   r|   r)   r   r.   )r   r   rJ   r   r   r@   r3   r4   r	   r	   r
   #test_topic_list_subscriptions_errorH  s    

*z5Test_PublisherAPI.test_topic_list_subscriptions_errorN)r   r   r   r   r   r5   r:   rA   rG   rO   rS   rX   rY   r^   r_   r`   rt   rv   rw   r   r   r   r   r	   r	   r	   r
   r   *   s(   
r   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4S )5Test_SubscriberAPIzhttps://api.example.com/pushc                 C   s   ddl m} |S )Nr   )_SubscriberAPI)r   r   )r   r   r	   r	   r
   r   ]  s    z"Test_SubscriberAPI._getTargetClassc                 C   s$   t  }| |}| |j|u  d S r   )_GAXSubscriberAPIr   r   r   r   r	   r	   r
   r   a  s    
zTest_SubscriberAPI.test_ctorc                 C   s  ddl m} ddlm} |t| j| j| jdgd }t|d}| 	|}|
| j\}}| t|d |d }| |t | |d | j | |d | j | |d d	| ji | |d
 d | |d  |j\}	}
}| |	| j | |
d | |j|u  d S )Nr   r   r   _list_subscriptions_responser#   r$   r2   
pushConfigpushEndpointackDeadlineSeconds)r%   r   r&   r   _SubscriptionPBr   r   PUSH_ENDPOINTr   r   list_subscriptionsr   r)   r*   r+   r,   _list_subscriptions_called_withr   r   r.   )r   r   r   r/   r   r   r}   r1   r~   r$   r3   r4   r	   r	   r
   !test_list_subscriptions_no_pagingf  s0    


z4Test_SubscriberAPI.test_list_subscriptions_no_pagingc                 C   s  ddl m} d}d}d}|t| j| j| jdg|}t|d}| |}|j| j	||d\}}	| 
t|d |d }
| |
t | 
|
d	 | j | 
|
d
 | j | 
|
d d| ji | 
|
d d | 
|	| |j\}}}| 
|| j | 
|d | 
|j| d S )Nr   r   r6   r    r7   r   r8   r#   r$   r2   r   r   r   )r&   r   r   r   r   r   r   r   r   r   r)   r*   r+   r,   r   r   r.   r   r	   r	   r
   #test_list_subscriptions_with_paging  s8    



z6Test_SubscriberAPI.test_list_subscriptions_with_pagingc                 C   s   t | j| jdd}t|d}| |}|| j| j}| j| jdd}| || |j\}}}}	}
| || j | || j | |d  | |	d | |
d  d S )N r   )_create_subscription_response)r$   r2   r   )r   r   r   r   r   subscription_creater)    _create_subscription_called_with)r   sub_pbr   r   r?   expectedr$   r2   push_configack_deadliner4   r	   r	   r
   test_subscription_create  s     

z+Test_SubscriberAPI.test_subscription_createc           
      C   s   ddl m} d}tdd}| |}| |& || j| j|| j W d    n1 sZ0    Y  |j	\}}}}}	| 
|| j | 
|| j | 
|j| j | 
|| | 
|	d  d S )Nr   rB   iX  T)_create_subscription_conflict)rE   rC   r   r   rF   r   r   r   r   r   r)   push_endpoint)
r   rC   ZDEADLINEr   r   r$   r2   r   r   r4   r	   r	   r
   'test_subscription_create_already_exists  s    

"z:Test_SubscriberAPI.test_subscription_create_already_existsc           	      C   s   ddl m} tdd}| |}| |  || j| j W d    n1 sP0    Y  |j\}}}}}| 	|| j | 	|| j | 	|d  | 	|d | 	|d  d S rH   )
rM   rJ   r   r   rF   r   r   r   r   r)   )	r   rJ   r   r   r$   r2   r   r   r4   r	   r	   r
   test_subscription_create_error  s    

.z1Test_SubscriberAPI.test_subscription_create_errorc                 C   s   t | j| j| jd}t|d}| |}|| j}| j| jdd| jid}| || |j\}}| || j | |d  d S )Nr   )_get_subscription_responser   )r$   r2   r   r   )	r   r   r   r   r   r   subscription_getr)   _get_subscription_called_with)r   r   r   r   r?   r   sub_pathr4   r	   r	   r
   test_subscription_get_hit  s     


z,Test_SubscriberAPI.test_subscription_get_hitc                 C   sz   ddl m} t }| |}| | || j W d    n1 sH0    Y  |j\}}| || j | |d  d S rT   )	rE   rV   r   r   rF   r   r   r   r)   r   rV   r   r   r   r4   r	   r	   r
   test_subscription_get_miss  s    
*
z-Test_SubscriberAPI.test_subscription_get_missc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S rH   )	rM   rJ   r   r   rF   r   r   r   r)   r   rJ   r   r   r   r4   r	   r	   r
   test_subscription_get_error  s    

*
z.Test_SubscriberAPI.test_subscription_get_errorc                 C   sH   t dd}| |}|| j |j\}}| || j | |d  d S )NT_delete_subscription_ok)r   r   subscription_deleter    _delete_subscription_called_withr)   )r   r   r   r   r4   r	   r	   r
   test_subscription_delete_hit  s    


z/Test_SubscriberAPI.test_subscription_delete_hitc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S )Nr   rU   Fr   )	rE   rV   r   r   rF   r   r   r   r)   r   r	   r	   r
   test_subscription_delete_miss	  s    

*
z0Test_SubscriberAPI.test_subscription_delete_missc                 C   s~   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}| || j | |d  d S rH   )	rM   rJ   r   r   rF   r   r   r   r)   r   r	   r	   r
   test_subscription_delete_error  s    

*
z1Test_SubscriberAPI.test_subscription_delete_errorc                 C   s^   t dd}| |}|| j| j |j\}}}| || j | |j| j | |d  d S )NT)_modify_push_config_ok)r   r   subscription_modify_push_configr   r   _modify_push_config_called_withr)   r   )r   r   r   r   configr4   r	   r	   r
   (test_subscription_modify_push_config_hit!  s    

z;Test_SubscriberAPI.test_subscription_modify_push_config_hitc                 C   s   ddl m} t }| |}| |  || j| j W d    n1 sL0    Y  |j\}}}| 	|| j | 	|j
| j | 	|d  d S rT   )rE   rV   r   r   rF   r   r   r   r   r)   r   )r   rV   r   r   r   r   r4   r	   r	   r
   )test_subscription_modify_push_config_miss,  s    
"z<Test_SubscriberAPI.test_subscription_modify_push_config_missc                 C   s   ddl m} tdd}| |}| |  || j| j W d    n1 sP0    Y  |j\}}}| 	|| j | 	|j
| j | 	|d  d S rH   )rM   rJ   r   r   rF   r   r   r   r   r)   r   )r   rJ   r   r   r   r   r4   r	   r	   r
   *test_subscription_modify_push_config_error:  s    

"z=Test_SubscriberAPI.test_subscription_modify_push_config_errorc                 C   s   dd l }d}||d}d}d}||ddid}||d	g}t||ddi}tt||g}	t|	d
}
| |
}d}|j| j	d|d}| 
|| |
j\}}}}| 
|| j	 | 
|| | | | 
|d  d S )Nr   ra   rb   rc   BEADCAFEab)Z	messageIdre   rf   )ZackIdmessage)_pull_response
   T)return_immediatelymax_messages)rh   ri   rj   _PubsubMessagePB_PullResponsePB_ReceivedMessagePBr   r   subscription_pullr   r)   _pull_called_withr   )r   rh   ro   rp   ZACK_IDZMSG_IDrq   ZRECEIVEDrs   Zresponse_pbr   r   ZMAX_MESSAGESZreceivedr   r   r   r4   r	   r	   r
   test_subscription_pull_explicitH  s,    



z2Test_SubscriberAPI.test_subscription_pull_explicitc                 C   s   ddl m} t }| |}| | || j W d    n1 sH0    Y  |j\}}}}| || j | |d | 	| | |d  d S )Nr   rU   r#   )
rE   rV   r   r   rF   r   r   r   r)   assertFalse)r   rV   r   r   r   r   r   r4   r	   r	   r
   $test_subscription_pull_defaults_missa  s    
*

z7Test_SubscriberAPI.test_subscription_pull_defaults_missc                 C   s   ddl m} tdd}| |}| | || j W d    n1 sL0    Y  |j\}}}}| || j | |d | 	| | |d  d S )Nr   rI   TrK   r#   )
rM   rJ   r   r   rF   r   r   r   r)   r   )r   rJ   r   r   r   r   r   r4   r	   r	   r
   %test_subscription_pull_defaults_errorp  s    

*

z8Test_SubscriberAPI.test_subscription_pull_defaults_errorc                 C   sh   d}d}t dd}| |}|| j||g |j\}}}| || j | |||g | |d  d S )Nrc   r   T)_acknowledge_ok)r   r   subscription_acknowledger   _acknowledge_called_withr)   )r   ACK_ID1ACK_ID2r   r   r   ack_idsr4   r	   r	   r
   !test_subscription_acknowledge_hit  s    

z4Test_SubscriberAPI.test_subscription_acknowledge_hitc           	      C   s   ddl m} d}d}t }| |}| |" || j||g W d    n1 sV0    Y  |j\}}}| || j | |||g | |d  d S )Nr   rU   rc   r   )	rE   rV   r   r   rF   r   r   r   r)   )	r   rV   r   r   r   r   r   r   r4   r	   r	   r
   "test_subscription_acknowledge_miss  s    
0z5Test_SubscriberAPI.test_subscription_acknowledge_missc           	      C   s   ddl m} d}d}tdd}| |}| |" || j||g W d    n1 sZ0    Y  |j\}}}| || j | |||g | |d  d S )Nr   rI   rc   r   TrK   )	rM   rJ   r   r   rF   r   r   r   r)   )	r   rJ   r   r   r   r   r   r   r4   r	   r	   r
   #test_subscription_acknowledge_error  s    

0z6Test_SubscriberAPI.test_subscription_acknowledge_errorc           
      C   s|   d}d}d}t dd}| |}|| j||g| |j\}}}}	| || j | |||g | || | |	d  d S )Nrc   r   Z   T)_modify_ack_deadline_ok)r   r    subscription_modify_ack_deadliner    _modify_ack_deadline_called_withr)   )
r   r   r   NEW_DEADLINEr   r   r   r   deadliner4   r	   r	   r
   )test_subscription_modify_ack_deadline_hit  s    


z<Test_SubscriberAPI.test_subscription_modify_ack_deadline_hitc                 C   s   ddl m} d}d}d}t }| |}| |$ || j||g| W d    n1 s\0    Y  |j\}}}	}
| || j | |||g | |	| | |
d  d S )Nr   rU   rc   r   r   )	rE   rV   r   r   rF   r   r   r   r)   )r   rV   r   r   r   r   r   r   r   r   r4   r	   r	   r
   *test_subscription_modify_ack_deadline_miss  s     
"
z=Test_SubscriberAPI.test_subscription_modify_ack_deadline_missc                 C   s   ddl m} d}d}d}tdd}| |}| |$ || j||g| W d    n1 s`0    Y  |j\}}}	}
| || j | |||g | |	| | |
d  d S )Nr   rI   rc   r   r   TrK   )	rM   rJ   r   r   rF   r   r   r   r)   )r   rJ   r   r   r   r   r   r   r   r   r4   r	   r	   r
   +test_subscription_modify_ack_deadline_error  s     

"
z>Test_SubscriberAPI.test_subscription_modify_ack_deadline_errorN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r   X  s4   
r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )_GaxAPIBaseFc                 K   s   | j | d S r   )__dict__update)r   r   r	   r	   r
   __init__  s    z_GaxAPIBase.__init__c                    s(   ddl m} G  fddd|   S )Nr   )AbortionErrorc                       s"   e Zd ZZ fddZ  ZS )z5_GaxAPIBase._make_grpc_error.<locals>._DummyExceptionc                    s   t  | d d | jd  d S r   )superr   code)r   )_DummyException	__class__r	   r
   r     s    

z>_GaxAPIBase._make_grpc_error.<locals>._DummyException.__init__)r   r   r   r   r   __classcell__r	   r   status_code)r   r
   r     s   r   )Z#grpc.framework.interfaces.face.facer   )r   r   r   r	   r   r
   _make_grpc_error  s    z_GaxAPIBase._make_grpc_errorc                 C   s   ddl m} | |jS Nr   )
StatusCode)grpc.beta.interfacesr   r   	NOT_FOUNDr   r   r	   r	   r
   _make_grpc_not_found  s    z _GaxAPIBase._make_grpc_not_foundc                 C   s   ddl m} | |jS r   )r   r   r   ZFAILED_PRECONDITIONr   r	   r	   r
   _make_grpc_failed_precondition  s    z*_GaxAPIBase._make_grpc_failed_preconditionN)r   r   r   rL   r   r   r   r   r	   r	   r	   r
   r     s
   r   c                   @   sJ   e Zd ZdZdd ZdddZdddZdd	d
ZdddZdddZ	dS )r   Fc                 C   s   |||f| _ | jS r   )r-   r"   )r   r$   r3   r4   r	   r	   r
   r(     s    z_GAXPublisherAPI.list_topicsNc                 C   s>   ddl m} ||f| _| jr$|d| jr8|d|  | jS Nr   rI   errorconflict)rM   rJ   r=   rL   rD   r   r;   r   r$   r4   rJ   r	   r	   r
   create_topic  s    
z_GAXPublisherAPI.create_topicc                 C   sR   ddl m} ||f| _| jr$|dz| jW S  tyL   |d|  Y n0 d S Nr   rI   r   Zmiss)rM   rJ   rR   rL   rP   AttributeErrorr   r   r	   r	   r
   	get_topic  s    
z_GAXPublisherAPI.get_topicc                 C   s<   ddl m} ||f| _| jr$|d| js8|d|  d S r   )rM   rJ   r]   rL   r[   r   r   r	   r	   r
   delete_topic  s    
z_GAXPublisherAPI.delete_topicc                 C   sT   ddl m} |||f| _| jr&|dz| jW S  tyN   |d|  Y n0 d S r   )rM   rJ   rm   rL   rg   r   r   )r   r2   messagesr4   rJ   r	   r	   r
   publish!  s    z_GAXPublisherAPI.publishc                 C   sT   ddl m} |||f| _| jr&|dz| jW S  tyN   |d|  Y n0 d S r   )rM   rJ   r|   rL   rz   r   r   )r   r2   r3   r4   rJ   r	   r	   r
   list_topic_subscriptions+  s    z)_GAXPublisherAPI.list_topic_subscriptions)N)N)N)N)N)
r   r   r   rD   r(   r   r   r   r   r   r	   r	   r	   r
   r     s   
	




r   c                   @   sl   e Zd ZdZdZdZdZdddZdddZdddZ	dd	d
Z
dddZdddZdddZdddZdS )r   FNc                 C   s   |||f| _ | jS r   )r   r   )r   projectr3   r4   r	   r	   r
   r   =  s    z$_GAXSubscriberAPI.list_subscriptionsc                 C   sD   ddl m} |||||f| _| jr*|d| jr>|d|  | jS r   )rM   rJ   r   rL   r   r   r   )r   r$   r2   r   ack_deadline_secondsr4   rJ   r	   r	   r
   create_subscriptionA  s    
z%_GAXSubscriberAPI.create_subscriptionc                 C   sR   ddl m} ||f| _| jr$|dz| jW S  tyL   |d|  Y n0 d S r   )rM   rJ   r   rL   r   r   r   r   r	   r	   r
   get_subscriptionM  s    
z"_GAXSubscriberAPI.get_subscriptionc                 C   s<   ddl m} ||f| _| jr$|d| js8|d|  d S r   )rM   rJ   r   rL   r   r   r   r	   r	   r
   delete_subscriptionW  s    
z%_GAXSubscriberAPI.delete_subscriptionc                 C   s>   ddl m} |||f| _| jr&|d| js:|d|  d S r   )rM   rJ   r   rL   r   r   )r   r$   r   r4   rJ   r	   r	   r
   modify_push_config_  s    z$_GAXSubscriberAPI.modify_push_configc                 C   sV   ddl m} ||||f| _| jr(|dz| jW S  tyP   |d|  Y n0 d S r   )rM   rJ   r   rL   r   r   r   )r   r$   r   r   r4   rJ   r	   r	   r
   pullg  s    z_GAXSubscriberAPI.pullc                 C   s>   ddl m} |||f| _| jr&|d| js:|d|  d S r   )rM   rJ   r   rL   r   r   )r   r$   r   r4   rJ   r	   r	   r
   acknowledger  s    z_GAXSubscriberAPI.acknowledgec                 C   s@   ddl m} ||||f| _| jr(|d| js<|d|  d S r   )rM   rJ   r   rL   r   r   )r   r$   r   r   r4   rJ   r	   r	   r
   modify_ack_deadlinez  s    z%_GAXSubscriberAPI.modify_ack_deadline)N)N)N)N)N)N)N)N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	   r	   r	   r
   r   6  s   
 






r   c                   @   s   e Zd Zdd ZdS )r'   c                 C   s
   || _ d S r   )r$   )r   r$   r	   r	   r
   r     s    z_TopicPB.__init__Nr   r   r   r   r	   r	   r	   r
   r'     s   r'   c                   @   s   e Zd Zdd ZdS )rk   c                 C   s
   || _ d S r   )message_ids)r   r  r	   r	   r
   r     s    z_PublishResponsePB.__init__Nr  r	   r	   r	   r
   rk     s   rk   c                   @   s   e Zd Zdd ZdS )_PushConfigPBc                 C   s
   || _ d S r   )r   )r   r   r	   r	   r
   r     s    z_PushConfigPB.__init__Nr  r	   r	   r	   r
   r    s   r  c                   @   s   e Zd Zdd ZdS )r   c                 C   s   || _ || _|| _d S r   )
message_idre   rf   )r   r  re   rf   r	   r	   r
   r     s    z_PubsubMessagePB.__init__Nr  r	   r	   r	   r
   r     s   r   c                   @   s   e Zd Zdd ZdS )r   c                 C   s   || _ || _d S r   )ack_idr   )r   r  r   r	   r	   r
   r     s    z_ReceivedMessagePB.__init__Nr  r	   r	   r	   r
   r     s   r   c                   @   s   e Zd Zdd ZdS )r   c                 C   s
   || _ d S r   )received_messages)r   r  r	   r	   r
   r     s    z_PullResponsePB.__init__Nr  r	   r	   r	   r
   r     s   r   c                   @   s   e Zd Zdd ZdS )r   c                 C   s    || _ || _t|| _|| _d S r   )r$   r2   r  r   r   )r   r$   r2   r   r   r	   r	   r
   r     s    
z_SubscriptionPB.__init__Nr  r	   r	   r	   r
   r     s   r   )Z	unittest2r   ZgcloudImportErrorZ	_HAVE_GAXobjectr   Z
skipUnlessZTestCaser   r   r   r   r   r'   rk   r  r   r   r   r   r	   r	   r	   r
   <module>   s2   

  /
   8N