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          	      C   |   |t v rtddt| }i }|dur||d< |dur!||d< |dur)||d< |dur1||d< dd	i}| jd
|||d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   U/var/www/html/lang_env/lib/python3.10/site-packages/elasticsearch/_sync/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                C   s   |t v rtddt| }i }	|dur||	d< |dur!||	d< |dur)||	d< |dur1||	d< |dur9||	d< |durA||	d	< d
di}
| jd||	|
d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          	      C   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                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r4||d< |dur<||d	< |durD||d
< |durL||d< |durT||d< |	dur\|	|d< |
durd|
|d< |durl||d< |durt||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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   sj   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
   