
    _jR                        S r SSKJrJrJrJrJr  SSKJrJ	r	J
r
Jr  SSKJr  SSKJr  S\\\4   S\\\4   4S	 jrS\\\4   S\\\4   4S
 jrSSSSS.S\S\\   S\\   S\\   S\\\\4      S\4S jjrS\\\4   S\\\4   4S jrSSS.S\S\S\S\S   S\\   S\	4S jjrS\\\4   S\\\4   4S jrS\S\S\
4S jrSS.S\S\\S       S\4S! jjrg)"z|
Browser session methods for Firecrawl v2 API.

Provides create, execute, delete, and list operations for browser sessions.
    )AnyDictListLiteralOptional   )BrowserCreateResponseBrowserExecuteResponseBrowserDeleteResponseBrowserListResponse)
HttpClient)handle_response_errorpayloadreturnc                     [        U 5      nSU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   U$ )	NcdpUrlcdp_urlliveViewUrllive_view_urlinteractiveLiveViewUrlinteractive_live_view_url	expiresAt
expires_atdictr   outs     Q/home/rurouni/.local/lib/python3.13/site-packages/firecrawl/v2/methods/browser.py"_normalize_browser_create_responser      s    
w-C39C/XIs :"=1O3&+Fc+Q+./G+H'(cl#5,LJ    c                    [        U 5      nSU;   a  [        US   [        5      (       a  / nUS    H  n[        U5      nSU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   SU;   a  S	U;  a  US   US	'   S
U;   a  SU;  a  US
   US'   SU;   a  SU;  a  US   US'   UR                  U5        M     X!S'   U$ )Nsessionsr   r   r   r   r   r   streamWebViewstream_web_view	createdAt
created_atlastActivitylast_activity)r   
isinstancelistappend)r   r   normalized_sessionssnss        r    _normalize_browser_list_responser/       s   
w-CSZJ>> ZAaB2~)2"5 "89"b'@&(&7?#'2-2MUW2W245M2N./"$):")D(*?(;$%b \%;#%k?< #r(A&(&8?#&&r* ! .JJr    N)ttlactivity_ttlr$   profileclientr0   r1   r$   r2   c                   0 nUb  XS'   Ub  X%S'   Ub  X5S'   Ub  US   UR                  SS5      S.US'   U R                  S	U5      nUR                  (       d  [        US
5        [	        UR                  5       5      n[        S0 UD6$ )a  Create a new browser session.

Args:
    client: HTTP client instance
    ttl: Total time-to-live in seconds (30-3600, default 300)
    activity_ttl: Inactivity TTL in seconds (10-3600)
    stream_web_view: Whether to enable webview streaming
    profile: Profile config with ``name`` (str) and
        optional ``save_changes`` (bool, default ``True``)

Returns:
    BrowserCreateResponse with session id and CDP URL
r0   activityTtlr#   namesave_changesT)r6   saveChangesr2   /v2/browserzcreate browser session )getpostokr   r   jsonr	   )r3   r0   r1   r$   r2   bodyrespr   s           r   browserrA   7   s    * D
U*]" /_FO";;~t<
Y
 ;;}d+D77d$<=0=G +7++r    c                 D    [        U 5      nSU;   a  SU;  a  US   US'   U$ )NexitCode	exit_coder   r   s     r   #_normalize_browser_execute_responserE   `   s-    
w-CS[3z?KJr    bash)languagetimeout
session_idcoderG   )pythonnoderF   rH   c                    UUS.nUb  XES'   U R                  SU S3U5      nUR                  (       d  [        US5        [        UR	                  5       5      n[        S0 UD6$ )aB  Execute code in a browser session.

Args:
    client: HTTP client instance
    session_id: Browser session ID
    code: Code to execute
    language: Programming language ("python", "node", or "bash")
    timeout: Execution timeout in seconds (1-300, default 30)

Returns:
    BrowserExecuteResponse with execution result
)rJ   rG   rH   /v2/browser/z/executezexecute browser coder:   )r<   r=   r   rE   r>   r
   )r3   rI   rJ   rG   rH   r?   r@   r   s           r   browser_executerO   g   si    * D !Y;;j\:DAD77d$:;1$))+>G!,G,,r    c                 l    [        U 5      nSU;   a  SU;  a  US   US'   SU;   a  SU;  a  US   US'   U$ )NsessionDurationMssession_duration_mscreditsBilledcredits_billedr   r   s     r   "_normalize_browser_delete_responserU      sQ    
w-Cc!&;3&F%()<%=!"#"2#"= #O 4Jr    c                     U R                  SU 35      nUR                  (       d  [        US5        [        UR	                  5       5      n[        S0 UD6$ )zDelete a browser session.

Args:
    client: HTTP client instance
    session_id: Browser session ID

Returns:
    BrowserDeleteResponse
rN   zdelete browser sessionr:   )deleter=   r   rU   r>   r   )r3   rI   r@   r   s       r   delete_browserrX      sI     ==<
|45D77d$<=0=G +7++r    )statusrY   )active	destroyedc                    SnUb  U SU 3nU R                  U5      nUR                  (       d  [        US5        [        UR	                  5       5      n[        S0 UD6$ )zList browser sessions.

Args:
    client: HTTP client instance
    status: Filter by session status ("active" or "destroyed")

Returns:
    BrowserListResponse with list of sessions
r9   z?status=zlist browser sessionsr:   )r;   r=   r   r/   r>   r   )r3   rY   endpointr@   r   s        r   list_browsersr^      s]     HZxx0::hD77d$;<.tyy{;G)))r    )__doc__typingr   r   r   r   r   typesr	   r
   r   r   utils.http_clientr   utils.error_handlerr   strr   r/   intboolrA   rE   rO   rU   rX   r^   r:   r    r   <module>rg      s   6 5  + 7
S#X 
4S> 
d38n c3h 4 "&&*(,&,&, 
#&, 3-	&,
 d^&, d38n%&, &,Rc3h DcN  39!--- -
 ./- c]- -DS#X 4S> ,,, ,. 8<** W234* 	*r    