
    Sj                     ~   d Z ddlmZmZmZmZmZ ddlmZm	Z	m
Z
mZ ddlmZ deeef   deeef   fdZdeeef   deeef   fd	Zd
d
d
ddedee   dee   dee   def
dZdeeef   deeef   fdZdeeef   deeef   fdZdd
ddedededed   dee   de	fdZdedede
fdZd
ddedeed      defdZy
) z
Async browser session methods for Firecrawl v2 API.

Provides async create, execute, delete, and list operations for browser sessions.
    )AnyDictListLiteralOptional   )BrowserCreateResponseBrowserExecuteResponseBrowserDeleteResponseBrowserListResponse)AsyncHttpClientpayloadreturnc                 |    t        |       }d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   |S )NcdpUrlcdp_urlliveViewUrllive_view_url	expiresAt
expires_atdictr   outs     S/root/.hermes/venv/lib/python3.12/site-packages/firecrawl/v2/methods/aio/browser.py"_normalize_browser_create_responser      sg    
w-C39C/XIs :"=1Ocl#5,LJ    c                 D   t        |       }d|v rt        |d   t              r}g }|d   D ]n  }t        |      }d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   d|v rd	|vr|d   |d	<   d
|v rd|vr|d
   |d<   |j                  |       p ||d<   |S )Nsessionsr   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?#"$):")D(*?(;$%b \%;#%k?< #r(A&(&8?#&&r*	+ .JJr   N)ttlactivity_ttlr!   clientr-   r.   r!   c                   K   i }|||d<   |||d<   |||d<   | j                  d|       d{   }t        |j                               }t        di |S 7 (w)aY  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

    Returns:
        BrowserCreateResponse with session id and CDP URL
    Nr-   activityTtlr    /v2/browser )postr   jsonr	   )r/   r-   r.   r!   bodyrespr   s          r   browserr8   2   sq     $ D
U*]" /_]D11D0=G +7++ 2s   -AA)Ac                 <    t        |       }d|v rd|vr|d   |d<   |S )NexitCode	exit_coder   r   s     r   #_normalize_browser_execute_responser<   Q   s-    
w-CS[3z?KJr   c                 \    t        |       }d|v rd|vr|d   |d<   d|v rd|vr|d   |d<   |S )NsessionDurationMssession_duration_mscreditsBilledcredits_billedr   r   s     r   "_normalize_browser_delete_responserB   X   sQ    
w-Cc!&;3&F%()<%=!"#"2#"= #O 4Jr   bash)languagetimeout
session_idcoderD   )pythonnoderC   rE   c                   K   ||d}|||d<   | j                  d| d|       d{   }t        |j                               }t        di |S 7 (w)al  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
    )rG   rD   NrE   /v2/browser/z/executer3   )r4   r<   r5   r
   )r/   rF   rG   rD   rE   r6   r7   r   s           r   browser_executerL   a   sf     * D !Y|J<x@$GGD1$))+>G!,G,, Hs   &AA)Ac                    K   | j                  d|        d{   }t        |j                               }t        di |S 7 (w)zDelete a browser session.

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

    Returns:
        BrowserDeleteResponse
    rK   Nr3   )deleterB   r5   r   )r/   rF   r7   r   s       r   delete_browserrO      sC      j\:;;D0=G +7++ <s   AA)A)statusrP   )active	destroyedc                   K   d}|| d| }| j                  |       d{   }t        |j                               }t        di |S 7 (w)zList browser sessions.

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

    Returns:
        BrowserListResponse with list of sessions
    r2   Nz?status=r3   )getr,   r5   r   )r/   rP   endpointr7   r   s        r   list_browsersrV      sW      HZxx0H%%D.tyy{;G))) &s    AA)A)__doc__typingr   r   r   r   r   typesr	   r
   r   r   utils.http_client_asyncr   strr   r,   intboolr8   r<   rB   rL   rO   rV   r3   r   r   <module>r^      s   6 5  7S#X 4S> d38n c3h 0 "&&*,, 
#, 3-	,
 d^, ,>c3h DcN S#X 4S>  39!--- -
 ./- c]- -@,,, ,* 8<** W234* 	*r   