a
    &h%                     @   sH   d Z ddlZG dd dZG dd dZG dd dZG d	d
 d
ZdS )zThe Proxy implementation.    Nc                   @   s   e Zd ZdZedd ZdS )ProxyTypeFactoryzFactory for proxy types.c                 C   s
   | |dS )NZff_valuestring r   r   r   d/var/www/html/swiplay.fr/scambot/venv/lib/python3.9/site-packages/selenium/webdriver/common/proxy.pymake   s    zProxyTypeFactory.makeN)__name__
__module____qualname____doc__staticmethodr   r   r   r   r   r      s   r   c                   @   sp   e Zd ZdZeddZeddZeddZedd	Z	ed
dZ
eddZeddZedd ZdS )	ProxyTypezSet of possible types of proxy.

    Each proxy type has 2 properties: 'ff_value' is value of Firefox
    profile preference, 'string' is id of proxy type.
    r   DIRECT   MANUAL   PAC   Z	RESERVED1   
AUTODETECT   SYSTEM   UNSPECIFIEDc                 C   sv   t |trd|v r|d }t| }t| D ]4}t| |}t |tr.d|v r.|d |kr.|  S q.td| d S )Nr   zNo proxy type is found for )
isinstancedictstrupperdirgetattr	Exception)clsvalueattr
attr_valuer   r   r   load.   s    

zProxyType.loadN)r   r	   r
   r   r   r   r   r   r   Z
RESERVED_1r   r   r   classmethodr%   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_ProxyTypeDescriptorc                 C   s   || _ || _d S N)namep_type)selfr)   r*   r   r   r   __init__;   s    z_ProxyTypeDescriptor.__init__c                 C   s   t || jS r(   )r   r)   )r+   objr!   r   r   r   __get__?   s    z_ProxyTypeDescriptor.__get__c                 C   sf   | j dkrt|tstd| j dkr6tjdtdd t|d| j t	|d| j t	|| j | d S )	N
autodetectz,Autodetect proxy value needs to be a booleanftpProxy8ftpProxy is deprecated and will be removed in the futurer   
stacklevel _verify_proxy_type_compatibility	proxyType)
r)   r   bool
ValueErrorwarningswarnDeprecationWarningr   r*   setattr)r+   r-   r"   r   r   r   __set__B   s    
z_ProxyTypeDescriptor.__set__N)r   r	   r
   r,   r.   r<   r   r   r   r   r'   :   s   r'   c                   @   s   e Zd ZdZejZdZdZdZ	dZ
dZdZdZdZdZdZedejZedejZedejZedejZed	ejZed
ejZedejZedejZedejZedejZdddZe dd Z!e!j"ddddZ!dd Z#dd Z$dS )ProxyzMProxy contains information about proxy type and necessary proxy
    settings.F Nr/   r0   	httpProxynoProxyproxyAutoconfigUrlsslProxy
socksProxysocksUsernamesocksPasswordsocksVersionc                 C   sJ  |rFd|v r&|d r&t |d | _d|v rP|d rPtjdtdd |d | _d|v rj|d rj|d | _d|v r|d r|d | _d|v r|d r|d | _	d	|v r|d	 r|d	 | _
d
|v r|d
 r|d
 | _d|v r|d r|d | _d|v r
|d r
|d | _d|v r(|d r(|d | _d|v rF|d rF|d | _dS )zuCreates a new Proxy.

        :Args:
         - raw: raw proxy data. If None, default class values are used.
        r5   r0   r1   r   r2   r?   r@   rA   rB   r/   rC   rD   rE   rF   N)r   r%   
proxy_typer8   r9   r:   	ftp_proxy
http_proxyno_proxyproxy_autoconfig_urlrB   auto_detectsocks_proxysocks_usernamesocks_passwordsocks_version)r+   rawr   r   r   r,      s8    








zProxy.__init__c                 C   s   | j S )z"Returns proxy type as `ProxyType`.)r5   )r+   r   r   r   rG     s    zProxy.proxy_type)returnc                 C   s   |  | || _dS )zKSets proxy type.

        :Args:
         - value: The proxy type.
        N)r4   r5   )r+   r"   r   r   r   rG   $  s    
c                 C   s,   | j tj|fvr(td| d| j  dd S )NzSpecified proxy type (z') not compatible with current setting ())r5   r   r   r7   )r+   Zcompatible_proxyr   r   r   r4   .  s    z&Proxy._verify_proxy_type_compatibilityc                 C   s>   d| j d  i}g d}|D ]}t| |}|r|||< q|S )Nr5   r   )
r/   r0   r?   rA   rB   r@   rC   rD   rE   rF   )r5   lowerr   )r+   Z
proxy_capsproxiesproxyr$   r   r   r   to_capabilities4  s    

zProxy.to_capabilities)N)%r   r	   r
   r   r   r   r5   r/   r0   r?   r@   rA   rB   rC   rD   rE   rF   r'   r   rL   r   rH   rI   rJ   r   rK   Z	ssl_proxyrM   rN   rO   rP   r,   propertyrG   setterr4   rW   r   r   r   r   r=   R   s:   
%
	r=   )r   r8   r   r   r'   r=   r   r   r   r   <module>   s
   