o
    gZh-                     @   sH   d dl Zd dlmZ ddlmZ ddlmZmZm	Z	 G dd deZ
dS )    N)ObjectApiResponse   )NamespacedClient)SKIP_IN_PATH_quote_rewrite_parametersc                2   @   sH  e Zd Ze ddddddedeje dejejeej	e f  deje deje de
ej fd	d
Ze ddddddddedeje dejejeej	e f  deje dejejddef  deje dejejddef  de
ej fddZe ddddddedeje dejejeej	e f  deje deje de
ej fddZeddddddddddddddddddddddddejeej	e f dedeje deje deje deje dejejej	ejdef  ejdef f  deje dejejejeejf ej	ejeejf  f  d ejejejeejf ej	ejeejf  f  dejejeej	e f  deje d!eje dejejddef  d"eje deje d#ejejd$ef  d%ejejeejeejf f  d&eje d'eje d(eje dejejddef  de
ej f.d)d*ZdS )+	EqlClientN)error_tracefilter_pathhumanprettyidr	   r
   r   r   returnc          	            |t v r	tddt| }i }|dur||d< |dur"||d< |dur*||d< |dur2||d< dd	i}| jd
|||dI dH S )u  
        Deletes an async EQL search by ID. If the search is still running, the search
        request will be cancelled. Otherwise, the saved search results are deleted.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/eql-search-api.html>`_

        :param id: Identifier for the search to delete. A search ID is provided in the
            EQL search API's response for an async search. A search ID is also provided
            if the request’s `keep_on_completion` parameter is `true`.
        %Empty value passed for parameter 'id'/_eql/search/Nr	   r
   r   r   acceptapplication/jsonDELETEparamsheadersr   
ValueErrorr   Zperform_request	selfr   r	   r
   r   r   _EqlClient__path_EqlClient__query_EqlClient__headers r   V/var/www/html/lang_env/lib/python3.10/site-packages/elasticsearch/_async/client/eql.pydelete   s"   zEqlClient.delete)r	   r
   r   
keep_aliver   wait_for_completion_timeoutr"   zt.Literal[-1]zt.Literal[0]r#   c                   s   |t v r	tddt| }i }	|dur||	d< |dur"||	d< |dur*||	d< |dur2||	d< |dur:||	d< |durB||	d	< d
di}
| jd||	|
dI dH S )u  
        Returns async results from previously executed Event Query Language (EQL) search

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/get-async-eql-search-api.html>`_

        :param id: Identifier for the search.
        :param keep_alive: Period for which the search and its results are stored on
            the cluster. Defaults to the keep_alive value set by the search’s EQL search
            API request.
        :param wait_for_completion_timeout: Timeout duration to wait for the request
            to finish. Defaults to no timeout, meaning the request waits for complete
            search results.
        r   r   Nr	   r
   r   r"   r   r#   r   r   GETr   r   )r   r   r	   r
   r   r"   r   r#   r   r   r   r   r   r    get@   s*   zEqlClient.getc          	         r   )a  
        Returns the status of a previously submitted async or stored Event Query Language
        (EQL) search

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/get-async-eql-status-api.html>`_

        :param id: Identifier for the search.
        r   z/_eql/search/status/Nr	   r
   r   r   r   r   r$   r   r   r   r   r   r    
get_statusp   s"   zEqlClient.get_statusT)Zbody_fields)allow_no_indicescase_sensitiver	   event_category_fieldexpand_wildcards
fetch_sizefieldsfilterr
   r   ignore_unavailabler"   keep_on_completionr   result_positionruntime_mappingssizetiebreaker_fieldtimestamp_fieldr#   indexqueryr'   r(   r)   r*   z4t.Literal['all', 'closed', 'hidden', 'none', 'open']r+   r,   r-   r.   r/   r0   zt.Literal['head', 'tail']r1   r2   r3   r4   c                   s  |t v r	td|du rtddt| d}i }i }|dur%||d< |dur-||d< |dur5||d< |dur=||d	< |durE||d
< |durM||d< |durU||d< |	dur]|	|d< |
dure|
|d< |durm||d< |duru||d< |dur}||d< |dur||d< |dur||d< |dur||d< |dur||d< |dur||d< |dur||d< |dur||d< |dur||d< |dur||d< ddd}| jd||||dI dH S )a  
        Returns results matching a query expressed in Event Query Language (EQL)

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/eql-search-api.html>`_

        :param index: The name of the index to scope the operation
        :param query: EQL query you wish to run.
        :param allow_no_indices:
        :param case_sensitive:
        :param event_category_field: Field containing the event classification, such
            as process, file, or network.
        :param expand_wildcards:
        :param fetch_size: Maximum number of events to search at a time for sequence
            queries.
        :param fields: Array of wildcard (*) patterns. The response returns values for
            field names matching these patterns in the fields property of each hit.
        :param filter: Query, written in Query DSL, used to filter the events on which
            the EQL query runs.
        :param ignore_unavailable: If true, missing or closed indices are not included
            in the response.
        :param keep_alive:
        :param keep_on_completion:
        :param result_position:
        :param runtime_mappings:
        :param size: For basic queries, the maximum number of matching events to return.
            Defaults to 10
        :param tiebreaker_field: Field used to sort hits with the same timestamp in ascending
            order
        :param timestamp_field: Field containing event timestamp. Default "@timestamp"
        :param wait_for_completion_timeout:
        z(Empty value passed for parameter 'index'Nz(Empty value passed for parameter 'query'/z/_eql/searchr6   r'   r(   r	   r)   r*   r+   r,   r-   r
   r   r.   r"   r/   r   r0   r1   r2   r3   r4   r#   r   )r   zcontent-typePOST)r   r   bodyr   )r   r5   r6   r'   r(   r	   r)   r*   r+   r,   r-   r
   r   r.   r"   r/   r   r0   r1   r2   r3   r4   r#   r   Z_EqlClient__bodyr   r   r   r   r    search   sl   I

zEqlClient.search)__name__
__module____qualname__r   strtOptionalboolUnionSequencer   Anyr!   r%   r&   intMappingr:   r   r   r   r    r      s&   $	/"	** !"#&r   )typingr?   Zelastic_transportr   _baser   utilsr   r   r   r   r   r   r   r    <module>   s
   