
    _jD                        S r SSK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\\\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\\\4   S\\\4   4S jrSS
S.S\S\S\S\S   S\\   S\4S jjrS\S\S\	4S jrS
S.S\S\\S      S\
4S  jjrg
)!z
Async browser session methods for Firecrawl v2 API.

Provides async create, execute, delete, and list operations for browser sessions.
    )AnyDictLiteralOptional   )BrowserCreateResponseBrowserExecuteResponseBrowserDeleteResponseBrowserListResponse)AsyncHttpClient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     U/home/rurouni/.local/lib/python3.13/site-packages/firecrawl/v2/methods/aio/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clientr.   r/   r"   r0   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      I Sh  vN n[        UR                  5       5      n[	        S0 UD6$  N(7f)a  Create a new browser session.

Args:
    client: Async 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
Nr.   activityTtlr!   namesave_changesT)r4   saveChangesr0   /v2/browser )getpostr   jsonr   )r1   r.   r/   r"   r0   bodyrespr   s           r   browserr>   6   s     * D
U*]" /_FO";;~t<
Y
 ]D11D0=G +7++ 2s   AA8A6)A8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_responserB   ]   s-    
w-CS[3z?KJr   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_responserH   d   sQ    
w-Cc!&;3&F%()<%=!"#"2#"= #O 4Jr   bash)languagetimeout
session_idcoderJ   )pythonnoderI   rK   c                   #    UUS.nUb  XES'   U R                  SU S3U5      I Sh  vN n[        UR                  5       5      n[        S0 UD6$  N(7f)aH  Execute code in a browser session.

Args:
    client: Async 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
)rM   rJ   NrK   /v2/browser/z/executer8   )r:   rB   r;   r	   )r1   rL   rM   rJ   rK   r<   r=   r   s           r   browser_executerR   m   sc     * D !Y|J<x@$GGD1$))+>G!,G,, Hs   &AA)Ac                    #    U R                  SU 35      I Sh  vN n[        UR                  5       5      n[        S0 UD6$  N(7f)zDelete a browser session.

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

Returns:
    BrowserDeleteResponse
rQ   Nr8   )deleterH   r;   r
   )r1   rL   r=   r   s       r   delete_browserrU      sB      j\:;;D0=G +7++ <s   AA)A)statusrV   )active	destroyedc                   #    SnUb  U SU 3nU R                  U5      I Sh  vN n[        UR                  5       5      n[        S0 UD6$  N(7f)zList browser sessions.

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

Returns:
    BrowserListResponse with list of sessions
r7   Nz?status=r8   )r9   r-   r;   r   )r1   rV   endpointr=   r   s        r   list_browsersr[      sV      HZxx0H%%D.tyy{;G))) &s   !AA)A)__doc__typingr   r   r   r   typesr   r	   r
   r   utils.http_client_asyncr   strr   r-   intboolr>   rB   rH   rR   rU   r[   r8   r   r   <module>rc      s   0 /  7
S#X 
4S> 
d38n c3h 4 "&&*(,$,$, 
#$, 3-	$,
 d^$, d38n%$, $,Nc3h DcN S#X 4S>  39!--- -
 ./- c]- -@,,, ,* 8<** W234* 	*r   