
    \j                        d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZmZ d Zg fdZg g fdZd	 Zd
 ZddZg g fdZ G d de      Z G d de      Z G d de      Z G d d      Z G d d      Z G d de	      Z G d de      Zy)    )
formatdateN)ModelEntity)EventProcessorFeatureRequesterFeatureStoreUpdateProcessor)ChunkedResponseJsonResponsec                 F    t        | t              r| j                         S | S N)
isinstancer   to_json_dict)items    ;/root/env/lib/python3.12/site-packages/testing/stub_util.pyitem_as_jsonr   
   s    ",T;"?4ITI    c                 :    i }| D ]  }t        |      ||d   <    |S )Nkey)r   )itemsretr   s      r   make_items_mapr      s.    
C .'-DK.Jr   c                 d    dt        |       t        |      di}dt        j                  |      z  S )Ndataflagssegmentszevent:put
data: %s

)r   jsondumpsr   r   r   s      r   make_put_eventr       s0    u 5>RZC[]_D$tzz$'777r   c                 t    | j                   |d   }|t        |      d}dt        j                  |      z  S )Nr   )pathr   zevent:patch
data: %s

)stream_api_pathr   r   r   )kindr   r"   r   s       r   make_patch_eventr%      s9    ))4;7D<#57D&D)999r   c                 \    | j                   |}||d}dt        j                  |      z  S )N)r"   versionzevent:delete
data: %s

)r#   r   r   )r$   r   r'   r"   r   s        r   make_delete_eventr(      s0    ))3/Dg/D'$**T*:::r   c                 F    t        ddi      }| r|j                  |        |S )NzContent-Typeztext/event-stream)r	   push)eventstreams     r   stream_contentr-   !   s&    ~/BDEFEMr   c                 F    t        |       t        |      d}t        |      S )Nr   )r   r
   r   s      r   poll_contentr/   '   s!    $U+9QSDr   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)MockEventProcessorc                      d| _         g | _        y NF)_running_events)self_s     r   __init__zMockEventProcessor.__init__,   s    r   c                     d| _         y r3   r4   r6   s    r   stopzMockEventProcessor.stop0   s	    r   c                     d| _         y NTr:   r;   s    r   startzMockEventProcessor.start3   s	    r   c                     | j                   S r   r:   r;   s    r   is_alivezMockEventProcessor.is_alive6   s    }}r   c                 :    | j                   j                  |       y r   )r5   append)r6   r+   s     r   
send_eventzMockEventProcessor.send_event9   s    E"r   c                      y r    r;   s    r   flushzMockEventProcessor.flush<       r   N)	__name__
__module____qualname__r8   r<   r?   rA   rD   rG   rF   r   r   r1   r1   +   s     #r   r1   c                       e Zd Zd Zd Zy)MockFeatureRequesterc                 .    i | _         d | _        d| _        y )Nr   )all_data	exceptionrequest_countr;   s    r   r8   zMockFeatureRequester.__init__@   s    r   c                 t    | xj                   dz  c_         | j                  | j                  | j                  S )N   )rQ   rP   rO   r;   s    r   get_all_dataz!MockFeatureRequester.get_all_dataE   s1    a>>%.. }}r   N)rI   rJ   rK   r8   rT   rF   r   r   rM   rM   ?   s    
r   rM   c                   *     e Zd Z fdZd fd	Z xZS )_MockHTTPHeaderDictc                     t         |   |j                         D ci c]  \  }}|j                         | c}}       y c c}}w r   )superr8   r   lower)r6   dkv	__class__s       r   r8   z_MockHTTPHeaderDict.__init__M   s2    1779=41a!'')Q,=>=s   A
c                 @    t         |   |j                         |      S r   )rX   getrY   )r6   r   defaultr]   s      r   r_   z_MockHTTPHeaderDict.getP   s    w{399;00r   r   )rI   rJ   rK   r8   r_   __classcell__)r]   s   @r   rV   rV   L   s    ?1 1r   rV   c                   2    e Zd Zd Zed        Zed        Zy)MockResponsec                 2    || _         t        |      | _        y r   )_statusrV   _headers)r6   statusheaderss      r   r8   zMockResponse.__init__U   s    +G4r   c                     | j                   S r   )re   r;   s    r   rg   zMockResponse.statusY   s    ||r   c                     | j                   S r   )rf   r;   s    r   rh   zMockResponse.headers]   s    }}r   N)rI   rJ   rK   r8   propertyrg   rh   rF   r   r   rc   rc   T   s/    5    r   rc   c                   f    e Zd Zd Zd Zd Zed        Zed        Zed        Z	d Z
d Zd	 Zd
 Zy)MockHttpc                 X    g | _         d | _        d | _        d | _        d| _        d | _        y )N   )_recorded_requests_request_data_request_headers_response_func_response_status_server_timer;   s    r   r8   zMockHttp.__init__c   s2    "$! $" # r   c                    | j                   j                  ||f       t               }| j                  t	        | j                  dz  dd      |d<   | j
                  | j                         S t        | j                  |      S )Ni  FT)	localtimeusegmtdate)rp   rC   dictru   r   rs   rc   rt   )r6   methodurirh   timeoutbodyretriesresp_hdrs           r   requestzMockHttp.requestk   sz    &&76()$*;*;d*Be\`aHV*&&((D118<<r   c                      y r   rF   r;   s    r   clearzMockHttp.cleart   rH   r   c                 X    t        | j                        dk7  r| j                  d   d   S y )Nr   rS   lenrp   r;   s    r   request_datazMockHttp.request_dataw   0    t&&'1,**2.q11 -r   c                 X    t        | j                        dk7  r| j                  d   d   S y )Nr   r   r   r;   s    r   request_headerszMockHttp.request_headers|   r   r   c                     | j                   S r   rp   r;   s    r   recorded_requestszMockHttp.recorded_requests   s    &&&r   c                     || _         y r   )rt   )r6   rg   s     r   set_response_statuszMockHttp.set_response_status   s
     &r   c                     || _         y r   )rs   )r6   response_funcs     r   set_response_funczMockHttp.set_response_func   s
    +r   c                     || _         y r   )ru   )r6   	timestamps     r   set_server_timezMockHttp.set_server_time   s
    %r   c                     g | _         y r   r   r;   s    r   resetzMockHttp.reset   s
    "$r   N)rI   rJ   rK   r8   r   r   rk   r   r   r   r   r   r   r   rF   r   r   rm   rm   b   sa    != 2 2 2 2 ' '',&%r   rm   c                   *    e Zd Zd Zd Zd Zd Zd Zy)MockUpdateProcessorc                 $    |j                          y r   )set)r6   configstorereadys       r   r8   zMockUpdateProcessor.__init__   s    		r   c                      y r   rF   r;   s    r   r?   zMockUpdateProcessor.start   rH   r   c                      y r   rF   r;   s    r   r<   zMockUpdateProcessor.stop   rH   r   c                      yr>   rF   r;   s    r   rA   zMockUpdateProcessor.is_alive       r   c                      yr>   rF   r;   s    r   initializedzMockUpdateProcessor.initialized   r   r   N)rI   rJ   rK   r8   r?   r<   rA   r   rF   r   r   r   r      s    r   r   c                   V    e Zd Zd Zd fdZd fdZd Zd Zed        Z	ed	        Z
y
)CapturingFeatureStorec                     || _         y r   r   )r6   rO   s     r   initzCapturingFeatureStore.init   s	    	r   c                     | S r   rF   xs    r   <lambda>zCapturingFeatureStore.<lambda>   s     r   c                      y r   rF   )r6   r$   r   callbacks       r   r_   zCapturingFeatureStore.get   rH   r   c                     | S r   rF   r   s    r   r   zCapturingFeatureStore.<lambda>   s    1 r   c                      y r   rF   )r6   r$   r   s      r   allzCapturingFeatureStore.all   rH   r   c                      y r   rF   )r6   r$   r   r'   s       r   deletezCapturingFeatureStore.delete   rH   r   c                      y r   rF   )r6   r$   r   s      r   upsertzCapturingFeatureStore.upsert   rH   r   c                      yr>   rF   r;   s    r   r   z!CapturingFeatureStore.initialized   s    r   c                     | j                   S r   r   r;   s    r   received_dataz#CapturingFeatureStore.received_data   s    yyr   N)rI   rJ   rK   r   r_   r   r   r   rk   r   r   rF   r   r   r   r      sM     '2  "-     r   r   r   )email.utilsr   r   ldclient.impl.modelr   ldclient.interfacesr   r   r   r   testing.http_utilr	   r
   r   r   r    r%   r(   r-   r/   r1   rM   rz   rV   rc   rm   r   r   rF   r   r   <module>r      s    "  + _ _ ;J   " 8:
;
   (
+ 
1$ 1 -% -%^/  L r   