o
    gZh1                     @   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                   @   s  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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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ejej	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iddddddddddeje dejejeej	e f  deje deje deje 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edejeejf dej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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#h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eejf  deje de
ej fd&d'ZdS )(SearchApplicationClientN)error_tracefilter_pathhumanprettynamer	   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 )z
        Deletes a search application.

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

        :param name: The name of the search application to delete
        'Empty value passed for parameter 'name'!/_application/search_application/Nr	   r
   r   r   acceptapplication/jsonDELETEparamsheadersr   
ValueErrorr   perform_request	selfr   r	   r
   r   r   _SearchApplicationClient__path_SearchApplicationClient__query!_SearchApplicationClient__headers r    d/var/www/html/lang_env/lib/python3.10/site-packages/elasticsearch/_sync/client/search_application.pydelete       zSearchApplicationClient.deletec          	      C   r   )z
        Delete a behavioral analytics collection.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/delete-analytics-collection.html>`_

        :param name: The name of the analytics collection to be deleted
        r   /_application/analytics/Nr	   r
   r   r   r   r   r   r   r   r   r    r    r!   delete_behavioral_analytics=   r#   z3SearchApplicationClient.delete_behavioral_analyticsc          	      C   r   )z
        Returns the details about a search application.

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

        :param name: The name of the search application
        r   r   Nr	   r
   r   r   r   r   GETr   r   r   r    r    r!   get_   r#   zSearchApplicationClient.get)r   r	   r
   r   r   c          	      C   sz   |t vrdt| }nd}i }|dur||d< |dur ||d< |dur(||d< |dur0||d< dd	i}| jd
|||dS )a
  
        Returns the existing behavioral analytics collections.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/list-analytics-collection.html>`_

        :param name: A list of analytics collections to limit the returned information
        r$   z/_application/analyticsNr	   r
   r   r   r   r   r&   r   )r   r   r   r   r    r    r!   get_behavioral_analytics   s    z0SearchApplicationClient.get_behavioral_analyticsfromfrom_)Zparameter_aliases)r	   r
   r*   r   r   qsizer+   r,   c                C   s   d}i }	|dur||	d< |dur||	d< |dur||	d< |dur$||	d< |dur,||	d< |dur4||	d< |dur<||	d	< d
di}
| j d||	|
dS )aF  
        Returns the existing search applications.

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

        :param from_: Starting offset.
        :param q: Query in the Lucene query string syntax.
        :param size: Specifies a max number of results to get.
        z /_application/search_applicationNr	   r
   r)   r   r   r+   r,   r   r   r&   r   )r   )r   r	   r
   r*   r   r   r+   r,   r   r   r   r    r    r!   list   s(   zSearchApplicationClient.listsearch_application)Z	body_name)creater	   r
   r   r   r/   c                C   s   |t v rtd|du rtddt| }i }	|dur!||	d< |dur)||	d< |dur1||	d< |dur9||	d< |durA||	d	< |}
d
d
d}| jd||	||
dS )a  
        Creates or updates a search application.

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

        :param name: The name of the search application to be created or updated.
        :param search_application:
        :param create: If `true`, this request cannot replace or update existing Search
            Applications.
        r   Nz5Empty value passed for parameter 'search_application'r   r/   r	   r
   r   r   r   )r   content-typePUTr   r   bodyr   )r   r   r.   r/   r	   r
   r   r   r   r   _SearchApplicationClient__bodyr   r    r    r!   put   s*   

zSearchApplicationClient.putc          	      C   r   )z
        Creates a behavioral analytics collection.

        `<https://www.elastic.co/guide/en/elasticsearch/reference/8.11/put-analytics-collection.html>`_

        :param name: The name of the analytics collection to be created or updated.
        r   r$   Nr	   r
   r   r   r   r   r1   r   r   r   r    r    r!   put_behavioral_analytics   r#   z0SearchApplicationClient.put_behavioral_analyticsTr   )Zbody_fieldsZignore_deprecated_options)r	   r
   r   r   r   c                C   s   |t v rtddt| d}i }i }	|dur||d< |dur$||d< |dur,||d< |dur4||	d< |dur<||d	< |	s@d}	d
di}
|	durLd|
d< | jd|||
|	dS )a|  
        Perform a search against a search application

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

        :param name: The name of the search application to be searched.
        :param params: Query parameters specific to this request, which will override
            any defaults specified in the template.
        r   r   z/_searchNr	   r
   r   r   r   r   r   r0   POSTr2   r   )r   r   r	   r
   r   r   r   r   r   r4   r   r    r    r!   search   s.   
zSearchApplicationClient.search)__name__
__module____qualname__r   strtOptionalboolUnionSequencer   Anyr"   r%   r'   r(   intr-   Mappingr5   r6   r8   r    r    r    r!   r      sP   !!!"	
)	
+!	r   )typingr=   Zelastic_transportr   _baser   utilsr   r   r   r   r    r    r    r!   <module>   s
   