
    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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dddedededed   dee   de	fdZdeeef   deeef   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|
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                 |    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     O/root/.hermes/venv/lib/python3.12/site-packages/firecrawl/v2/methods/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                    i }|||d<   |||d<   |||d<   | j                  d|      }|j                  st        |d       t        |j	                               }t        di |S )aS  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

    Returns:
        BrowserCreateResponse with session id and CDP URL
    r.   activityTtlr!   /v2/browserzcreate browser session )postokr   r   jsonr	   )r0   r.   r/   r"   bodyrespr   s          r   browserr:   3   sw    $ D
U*]" /_;;}d+D77d$<=0=G +7++r   c                 <    t        |       }d|v rd|vr|d   |d<   |S )NexitCode	exit_coder   r   s     r   #_normalize_browser_execute_responser>   T   s-    
w-CS[3z?KJr   bash)languagetimeout
session_idcoder@   )pythonnoder?   rA   c                    ||d}|||d<   | j                  d| d|      }|j                  st        |d       t        |j	                               }t        di |S )af  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
    )rC   r@   rA   /v2/browser/z/executezexecute browser coder4   )r5   r6   r   r>   r7   r
   )r0   rB   rC   r@   rA   r8   r9   r   s           r   browser_executerH   [   sk    * D !Y;;j\:DAD77d$:;1$))+>G!,G,,r   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_responserN   }   sQ    
w-Cc!&;3&F%()<%=!"#"2#"= #O 4Jr   c                     | j                  d|       }|j                  st        |d       t        |j	                               }t        di |S )zDelete a browser session.

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

    Returns:
        BrowserDeleteResponse
    rG   zdelete browser sessionr4   )deleter6   r   rN   r7   r   )r0   rB   r9   r   s       r   delete_browserrQ      sI     ==<
|45D77d$<=0=G +7++r   )statusrR   )active	destroyedc                    d}|| d| }| j                  |      }|j                  st        |d       t        |j	                               }t        di |S )zList browser sessions.

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

    Returns:
        BrowserListResponse with list of sessions
    r3   z?status=zlist browser sessionsr4   )getr6   r   r-   r7   r   )r0   rR   endpointr9   r   s        r   list_browsersrX      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boolr:   r>   rH   rN   rQ   rX   r4   r   r   <module>ra      s   6 5  + 7S#X 4S> d38n c3h 0 "&&*,, 
#, 3-	,
 d^, ,Bc3h DcN  39!--- -
 ./- c]- -DS#X 4S> ,,, ,. 8<** W234* 	*r   