
    Vh                         d dl mZmZmZ eZdZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d	d
dZ G d de      Zy)    )absolute_importdivisionprint_functiona  
---
author: Ansible Networking Team (@rcarrillocruz)
name: checkpoint
short_description: HttpApi Plugin for Checkpoint devices
description:
  - This HttpApi plugin provides methods to connect to Checkpoint
    devices over a HTTP(S)-based api.
version_added: "2.8.0"
options:
  domain:
    type: str
    description:
      - Specifies the domain of the Check Point device
    vars:
      - name: ansible_checkpoint_domain
  api_key:
    type: str
    description:
      - Login with api-key instead of user & password
    vars:
      - name: ansible_api_key
  cloud_mgmt_id:
    type: str
    description:
      - The Cloud Management ID
    vars:
      - name: ansible_cloud_mgmt_id
  target:
    type: str
    description:
      - target gateway
    vars:
      - name: ansible_checkpoint_target
N)to_text)AnsibleConnectionFailure)	HTTPError)HttpApiBase)ConnectionErrorzapplication/jsonAnsible)zContent-Typez
User-Agentc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	HttpApic                    i }| j                  d      }| j                  d      }|r||d<   |r|r|s||d<   ||d<   n|r
|s|s||d<   nt        d      d}| j                  ||      \  }}|dk7  rt        d	|z        	 d
|d   i| j                  _        d|j                         v r|d   | j                  _        y y # t        $ r t        d|z        w xY w)Ndomainapi_keyuserpasswordzapi-keyz9[Username and password] or api_key are required for loginz/web_api/login   zLogin to server failed: %s
X-chkp-sidsidzPServer returned response without token info during connection authentication: %suid)	
get_optionr   send_requestr
   
connection_authKeyErrorkeys_session_uid)	selfusernamer   payload	cp_domain
cp_api_keyurlresponseresponse_datas	            o/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/check_point/mgmt/plugins/httpapi/checkpoint.pyloginzHttpApi.login;   s   OOH-	__Y/
 )GH&GFO"*GJ!+GI*K  "&"3"3C"A-s?!">"NOO	%1=3G$HDOO! M&&((+8+?DOO( )  	!b 	s   ?B= =Cc                     t        | j                  j                   | j                  j                  xr d| j                  j                  vg      ry d}| j                  |d       \  }}y )Nr   z/web_api/logout)anyr   r   r   )r   r#   r$   dummys       r&   logoutzHttpApi.logoutY   s[    DOO)))DOO,A,A,olZ^ZiZiZoZoFoqr++C6%    c                 .    | j                   j                  S N)r   r   r   s    r&   get_session_uidzHttpApi.get_session_uid`   s    +++r,   c                 ~   | j                  d      }|rd|z   |z   }d|v r7| j                  d      r&|j                  dd      }| j                  d      |d<   |rt        j                  |      nd}	 | j	                          | j
                  j                  ||dt              \  }}| j                  |      }|j                         | j                  |      fS # t        $ r}d	|j                  fcY d }~S d }~wt        $ r;}t        j                  |j                               }	|j                   |	fcY d }~S d }~ww xY w)
Ncloud_mgmt_id/z	gaia_api/targetzweb_api/gaia-api/z{}POST)methodheadersi  )r   replacejsondumps_display_requestr   sendBASE_HEADERS_get_response_valuegetcode_response_to_jsonr   messager   loadsreadcode)
r   pathbody_paramscp_cloud_mgmt_iddatar$   r%   valueeerrors
             r&   r   zHttpApi.send_requestc   s   ???;))D0D$4??8#<<<-@AD$(OOH$=K!*5tzz+&4	!!!#&*oo&:&:d6< '; '#Hm ,,];E##%t'='=e'DDD' 	"		>! 	!JJqvvx(E665= 	!s1   1A'C 	D<"C5/D<5D<0D71D<7D<c                 p    | j                   j                  dddd| j                   j                         y )NvvvvzWeb Services: r5    )r   queue_message_urlr/   s    r&   r;   zHttpApi._display_requestz   s(    %%VT__5I5IJ	
r,   c                 4    t        |j                               S r.   )r   getvalue)r   r%   s     r&   r>   zHttpApi._get_response_value   s    }--/00r,   c                 l    	 |rt        j                  |      S i S # t        $ r t        d|z        w xY w)NzInvalid JSON response: %s)r9   rB   
ValueErrorr
   )r   response_texts     r&   r@   zHttpApi._response_to_json   s@    	O0=4::m,E2E 	O!"="MNN	Os     3N)
__name__
__module____qualname__r'   r+   r0   r   r;   r>   r@    r,   r&   r   r   :   s'    @<7,!.

1Or,   r   )
__future__r   r   r   type__metaclass__DOCUMENTATIONr9   ansible.module_utils.basicr   ansible.errorsr   +ansible.module_utils.six.moves.urllib.errorr   ansible.plugins.httpapir	   ansible.module_utils.connectionr
   r=   r   rY   r,   r&   <module>rc      sN    A @"H  . 3 A / ; 'MOk MOr,   