
    Vh                     l   d dl mZmZmZ eZd dlZd dlZd dlm	c m
c mc mc mZ d dlm
Z
 d dlmZ d dlmZ d dlmZmZmZmZ ej2                  dk\  rd dlZej6                  rd dlmZ  G d	 d
e      Z e
j@                  ejB                         G d de"             Z# G d de#      Z$ G d de#      Z%y)    )absolute_importdivisionprint_functionN)six)	to_native)PY3)ConnectionError
NoSSLError	fetch_urlopen_url)      )AnsibleModulec                       e Zd Zy)NetworkErrorN)__name__
__module____qualname__     k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/dns/plugins/module_utils/http.pyr   r      s    r   r   c                   :    e Zd Zej                  	 	 	 	 dd       Zy)
HTTPHelperNc                      y)z
        Execute a HTTP request and return a tuple (response_content, info).

        In case of errors, either raise NetworkError or terminate the program (for modules only!).
        Nr   )selfurlmethodheadersdatatimeouts         r   r   zHTTPHelper.fetch_url$   s    r   GETNNN)r   r   r   abcabstractmethodr   r   r   r   r   r   "   s(      r   r   c                   "    e Zd Zd Z	 	 	 	 ddZy)ModuleHTTPHelperc                     || _         y )N)module)r   r(   s     r   __init__zModuleHTTPHelper.__init__5   s     r   Nc                     t        | j                  |||||      \  }}	 t        r|j                  rt        |j                         }||fS # t        t        f$ r |j                  dd       }Y ||fS w xY w)Nr   r   r   r    body)r   r(   r   closed	TypeErrorreadAttributeErrorpop)	r   r   r   r   r   r    responseinfocontents	            r   r   zModuleHTTPHelper.fetch_url;   s~     #4;;FGZ^hop$	- xmmoG } 	* 	-hhvt,G}	-s   (A !A32A3r!   )r   r   r   r)   r   r   r   r   r&   r&   4   s     r   r&   c                       e Zd Z	 	 	 	 ddZy)OpenURLHelperNc           	         i }	 t        |||||      }|j                         }|j                  |j                         j	                         D 	
ci c]  \  }	}
|	j                         |
 c}
}	       |j                  |d<   |j                         |d<   |j                          ||fS c c}
}	w # t        j                  $ r}	 |j                         }n# t        $ r d}Y nw xY w	 |j                  |j                         j	                         D 	
ci c]  \  }	}
|	j                         |
 nc c}
}	w c}
}	       n# t        $ r Y nw xY w|j                  |d<   Y d }~||fS d }~wt        $ r(}t        dj                  t!        |                  d }~wt"        t$        f$ r(}t        dj                  t!        |                  d }~ww xY w)Nr+   statusr    zCannot connect via SSL: {0}zConnection error: {0})r   r/   updater3   itemslowercodegeturlcloseurllib_error	HTTPErrorr0   	Exceptionr
   r   formatr   r	   
ValueError)r   r   r   r   r   r    r3   reqresultkves               r   r   zOpenURLHelper.fetch_urlP   s    	M3vwTSZ[CXXZFKK#((*2B2B2DE$!QAEF XXDN**,DKIIK  t|' F %% 		$! affhnn6FGdaQWWY\GGH VVDN t|  	S<CCIaLQRR, 	M6==ilKLL	Ms   AB/ B)
+:B/ )B/ /GCE#C"E#!C""E#&,D=D.-D=<E#=	E	E#E		E##G/#FG$#GGr!   )r   r   r   r   r   r   r   r6   r6   O   s     r   r6   )&
__future__r   r   r   type__metaclass__r#   sys+ansible.module_utils.six.moves.urllib.errormodule_utilsr   movesurlliberrorr@   ansible.module_utils+ansible.module_utils.common.text.convertersr   ansible.module_utils.sixr   ansible.module_utils.urlsr	   r
   r   r   version_infotypingTYPE_CHECKINGansible.module_utils.basicr   rB   r   add_metaclassABCMetaobjectr   r&   r6   r   r   r   <module>r^      s    A @   
 B B B $ A ( V V v<	9 	 3;;   "z 6 J  r   